• DİKKAT

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

Mid(Deger, 1, 1) değerini sayısal toplamak

Katılım
11 Aralık 2005
Mesajlar
14
Dim Deger, A, B, C

Deger = Range("D13")

A = Mid(Deger, 1, 1)
B = Mid(Deger, 2, 1)
C = Mid(Deger, 3, 1)

Range("D16").Value = A + B + C
----------


D13 Değeri sayısal bir değer

D16 hücresine seçilen rakamların toplamını yazdırmak istiyorum. ama Range("D16").Value = A + B + C sonucu 234 olarak çıkıyor ma 2+3+4 = 9 olması gerekior..
 
Sorun değerlerin metin olarak algılanmasından kaynaklanıyor. Aşağıdaki gibi deneyin.

HTML:
range("d16")=val(A)+val(B)+val(C)
 
sub deneme()
Dim Deger, A, B, C

Deger = Range("D13")

A = Mid(Deger, 1, 1)
B = Mid(Deger, 2, 1)
C = Mid(Deger, 3, 1)

Range("D16").Value = A.value*1 + B.value*1 + C.value*1
End Sub
 
evet biraz uğraştım yapamadım, hücere değeri 123456 varsayayım, bu hücredeki tek sayıları ve çift sayıları ayrı ayrı hesplatma k istiyorum
 
Function DigitTopla(Sayı)
Dim i As Integer
For i = 1 To Len(Sayı)
DigitTopla = DigitTopla + Val(Mid(Sayı, i, 1))
Next i
End Function


KTF olarak çözüm.
=DigitTopla(D13) olarak kullanın.
 
Dim DigitTopla
Dim number
Dim i As Integer
number = Range("D13")
For i = 1 To Len(number)
DigitTopla = DigitTopla + Val(Mid(number, i, 1))
Next i
Range("D17").Value = DigitTopla
End Sub


BU SEKİLDE YAPTIM AMA RAKAMLARIN tamamını topluyor

D13 hücresindeki 123456 sayısındaki tek sayıların toplamını D17 ye çift sayıların toplamını da D18 e yazdırmak istiyorum
 
Şöyle deneyin,

Sub topla()
number = Range("D13")
For i = 1 To Len(number) Step 2
TekTopla = TekTopla + Val(Mid(number, i, 1))
CiftTopla = CiftTopla + Val(Mid(number, i + 1, 1))
Next i
Range("D17").Value = TekTopla
Range("D18").Value = CiftTopla
End Sub
 
olmadı


Sub Makro2()
'
' Makro2 Makro
' Makro Hakan tarafından 17.08.2006 tarihinde kaydedildi.
'
Function DigitTopla(Sayı)
Dim i As Integer
For i = 1 To Len(Sayı)
DigitTopla = DigitTopla + Val(Mid(Sayı, i, 1))
Next i
Range("D17").Value = DigitTopla(D13)
End Function

'
End Sub





Sub Makro2() burda hata veriyor
 
Sub topla()
number = Range("D13")
For i = 1 To Len(number) Step 2
TekTopla = TekTopla + Val(Mid(number, i, 1))
CiftTopla = CiftTopla + Val(Mid(number, i + 1, 1))
Next i
Range("D17").Value = TekTopla
Range("D18").Value = CiftTopla
End Sub



bununla 11223344 ü hesaplattığımda

tek:10
çift:10 çıkıyor
 
Koda bakarsanız step2. Yani 1,3,5,7 ve 2,4,6,8. karakterleri topluyor. Sonucun aynı çıkması normal
 
veyselemre'nin kodları uygun değil,

tam olarak yapmak istediğim 869052612512 saysındaki
çiftsayılar = 8+6+0+2+6+2+2
teksaılar = 9+5+1+5+1

toplamlarını almak...

bu ne işe yarayacak sorusuna cevap olarak, barkod hesaplama yani checkdigit
tam olarak şunu yapmak istiyorum

869052612512 = 12 basamaklı sayı
çift sayıların toplamı 8+6+0+2+6+2+2=26
tek sayıların toplamı 9+5+1+5+1 = 21

formül

3*çift sayılar + tek sayılar = 78+21 = 99

99 MOD 10 = 9

10 - 9 = 1

son durum
8690526125121
 
Son düzenleme:
Sorunuzu son mesajınızdaki gibi açıklasaydınız böyle uğraşmazdınız.
Kod:
Function checkdigitbul(bul)
For x = 1 To Len(bul)
    al = Val(Mid(bul, x, 1))
    If (-1) ^ al > 0 Then
        toplam = toplam + (3 * al)
    Else
        toplam = toplam + al
    End If
