Jeśli natkniesz się na sytuację, w której potrzebujesz tylko pierwszego słowa w każdym wierszu komórki, a nie całego znaku, musisz przeczytać ten artykuł. Poniższy samouczek pomoże ci w pobieraniu tylko pierwszego słowa za pomocą kodu VBA w programie Excel.
W tym artykule skupimy się na tym, jak zachować tylko pierwsze słowo w każdym wierszu komórki oddzielone średnikiem za pomocą kodów makr.
Pytanie: Dane, nad którymi pracuję, mają czasami wiele wierszy w każdej komórce i chcę wyodrębnić tylko pierwsze słowo.
Tutaj znajdziesz oryginalne pytanie
Poniżej znajduje się zrzut tekstu wejściowego (przed arkuszem)
Poniżej znajduje się zrzut tekstu wejściowego (po arkuszu) w kolumnie A & wymaga danych wyjściowych w kolumnie B; patrz poniżej migawka:
Aby uzyskać kod; musimy wykonać poniższe kroki, aby uruchomić edytor VB
- Kliknij kartę Deweloper
- Z grupy Kod wybierz Visual Basic
- Skopiuj poniższy kod w standardowym module
Function FirstWordOnly(rng As Range) Dim Arr() As Variant Dim Licz jako Integer Dim i As Integer Licz = Len(rng) - Len(Zamień(rng, Chr(10), "")) Jeśli Count > 0 Następnie RedDim Arr (0 To Count) For i = 0 To Count If i = 0 Then Arr(i) = Left(rng, InStr(1, rng, " ") - 1) ElseIf j = 0 Then j = InStr(1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) Else j = InStr(j + 1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) End If Next FirstWordOnly = Join(Arr, "; ") Else If InStr(1, rng, " ") > 0 Then FirstWordOnly = Left(rng, InStr(1, rng, " ")) Else FirstWordOnly = rng End If End If End Funkcja
Teraz kod VBA jest gotowy do użycia; użyjemy nowo utworzonej funkcji zdefiniowanej przez użytkownika, tj. „FirstWordOnly” w Przed arkuszem.
- Aby uzyskać dane wyjściowe za pomocą UDF w komórce B2, formuła będzie
- =Tylko pierwsze słowo(A2)
Wyjaśnienie kodu:
W powyższym kodzie użyliśmy funkcji COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
- „Len(rng)”; to sprawdzi długość komórki, do której się odnosimy
- „Zamień(rng, Chr(10), „”)”; Kod sprawdza Chr(10), tj. łamanie wiersza w każdej linii, a następnie zastępuje podwójnym cudzysłowem (nic)
- ‘Liczba = Dł(rng) - Dł(Zamień(rng, Chr(10), ""))”; Count będzie przechowywać różnicę długości każdej linii po zastąpieniu podziału linii
- Jeśli liczba > 0; to sprawdzi, czy długość Count jest większa od zera i jeśli zostanie znaleziona równa zero, tj. komórka jest pusta, wtedy warunek JEŻELI nie wykona kodu. Aby to sprawdzić, możesz użyć =FirstWordOnly(A5) w komórce B5 i zwróci 0
- Jeśli komórka nie jest pusta, to pętla For zostanie użyta z warunkiem JEŻELI, a funkcją LEWO pobierzemy pierwsze słowo
- Funkcja JOIN doda średnik na końcu, jeśli w każdej komórce jest wiele linii
Wniosek: Za pomocą UDF możemy usunąć wszystko w każdej linii komórki z wyjątkiem pierwszego słowa przez VBA. Ta funkcja będzie działać we wszystkich wersjach od starych do nowych, tj. Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Jeśli podobały Ci się nasze blogi, podziel się nimi ze znajomymi na Facebooku. A także możesz śledzić nas na Twitterze i Facebooku.
Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy ulepszyć, uzupełnić lub unowocześnić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail