• DİKKAT

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

tek-çift sayıların rakamları toplamı

Katılım
27 Ağustos 2020
Mesajlar
10
Excel Vers. ve Dili
office 2019
selamlar. excel kullanmayı pek bilmiyorum, çalışmam için tek-çift sayıların rakamları toplamını bana verecek formül gerekli.

örneğin:

15 sayısı tek. 1+5
18 sayısı çift. 1+8 gibi ama bunlar ayrı ayrı lazım. bu konuda bana yardımcı olursanız sevinirim.
 
Veriler A sütununda.
Kod:
Sub cifttek_59()
Dim sonsat As Long, i As Long, cift As Long, tek As Long
sonsat = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To sonsat
    If i Mod 2 = 0 Then cift = cift + Cells(i, "A").Value
    If i Mod 2 <> 0 Then tek = tek + Cells(i, "A").Value
Next
MsgBox "tek : " & tek & vbLf & "Çift : " & cift
End Sub
 
Veriler A sütununda.
Kod:
Sub cifttek_59()
Dim sonsat As Long, i As Long, cift As Long, tek As Long
sonsat = Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To sonsat
    If i Mod 2 = 0 Then cift = cift + Cells(i, "A").Value
    If i Mod 2 <> 0 Then tek = tek + Cells(i, "A").Value
Next
MsgBox "tek : " & tek & vbLf & "Çift : " & cift
End Sub
hocam bana c6-d17 arası veriler için lazım bu kod sadece a sütunu için mi çalışıyor?
 
hocam bana c6-d17 arası veriler için lazım bu kod sadece a sütunu için mi çalışıyor?
Buyurun.:cool:
Kod:
Sub cifttek_59()
Dim cift As Long, tek As Long, hcr As Range
sonsat = Cells(Rows.Count, "A").End(xlUp).Row
For Each hcr In Range("c6:d17")
    If hcr.Value = "" Then GoTo atla
        If hcr.Value Mod 2 = 0 Then cift = cift + hcr.Value
        If hcr.Value Mod 2 <> 0 Then tek = tek + hcr.Value
atla:
Next
MsgBox "tek : " & tek & vbLf & "Çift : " & cift
End Sub
 
Buyurun.:cool:
Kod:
Sub cifttek_59()
Dim cift As Long, tek As Long, hcr As Range
sonsat = Cells(Rows.Count, "A").End(xlUp).Row
For Each hcr In Range("c6:d17")
    If hcr.Value = "" Then GoTo atla
        If hcr.Value Mod 2 = 0 Then cift = cift + hcr.Value
        If hcr.Value Mod 2 <> 0 Then tek = tek + hcr.Value
atla:
Next
MsgBox "tek : " & tek & vbLf & "Çift : " & cift
End Sub
çok teşekkür ederim bide nasıl çalıştıracağımı söylerseniz rica etsem :)
 
hocam çalıştırdım sağolun. ama burada sadece tek ve çift sayıların toplamını veriyor halbuki bana ondalık olarak toplamları lazım. yani 15 + 5 değil 1+5+5
 
Alternatif olarak aşağıdaki kullanıcı tanımlı fonksiyonu kullanabilirsiniz.

Hücrede kullanım şekli;

C++:
=BASAMAK_TOPLA(C6:D17;0) 'Tek sayıların basamaklarını toplar.
=BASAMAK_TOPLA(C6:D17;1) 'Çift sayıların basamaklarını toplar.
=BASAMAK_TOPLA(C6:D17) 'Çift sayıların basamaklarını toplar.

C++:
Option Explicit

Function BASAMAK_TOPLA(Alan As Range, Optional Kriter As Boolean = True)
    Dim Veri As Range, X As Byte, Topla_A As Long, Topla_B As Long
   
    Application.Volatile True
   
    For Each Veri In Alan
        If Veri.Value Mod 2 = 0 Then
            For X = 1 To Len(Veri.Value)
                Topla_A = Topla_A + Mid(Veri.Value, X, 1)
            Next
        Else
            For X = 1 To Len(Veri.Value)
                Topla_B = Topla_B + Mid(Veri.Value, X, 1)
            Next
        End If
    Next
   
    BASAMAK_TOPLA = IIf(Kriter = True, Topla_A, Topla_B)
End Function
 
Alternatif olarak aşağıdaki kullanıcı tanımlı fonksiyonu kullanabilirsiniz.

Hücrede kullanım şekli;

C++:
=BASAMAK_TOPLA(C6:D17;0) 'Tek sayıların basamaklarını toplar.
=BASAMAK_TOPLA(C6:D17;1) 'Çift sayıların basamaklarını toplar.
=BASAMAK_TOPLA(C6:D17) 'Çift sayıların basamaklarını toplar.

C++:
Option Explicit

Function BASAMAK_TOPLA(Alan As Range, Optional Kriter As Boolean = True)
    Dim Veri As Range, X As Byte, Topla_A As Long, Topla_B As Long
  
    Application.Volatile True
  
    For Each Veri In Alan
        If Veri.Value Mod 2 = 0 Then
            For X = 1 To Len(Veri.Value)
                Topla_A = Topla_A + Mid(Veri.Value, X, 1)
            Next
        Else
            For X = 1 To Len(Veri.Value)
                Topla_B = Topla_B + Mid(Veri.Value, X, 1)
            Next
        End If
    Next
  
    BASAMAK_TOPLA = IIf(Kriter = True, Topla_A, Topla_B)
End Function
Çok, çok sağolun
 
Geri
Üst