Next x
checkdigitbul = 10 - (toplam Mod 10)
End Function
 
Son düzenleme:
Sn. veyselemre bu konu üzerine bütün gün uğraştım bende. Sizin kodunuz denediğimde sürekli olarak 10 değerini döndürüyor.
 
Konu anlaşılmıştır. Teşekkürler.
 
Son düzenleme:
veyselemre'nin kodları uygun değil,

tam olarak yapmak istediğim 869052612512 saysındaki
çiftsayılar = 8+6+0+2+6+2+2
teksaılar = 9+5+1+5+1

toplamlarını almak...

bu ne işe yarayacak sorusuna cevap olarak, barkod hesaplama yani checkdigit
tam olarak şunu yapmak istiyorum

869052612512 = 12 basamaklı sayı
çift sayıların toplamı 8+6+0+2+6+2+2=26
tek sayıların toplamı 9+5+1+5+1 = 21

formül

3*çift sayılar + tek sayılar = 78+21 = 99

99 MOD 10 = 9

10 - 9 = 1

son durum
8690526125121

Sayın namerup,
Aşağıdaki linkte bulunan dökümanda check digit hesaplaması sizin anlattığınız gibi gözükmüyor, 13.sayfadan itibaren tekrar inceleyin isterseniz. http://www.umut.org/bos/pdf/barkod_nedir.pdf#search="barkod checkdigit"

Bu durumda aşağıdaki fonksiyonları kullanarak, Ean8 veya Ean13 sistemindeki barkodların check digit rakamını hesaplayıp ekleyebilirsiniz.

Kod:
Function ean8checkdigitbulekle(bul)
If Len(bul) <> 7 Then
    ean8checkdigitbulekle = "hata"
    Exit Function
End If
For x = 1 To 5 Step 2
    toplam = toplam + Mid(bul, x, 1) * 3 + Mid(bul, x + 1, 1)
Next
    toplam = toplam + Mid(bul, 7, 1) * 3

check = (10 - (toplam Mod 10)) Mod 10
ean8checkdigitbulekle = bul & check
End Function

Function ean13checkdigitbulekle(bul)
If Len(bul) <> 12 Then
    ean13checkdigitbulekle = "hata"
    Exit Function
End If
For x = 1 To 11 Step 2
    toplam = toplam + Mid(bul, x, 1) + Mid(bul, x + 1, 1) * 3
Next
check = (10 - (toplam Mod 10)) Mod 10
ean13checkdigitbulekle = bul & check
End Function

Kullan&#305;m&#305;,
=ean13checkdigitbulekle(270426413650)
=ean13checkdigitbulekle(504401600001)
=ean8checkdigitbulekle(4032957)
=ean8checkdigitbulekle(4015181)
 
Son düzenleme:
Sayın namerup,
Aşağıdaki linkte bulunan dökümanda check digit hesaplaması sizin anlattığınız gibi gözükmüyor, 13.sayfadan itibaren tekrar inceleyin isterseniz. http://www.umut.org/bos/pdf/barkod_nedir.pdf#search="barkod checkdigit"

Bu durumda aşağıdaki fonksiyonları kullanarak, Ean8 veya Ean13 sistemindeki barkodların check digit rakamını hesaplayıp ekleyebilirsiniz.

Kod:
Function ean8checkdigitbulekle(bul)
If Len(bul) <> 7 Then
    ean8checkdigitbulekle = "hata"
    Exit Function
End If
For x = 1 To 5 Step 2
    toplam = toplam + Mid(bul, x, 1) * 3 + Mid(bul, x + 1, 1)
Next
    toplam = toplam + Mid(bul, 7, 1) * 3

check = (10 - (toplam Mod 10)) Mod 10
ean8checkdigitbulekle = bul & check
End Function

Function ean13checkdigitbulekle(bul)
If Len(bul) <> 12 Then
    ean13checkdigitbulekle = "hata"
    Exit Function
End If
For x = 1 To 11 Step 2
    toplam = toplam + Mid(bul, x, 1) + Mid(bul, x + 1, 1) * 3
Next
check = (10 - (toplam Mod 10)) Mod 10
ean13checkdigitbulekle = bul & check
End Function

Kullanımı,
=ean13checkdigitbulekle(270426413650)
=ean13checkdigitbulekle(504401600001)
=ean8checkdigitbulekle(4032957)
=ean8checkdigitbulekle(4015181)

Bu değerleri veya fonksiyonları excel'de nasıl çalıştırıyoruz veya ekliyoruz lütfen yardım edin...
 
Geri
Üst