- Katılım
- 13 Temmuz 2013
- Mesajlar
- 241
- Excel Vers. ve Dili
- Türkçe 2007
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Dosyanız ektedir.Hocam emeğine sağlık peki şunu yapabilirmiyiz rakamları b sütununa formül ile aldım. Öyle bir şey yapmadan sadece rakamları toplatabilirmiyiz? dosyayı ekliyorum daha detaylı belirttim hocam...
Sub topla59()
Dim topla As Double, i As Long
Range("B:B").Clear
For i = 2 To 28
sayi = Right(Cells(i, "A").Value, Len(Cells(i, "A").Value) - 3)
If IsNumeric(sayi) Then Cells(i, "B").Value = sayi * 1
Next i
MsgBox "İşlem Tamamlandı." & vbLf & "evrengizlen@hotmail.com"
End Sub
hocam 25. satırda NO: ADH 1 ADET
yazıyor fakat burayı almamış burdaki 1 rakamını alması gerekiyor. yani orda 5 te yazabilir sadece rakamları seçerek toplamını vermesini istiyorum mümkünmüdür?
hocam örneğin hücre içerisinde NO: sasa 1 ssa veya NO değilde Numara: sd 1 sd gibi veriler olabilir sadece rakamları alıp toplasın istediğim bu.. imkansız bşey değildir umarım![]()
Sub rakamlarıtopla()
Dim nums As String
Set regEx = CreateObject("vbscript.RegExp")
Set regEx = Nothing
For i = 1 To Cells(65536, 1).End(xlUp).Row
For b = 1 To Len(Cells(i, 1))
If IsNumeric(Mid(Cells(i, 1), b, 1)) = True Then
nums = nums & Mid(Cells(i, 1), b, 1)
End If
Next b
Cells(i, 256) = nums
nums = ""
Next i
Range("B1") = WorksheetFunction.Sum(Range("ıv2:ıv65536"))
Range("ıv2:ıv65536").Clear
End Sub
=KTOPLA(A1:A100)
Function KTOPLA(Alan As Range) As Double
Dim Veri As Range
Application.Volatile True
With CreateObject("Vbscript.Regexp")
.Pattern = "[a-zA-ZğüşiöçĞÜŞİÖÇ.;: ]+"
.Global = True
.IgnoreCase = True
For Each Veri In Alan
Debug.Print .Replace(Veri.Text, "")
If IsNumeric(.Replace(Veri.Text, "")) Then
KTOPLA = KTOPLA + .Replace(Veri.Text, "")
End If
Next
End With
End Function
Alternatif olarak "Regular Expression" (Düzenli İfadeler) özelliğini kullanarak hazırladığım fonksiyonu kullanabilirsiniz.
Fonksiyon içindeki deseni (Pattern) geliştirmek gerekebilir.
Kullanım şekli;
Kod:=KTOPLA(A1:A100)
Kod:Function KTOPLA(Alan As Range) As Double Dim Veri As Range Application.Volatile True With CreateObject("Vbscript.Regexp") .Pattern = "[a-zA-ZğüşiöçĞÜŞİÖÇ.;: ]+" .Global = True .IgnoreCase = True For Each Veri In Alan Debug.Print .Replace(Veri.Text, "") If IsNumeric(.Replace(Veri.Text, "")) Then KTOPLA = KTOPLA + .Replace(Veri.Text, "") End If Next End With End Function
Hocam emeğine sağlık muazzam birşey olmuş... patterni nasıl geliştirebilirz? örneğin "ı" harfi içeren bir metinden rakamı almadı. Her türlü olasılıkta veri alabilmemiz için bu sıkalayı nasıl geliştirebiliriz..
Sub regex_test()
deger = "0123::::: çÇ ğĞ ıI iİ öÖ şŞ üÜ.,?-/+*x 456 abz ABZ"
With CreateObject("VBScript.Regexp")
.Global = True
.pattern = "[^0-9]+"
MsgBox "Test9: " & .Replace(deger, "")
End With
End Sub
Sub TEST()
For X = 1 To 10
Debug.Print "DENEME " & X
Next
End Sub