Bir metindeki sayıları diğer karekterlerden ayırma

Katılım
18 Temmuz 2005
Mesajlar
4
Aşağıdaki fonksiyonda girilen bir karışık metindeki sayıları ayırıp yanyana birleştirerek oluşan sayıyı döndürmeye çalıştım.

Ancak hata veriyor.

Yardım rica.





Function AYIR(Text As Characters) As Double
Dim LengthText, I, Kar As Integer

'Metinin uzunluğunu bul
LengthText = Len(Text)

'Metinin her karekterini tek tek sına
For I = 1 To LengthText
Kar = Mid(I, 1)

'Her bir karekterin sayı olduğunu sına
If Kar * 1 >= 0 Then

' Sayıları birleştir
AYIR = AYIR & Kar
Else

'virgülleri koru
If Kar = "," Then
AYIR = AYIR & Kar
End If
Next I
End Function
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
If Kar * 1 >= 0 Then

satırını

If isnumeric(Kar) then

ile değiştirmeyi deneyin.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,644
Excel Vers. ve Dili
Pro Plus 2021
Function AYIR(TEXT)
For X = 1 To Len(TEXT)
Kar = Mid(TEXT, X, 1)
If (Asc(Kar) < 48 Or Asc(Kar) > 57) And 44 <> Asc(Kar) Then Kar = ""
AYIR = AYIR + Kar
Next
End Function
 
Katılım
18 Temmuz 2005
Mesajlar
4
Fonksiyonu aşağıdaki hale getirdim, ancak compile ederken Next i tanımıyır döngü hatası veriyor.

Function AYIR(Text As String) As Double
Dim I As Integer
Dim Kar As String
'Metinin her karekterini tek tek sına
For I = 1 To Len(Text)
Kar = Mid(Text, I, 1)
'Her bir karekterin sayı olduğunu sına
If IsNumeric(Kar) = True Then
' Sayıları birleştir
AYIR = AYIR & Kar
Else
'noktaları koru
If Kar = "." Then
AYIR = AYIR & Kar
End If
Next
End Function
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
Function AYIR(Text As String) As Double
Dim I As Integer
Dim Kar As String
'Metinin her karekterini tek tek sına
For I = 1 To Len(Text)
Kar = Mid(Text, I, 1)
'Her bir karekterin sayı olduğunu sına
If IsNumeric(Kar) = True Then
' Sayıları birleştir
AYIR = AYIR & Kar
Else
'noktaları koru
If Kar = "." Then
AYIR = AYIR & Kar
End If
End If
Next
End Function
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Alternatif olması açısından;

Kod:
Function Ayir2(Text As String) As Double
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "[^0-9,]"
Ayir2 = RegExp.Replace(Text, "")
Set RegExp = Nothing
End Function
 
Son düzenleme:
Katılım
7 Temmuz 2004
Mesajlar
1,141
Raider' Alıntı:
Alternatif olması açısından;

[vb:1:c9a2301ebb]Function Ayir2(Text As String) As Double
Set RegExp = CreateObject("VBscript.RegExp")
RegExp.Global = True
RegExp.Pattern = "[^0-9,]"
Ayir2 = RegExp.Replace(Text, "")
Set RegExp = Nothing
End Function
[/vb:1:c9a2301ebb]
Zeki şey. Geldiğin belli oldu. :mrgreen:
Hoş geldin. Umarım tatil istediğin gibi geçmiştir.

Bu arada sanırım bende 2 hafta tatile çıkıyorum.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
ALPEN' Alıntı:
....
Bu arada sanırım bende 2 hafta tatile çıkıyorum.
Sana da iyi tatiller dilerim, bol bol dinlen, kendine iyi bak.
 
Katılım
30 Mayıs 2008
Mesajlar
101
Excel Vers. ve Dili
2003 türkçe
keman tarafından gönderildi
doğru yere yazıp yazmadıgımı bılmıyorum ama bana cok ama cok acıl bırs sekılde yardımcı olabılırmısınız.ben " ULKER YUPO SEKERLEME 170GR BEN10 " bu metinde gecen 170 gr ı metinden ayırmak ıstıyorum yanı bunun gibi 40.000 adet urun var ve bunları tek tek yazmak çok zor olacak birkaç formul yazdım ama olmadı.en son buldugum formul bu ama işe yaramadı " =1*PARÇAAL(A5;KAÇINCI(DOĞRU;ESAYIYSA(1*PARÇAAL(A5; SATIR($1:$9);1));0);BAĞ_DEĞ_SAY(1*PARÇAAL(A5;SATIR ($1:$9);1)))" çok acil arkadaslar.şimdiden teşekkürler
 
Üst