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

mustafa

Altın Üye
Katılım
8 Eylül 2004
Mesajlar
224
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14-01-2026
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:
Katılım
11 Temmuz 2024
Mesajlar
234
Excel Vers. ve Dili
Excel 2021 Türkçe
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
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,496
Excel Vers. ve Dili
Ofis 365 Türkçe
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)
 

mustafa

Altın Üye
Katılım
8 Eylül 2004
Mesajlar
224
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14-01-2026
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
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,496
Excel Vers. ve Dili
Ofis 365 Türkçe
Ü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
 

mustafa

Altın Üye
Katılım
8 Eylül 2004
Mesajlar
224
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14-01-2026
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.
 

mustafa

Altın Üye
Katılım
8 Eylül 2004
Mesajlar
224
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14-01-2026
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.
 

mustafa

Altın Üye
Katılım
8 Eylül 2004
Mesajlar
224
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14-01-2026
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.
 
Katılım
11 Temmuz 2024
Mesajlar
234
Excel Vers. ve Dili
Excel 2021 Türkçe
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)
 

mustafa

Altın Üye
Katılım
8 Eylül 2004
Mesajlar
224
Excel Vers. ve Dili
Excel 365 - Türkçe
Altın Üyelik Bitiş Tarihi
14-01-2026
Ş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)
 
Üst