Vba: jak zamienić znaki w ciągu znaków
Aby zastąpić znaki w ciągu znaków, możesz użyć metody Zamień() w języku VBA.
Ta metoda wykorzystuje następującą podstawową składnię:
Zamień (wyrażenie, znajdź, zamień, rozpocznij, policz)
Złoto:
- wyrażenie : Ciąg, w którym chcesz zamienić znaki
- find : ciąg do znalezienia
- zamień : Ciąg znaków, który ma zostać użyty jako zamiennik
- start ( opcjonalnie ) : Pozycja początkowa w ciągu do wyszukania
- count ( opcjonalnie ) : Liczba zamian do wykonania
Poniższe przykłady pokazują, jak zastosować tę metodę w praktyce z poniższą listą ciągów w Excelu:
Przykład 1: Użyj VBA, aby zastąpić wszystkie wystąpienia znaków w ciągu (wielkość liter ma znaczenie)
Powiedzmy, że chcemy zamienić „to” na „TAK” w każdym ciągu.
W tym celu możemy utworzyć następujące makro:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(Range(" A " & i), " this ", " THAT ") Next i End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Kolumna B wyświetla każdy ciąg z kolumny A, przy każdym wystąpieniu „tego” zastąpionego przez „TAK”.
Należy pamiętać, że w tej zamianie rozróżniana jest wielkość liter .
Oznacza to, że każde wystąpienie „tego” jest zastępowane, ale każde wystąpienie „tego” pozostaje bez zmian.
Przykład 2: Użyj języka VBA do zamiany wszystkich wystąpień znaków w ciągu (wielkość liter nie ma znaczenia)
Powiedzmy, że chcemy zastąpić „to” (niezależnie od przypadku) słowem „TAK” w każdym ciągu.
W tym celu możemy utworzyć następujące makro:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ") Next i End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Kolumna B wyświetla każdy ciąg z kolumny A, przy każdym wystąpieniu „tego” zastąpionego przez „TAK”.
Należy pamiętać, że w tej zamianie nie jest rozróżniana wielkość liter .
Oznacza to, że każde wystąpienie „tego” (pisanego wielką literą lub nie) jest zastępowane.
Udało nam się wykonać tę zamianę bez uwzględniania wielkości liter, używając metody LCase , aby najpierw przekonwertować każdy ciąg w kolumnie A na małe litery przed wyszukaniem „tego” w każdym ciągu.
Przykład 3: Użyj VBA, aby zastąpić pierwsze N wystąpień znaku w ciągu
Załóżmy, że chcemy zastąpić tylko pierwsze wystąpienie „tego” (niezależnie od przypadku) słowem „TAK” w każdym ciągu.
W tym celu możemy utworzyć następujące makro:
Sub ReplaceChar() Dim i As Integer For i = 2 To 8 Range(" B " & i) = Replace(LCase(Range(" A " & i)), " this ", " THAT ", Count:=1) Next i End Sub
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Kolumna B wyświetla każdy ciąg z kolumny A, przy czym tylko pierwsze wystąpienie słowa „to” zostało zastąpione przez „TAK”.
Zauważ, że użyliśmy Count:=1 do zastąpienia tylko pierwszego wystąpienia określonego ciągu, ale możesz zastąpić 1 dowolną wartością, którą chcesz zastąpić pierwsze n wystąpień określonego ciągu.
Uwaga : Pełną dokumentację metody VBA Apply znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania przy użyciu języka VBA:
VBA: Jak liczyć wystąpienia znaków w ciągu
VBA: jak sprawdzić, czy ciąg zawiera inny ciąg
VBA: Jak liczyć komórki zawierające określony tekst