• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru Aynı hücrede çıkarma, bölme ve toplama yapmak

  • Konbuyu başlatan Konbuyu başlatan mustafa
  • Başlangıç tarihi Başlangıç tarihi

mustafa

Altın Üye
Katılım
8 Eylül 2004
Mesajlar
245
Excel Vers. ve Dili
Excel 365 - Türkçe
Merhabalar,

Ekteki örnek dosyamda H sütunundaki sayıdan G sütunundaki değeri (G sütunundaki sayı - değer ise doğal sayıya çevrilmeli) çıkarıp kalan sayıyı 8'bölüp G sütunundaki sayı artı ise çıkan sonuçtan 1 çıkarılacak, G sütunundaki sayı - ise çıkan sonuca 1 eklenecek. Bunu ancak 3 hücrede (J-K-L) yapabiliyorum. Bana L hücresindeki sayılar lazım.

Sorum şu; 3 hücrede yapabildiğim bu işlem tek bir formülle yapılabilir mi?

Eğer yapılabilirse bunu aşağıdaki vba koduna eklemem gerek.

Kod:
If sut = 8 Then
                    Union(Cells(sat, 20), Cells(sat, 26), Cells(sat, 32)).ClearContents
                    If Cells(sat, 8) <> Empty Then
                        Cells(sat, 20) = Round(Cells(sat, 8) / 4, 0)
                        If Cells(sat, 7) < 0 Then
                            Cells(sat, 26) = Round(Cells(sat, 8) / 8, 0) + 1
                            Cells(sat, 32) = Round(Cells(sat, 8) / 8, 0) - 1
                        Else
                            Cells(sat, 26) = Round(Cells(sat, 8) / 8, 0) - 1
                            Cells(sat, 32) = Round(Cells(sat, 8) / 8, 0) + 1
                        End If
                    End If
                End If
 

Ekli dosyalar

Son düzenleme:
Merhaba,
G sütunu Pozitif ise 1 eklenecek, Negatif isi 1 Eklenecek diye açıklamanız var, ama formülünüzün sonucuna bakalırsa sanki tersi yapılıyor gibi.

Kod:
=YUVARLA((H6-MUTLAK(G6))/8;0)+EĞER(G6>0;-1;1)
 
Merhaba,
G sütunu Pozitif ise 1 eklenecek, Negatif isi 1 Eklenecek diye açıklamanız var, ama formülünüzün sonucuna bakalırsa sanki tersi yapılıyor gibi.

Kod:
=YUVARLA((H6-MUTLAK(G6))/8;0)+EĞER(G6>0;-1;1)

Üstat haklısınız gözümden kaçmış, doğrusu şöyle olacak;

G sütunundaki sayı artı ise çıkan sonuçtan 1 çıkarılacak, G sütunundaki sayı - ise çıkan sonuca 1 eklenecek
 
Üstat haklısınız gözümden kaçmış, doğrusu şöyle olacak;
Ben de çözümden gidip formülü ona göre vermiştim. Fakat siz aslında makro istiyormuşsunuz.

Aşağıdaki kodu kendinize uyarlayınız.

Kod:
Sub Deneme()

Dim i   As Long

For i = 6 To Cells(Rows.Count, "G").End(3).Row
     Cells(i, "L") = Round((Cells(i, "H") - Abs(Cells(i, "G"))) / 8, 0) + IIf(Cells(i, "G") > 0, -1, 1)
Next i

End Sub
 
Merhaba;

Kod:
If sut = 8 Then
    Union(Cells(sat, 20), Cells(sat, 26), Cells(sat, 32)).ClearContents
    If Cells(sat, 8) <> Empty Then
        Cells(sat, 20) = Round(Cells(sat, 8) / 4, 0)
        If Cells(sat, 7) < 0 Then
            Cells(sat, 26) = Round((Cells(sat, 8) - Cells(sat, 7)) / 8, 0) + 1
            Cells(sat, 32) = Round((Cells(sat, 8) - Cells(sat, 7)) / 8, 0) - 1
        Else
            Cells(sat, 26) = Round((Cells(sat, 8) - Cells(sat, 7)) / 8, 0) - 1
            Cells(sat, 32) = Round((Cells(sat, 8) - Cells(sat, 7)) / 8, 0) + 1
        End If
    End If
