İyi günler. Metin ve sayılar içeren hücrelerdeki sayıları toplamak istiyorum. Örneğin A2 hücresinde "kalem 500 silgi 300 defter 250" ibaresi var. Ben bu A2 hücresindeki 500,300,250 sayılarının toplanmasını istiyorum. Yardımlarınız için teşekkürler.
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Public Function ToplaRakam(txt As String) As Double
Dim prc As Variant
Dim Bak As Integer
prc = Split(txt, " ")
For Bak = 0 To UBound(prc)
If IsNumeric(prc(Bak)) Then
ToplaRakam = ToplaRakam + prc(Bak)
End If
Next
End Function
=ToplaRakam(A1)
Function SumNumbers(rngS As Range, Optional strDelim As String = " ") As Double
Dim xNums As Variant, lngNum As Long
xNums = Split(rngS, strDelim)
For lngNum = LBound(xNums) To UBound(xNums) Step 1
SumNumbers = SumNumbers + Val(xNums(lngNum))
Next lngNum
End Function
hocam çok teşekkür ederim. fakat ben çalışma kitabımdaki ANA SAYFA adlı sayfanın V sütunundaki hücreler için bu formülü kullanmak istiyorum. O şekilde uyarlayabilirmiyiz.Merhaba.
Alternatif olsun.
Eğer VBA ile yapmak isterseniz , dosyanıza yeni bir Module ekleyip aşağıdaki kodu kopyalayın.
Kullanımı, Excel sayfasında normal bir fonksiyon gibi kullanacaksınız.Kod:Public Function ToplaRakam(txt As String) As Double Dim prc As Variant Dim Bak As Integer prc = Split(txt, " ") For Bak = 0 To UBound(prc) If IsNumeric(prc(Bak)) Then ToplaRakam = ToplaRakam + prc(Bak) End If Next End Function
Metnin A1 de yazdığını var sayarsak.
Kod:=ToplaRakam(A1)
hocam eksik olmayın sağolun. Yukardaki cevabda da yazdım ama aslen ben çalışma kitabımdaki ANA SAYFA adlı sayfanın V sütunundaki hücreler için bu formülü kullanmak istiyorum. O şekilde çalışırmı kodlar yani tüm sayfayı mı içeriyor. Birde ben bu kodları başka sayfa da bulup dediğiniz gibi modül ekleyip denedim ama olmamıştı.Aşağıdaki kodu
Alt+F11 e basıp kod penceresinde bir modül ekleyip fonksiyonu oraya yapıştırın
ardından toplamını almak istediğiniz hücreye =SumNumbers(A1) yazıp deneyin buradaki A1 sayı ve metinlerin birlikte yazıldığı hücredir
Kod:Function SumNumbers(rngS As Range, Optional strDelim As String = " ") As Double Dim xNums As Variant, lngNum As Long xNums = Split(rngS, strDelim) For lngNum = LBound(xNums) To UBound(xNums) Step 1 SumNumbers = SumNumbers + Val(xNums(lngNum)) Next lngNum End Function
sağolun hocam ama bu eke ulaşamıyorum.Merhaba
2020 yılında buna benzer bir talep gelince Ek 'teki dosyayı hazırlamıştık.
Dosyanız EK 'tedir.
Selamlar...
Evet hocam şimdi denedim oldu. Çok sağolun eksik olmayın. Çok işime yaradı.Merhaba.
Alternatif olsun.
Eğer VBA ile yapmak isterseniz , dosyanıza yeni bir Module ekleyip aşağıdaki kodu kopyalayın.
Kullanımı, Excel sayfasında normal bir fonksiyon gibi kullanacaksınız.Kod:Public Function ToplaRakam(txt As String) As Double Dim prc As Variant Dim Bak As Integer prc = Split(txt, " ") For Bak = 0 To UBound(prc) If IsNumeric(prc(Bak)) Then ToplaRakam = ToplaRakam + prc(Bak) End If Next End Function
Metnin A1 de yazdığını var sayarsak.
Kod:=ToplaRakam(A1)
Merhaba,Merhaba
2020 yılında buna benzer bir talep gelince Ek 'teki dosyayı hazırlamıştık.
Dosyanız EK 'tedir.
Selamlar...
MerhabaMerhaba,
Kullanıcı tanımlı bu formülü formüllerim içerisinde göstermek için ne yapmalıyım? Bunun eklenti şekli mevcut mu?
Selamlar@Mdemir63,
Linkte alternatif çözümler var. İnceleyebilirsiniz.
HÜCRE İÇİNDEKİ VERİLERİ TOPLAMA
Selam arkadaşlar, Elimde bir liste var ve içerisinde yer alan verileri toplam olarak görmek istiyorum yanında adet veya kg olarak görerek örnek 1,1,1 ad olan veriyi 3 ad olarak toplamını almam gerekiyor dosyam ektedir yardımcı olur musunuz (yanındaki birimleri de almasını istiyorum ad, kg, mt)www.excel.web.tr
Option Explicit
Sub Birime_Gore_Topla()
Dim Veri As Variant, Son As Long, X As Long, Kriter As Variant, Y As Integer, Zaman As Double
Dim Toplam_Adet As Double, Toplam_Kg As Double, Toplam As Double, Miktar As Double
Zaman = Timer
Son = Cells(Rows.Count, 1).End(3).Row
If Son = 1 Then Son = 2
Veri = Range("A1:A" & Son).Value
For X = LBound(Veri) To UBound(Veri)
If Veri(X, 1) <> "" Then
If InStr(1, Veri(X, 1), "ADET") > 0 Then
Kriter = Split(Veri(X, 1), "ADET")
For Y = LBound(Kriter) To UBound(Kriter)
If Left(Kriter(Y), 1) = "," Then
Miktar = Mid(Kriter(Y), 2, Len(Kriter(Y)))
Else
Miktar = IIf(Kriter(Y) = "", 0, Kriter(Y))
End If
Toplam_Adet = Toplam_Adet + Miktar
Next
ElseIf InStr(1, Veri(X, 1), "KİLOGRAM") > 0 Then
Kriter = Split(Veri(X, 1), "KİLOGRAM")
For Y = LBound(Kriter) To UBound(Kriter)
If Left(Kriter(Y), 1) = "," Then
Miktar = Mid(Kriter(Y), 2, Len(Kriter(Y)))
Else
Miktar = IIf(Kriter(Y) = "", 0, Kriter(Y))
End If
Toplam_Kg = Toplam_Kg + Miktar
Next
Else
Kriter = Split(Veri(X, 1), " ,")
For Y = LBound(Kriter) To UBound(Kriter)
If Left(Kriter(Y), 1) = "," Then
Miktar = Mid(Kriter(Y), 2, Len(Kriter(Y)))
Else
Miktar = IIf(Kriter(Y) = "", 0, Kriter(Y))
End If
Toplam = Toplam + IIf(Kriter(Y) = "", 0, Kriter(Y))
Next
End If
End If
Next
Range("C1") = "Toplam"
Range("C2") = "Toplam_Adet"
Range("C3") = "Toplam_Kg"
Range("D1") = Toplam
Range("D2") = Toplam_Adet
Range("D3") = Toplam_Kg
MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub