2013-03-30 13 views
9

Tüm alfasayısal olmayan karakterleri Excel'de nokta ve boşluk dışında bir dizeden kaldırmam gerekiyor. Saf excel işlevleri yerine VBA kullanan bir çözüm gayet iyi.Tüm alfasayısal olmayan karakterler, Excel'de nokta ve alan dışındaki bir dizeden nasıl kaldırılır?

+0

dönem/uzay kısmı hariç, bu soruya bakın kaldırma fonksiyonu gider olsun. Deseniniz [AZ, az, 0-9, \., \ S] gibi olacaktır. Http://stackoverflow.com/questions/10789948/remove-non-numeric-characters-from-excel – Alexander

cevap

26

Visual Basic Düzenleyicisi'nde yeni modüle bu işlevi ekleyin: Veri hücresinde A1 ise

Function AlphaNumericOnly(strSource As String) As String 
    Dim i As Integer 
    Dim strResult As String 

    For i = 1 To Len(strSource) 
     Select Case Asc(Mid(strSource, i, 1)) 
      Case 48 To 57, 65 To 90, 97 To 122: 'include 32 if you want to include space 
       strResult = strResult & Mid(strSource, i, 1) 
     End Select 
    Next 
    AlphaNumericOnly = strResult 
End Function 

Şimdi Fonksiyonu tanımla bir kullanıcı olarak kullanabilirsiniz, yani boş bu formülü yerleştirmek hücre =AlphaNumericOnly(A1). Eğer, yani doğrudan geniş bir ürün yelpazesi dönüştürmek kaynak ayrılmadan tüm alfasayısal olmayan karakterler değiştirmek istiyorsanız

, başka VBA rutin ile yapabilirsiniz:

Sub CleanAll() 
    Dim rng As Range 

    For Each rng In Sheets("Sheet1").Range("A1:K1500").Cells 'adjust sheetname and range accordingly 
     rng.Value = AlphaNumericOnly(rng.Value) 
    Next 
End Sub 

Basitçe aynı bu alt yerleştirmek modül ve onu yürütmek. Yine de, bunun aralıktaki herhangi bir formülü değiştireceğini unutmayın.

+0

Albert, hızlıydı. teşekkür ederim. Yarın deneyeceğim. Dediğim gibi, excel hakkında çok az şey bildiğim gibi, tüm excel sayfamda çalıştırmam gereken fonksiyonu nasıl kullanabileceğinizi açıklayabilir misiniz? Bu genellikle 11 sütun ve yaklaşık 1500 satır olacaktır, ancak bu çok olabilir. Teşekkür ederim bu çok takdir oldu – xyz

+0

Albert, bu hızlı, teşekkür ederim. Yarın deneyeceğim. Dediğim gibi, excel hakkında çok az şey bildiğim gibi, tüm excel sayfamda çalıştırmam gereken fonksiyonu nasıl kullanabileceğinizi açıklayabilir misiniz? Bu genellikle 11 sütun ve yaklaşık 1500 satır olacaktır, ancak bu çok olabilir. Teşekkür ederim bu çok takdir – xyz

+0

Benim düzenleme bakın - umarım bu sizin soruların çoğu cevaplar umuyoruz –

2

Aşağıdaki kodu yazdım ve test ettiğim kadarıyla çalışır, iki işlevden oluşur. İlk kontroller bir dize alfanümerik ve ikinci (aynı zamanda boşlukları kaldırır)

Public Function Isalphanumeric(cadena As String) As Boolean 

    Select Case Asc(UCase(cadena)) 
     Case 65 To 90 'letras 
      Isalphanumeric = True 
     Case 48 To 57 'numeros 
      Isalphanumeric = True 
     Case Else 
      Isalphanumeric = False 

    End Select 

End Function 

yedek yapar Ve burada

Function RemoveSymbols_Enhanced(InputString As String) As String 

Dim InputString As String 
Dim CharactersArray() 
Dim i, arrayindex, longitud As Integer 
Dim item As Variant 


i = 1 
arrayindex = 0 
longitud = Len(InputString) 

'We create an array with non alphanumeric characters 
For i = 1 To longitud 

    If Isalphanumeric(Mid(InputString, i, 1)) = False Then 
    ReDim Preserve CharactersArray(arrayindex) 
    CharactersArray(arrayindex) = Mid(InputString, i, 1) 
    arrayindex = arrayindex + 1 

    End If 

    Next 

'For each non alphanumeric character we do a replace 
For Each item In CharactersArray 
    item = CStr(item) 
    InputString = Replace(InputString, item, "") 
Next 


End Function 
+1

Çok güzel Andoni, teşekkürler – xyz

+0

hoş geldiniz! – Andoni

İlgili konular