End If

Cevap için teşekkür ederim fakat sonucu bir türlü doğru çıkaramıyorum, 1 sayı fazla çıkıyor.
 
Ben de çözümden gidip formülü ona göre vermiştim. Fakat siz aslında makro istiyormuşsunuz.

Aşağıdaki kodu kendinize uyarlayınız.

Kod:
Sub Deneme()

Dim i   As Long

For i = 6 To Cells(Rows.Count, "G").End(3).Row
     Cells(i, "L") = Round((Cells(i, "H") - Abs(Cells(i, "G"))) / 8, 0) + IIf(Cells(i, "G") > 0, -1, 1)
Next i

End Sub

Üstat sizin verdiğiniz kodu benim koda şu şekilde ekleyince sorun kalmadı;

Kod:
''''Ortalama Hesapları
                If sut = 8 Then
                    Union(Cells(sat, 20), Cells(sat, 26), Cells(sat, 32)).ClearContents
                    If Cells(sat, 8) <> Empty Then
                        Cells(sat, 20) = Round(Cells(sat, 8) / 4, 0)
                        If Cells(sat, 7) < 0 Then
                            Cells(sat, 26) = Round((Cells(sat, 8) - Abs(Cells(sat, 7))) / 8, 0) + IIf(Cells(sat, 7) > 0, -1, 1)
                            Cells(sat, 32) = Round((Cells(sat, 8) - Abs(Cells(sat, 7))) / 8, 0) + IIf(Cells(sat, 7) > 0, 1, -1)
                        Else
                            Cells(sat, 26) = Round((Cells(sat, 8) - Abs(Cells(sat, 7))) / 8, 0) + IIf(Cells(sat, 7) > 0, -1, 1)
                            Cells(sat, 32) = Round((Cells(sat, 8) - Abs(Cells(sat, 7))) / 8, 0) + IIf(Cells(sat, 7) > 0, 1, -1)
                        End If
                    End If
                End If

Akşam biraz daha deneme yapacağım, umarım sorun kalmadığı konusunda yanılmıyorumdur.

İkinize de çok teşekkür ederim, sağolun varolun.
 
Konu ile ilgili ilginç bir durum ortaya çıktığı için ve işin içinden çıkamadığım için sormak zorundayım.

Kod:
=YUVARLA((H6-MUTLAK(G6))/8;0)+EĞER(G6>0;-1;1)

Yukarıdaki formül ile sonuç doğru çıkıyor ama aşağıdaki kodda 1 sayı eksik çıkıyor.

Kod:
Cells(sat, 26) = Round((Cells(sat, 8) - Abs(Cells(sat, 7))) / 8, 0) + IIf(Cells(sat, 7) > 0, -1, 1)

RoundUp yaparak yukarı yuvarla yapayım dedim ama hata verdi. Mantık aynı olmasına rağmen formül doğru sonuç verirken kod neden eksik veriyor anlayamadım.

Bu koda yukarı yuvarla nasıl eklerim, belki böylece sorun kalmaz.
 
Şu şekilde deneyebilir misiniz;

Kod:
Cells(sat, 26) = Application.WorksheetFunction.RoundUp((Cells(sat, 8) - Abs(Cells(sat, 7))) / 8, 0) + IIf(Cells(sat, 7) > 0, -1, 1)

Cevap için teşekkür ederim, kodu şöyle değiştirince sorun düzeldi.

Kod:
Cells(sat, 26) = Application.WorksheetFunction.Round((Cells(sat, 8) - Abs(Cells(sat, 7))) / 8, 0) + IIf(Cells(sat, 7) > 0, -1, 1)
 
Geri
Üst