poniedziałek, 18 maja 2015

Excel VBA, podziel łańcuch na poszczególne znaki, liczbę na cyfry...

Na stronach stackoverflow znalazłem procedurę: http://stackoverflow.com/questions/13195583/split-string-into-array-of-characters Przerobiłem ją na funkcję UDF (czyli można jej używać jak funkcji tablicowej Excela, tj zaznaczyć więcej komórek, wpisać =SplitCell1(nasz_tekst), Ctrl+Shift+Enter i otrzymać w sąsiednich komórkach pojedyncze znaki/cyfry. Public Function splitCell1(str As String) As Variant
Dim buff As Variant

ReDim buff(Len(str) - 1)
For i = 1 To Len(str)
    buff(i - 1) = Mid$(str, i, 1)
Next
splitCell1 = buff

End Function

PS. Dodam tylko, jeśli są jakieś znaki oddzielające, to wystarczyłoby np:
Public Function SplitCell(rng As Range, delimit As String) As Variant
    SplitCell = (Split(rng, delimit))
End Function
Mała zabawa z powyższym (niestety zwraca do wszystkich komórek wart. tekstowe:
Public Function SplitCell(rng As String) As Variant
    Dim txtArray As Variant
       
    rng = Replace(rng, Chr(34) & " " & Chr(34), Chr(34) & Chr(34))
    txtArray = (Split(rng, Chr(34) & Chr(34)))
    txtArray(0) = DateValue(CDate(txtArray(0)))
    txtArray(3) = CCur(Replace(txtArray(3), ".", ","))
    txtArray(7) = Replace(txtArray(7), Chr(34), "")
    SplitCell = txtArray
End Function

Brak komentarzy:

Prześlij komentarz