Mam zdanie w kolumnie A i mam zdanie w kolumnie B. Chcę dopasować A1 i B1 i kolor czerwony do pasujących słów. Na przykład:
A1: Lenovo T450 with 5 GB RAM Intel i5 CPU 500 GB HDD 14" HD screen, weight 3.5 pounds (90)
B1: Len 5 GB h i5 CPU 500 GB HDD 14" HD 3.5 (90)
I chcę pokolorować na czerwono poniższe słowa w komórce A1 - 5 GB i5 CPU 500 GB HDD 14" HD 3.5 (90)
microsoft-excel
Lokesh
źródło
źródło
Odpowiedzi:
W mojej poprzedniej odpowiedzi wystąpił błąd, który przeoczyłem. W rzadkich przypadkach po słowie znajdowała się ta sama litera, na której kończyła się, podczas gdy wyszukiwana była tylko ta litera, wówczas zarówno litera końcowa, jak i następna były kolorowe.
Oto zaktualizowana odpowiedź:
Najpierw piszemy sub i kilka zmiennych, których będziemy potrzebować:
Zmienna strDelimit określa, co oddziela słowa od siebie i w razie potrzeby może zostać zmieniona na coś takiego jak „,”.
Następnie kontynuujemy ustawianie naszych zakresów według potrzeb.
Każdy wybrany wiersz w kolumnie będzie,
rngA
a każdy wiersz w kolumnie obok niego będzierngB
. Następnie tworzona jest tablica zSplit
funkcją, z jednym wpisem dla każdego słowa w każdej komórce.Następnie przechodzimy do porównania dwóch tablic:
Spowoduje to pobranie każdego wpisu z każdej tablicy i porównanie ich ze sobą. A jeśli są identyczne, zmienna
intStart
zostanie ustawiona na pozycję pierwszego pasującego słowa w komórcerngA
wybranej komórki . Teraz z dodanym strDelimit po obu stronach, aby upewnić się, że nie jest to inne słowo kończące się lub rozpoczynające się od szukanej rzeczy.Teraz musimy faktycznie coś zrobić z tymi informacjami, więc w poprzednim
if
oświadczeniu możemy użyć następujących elementów:Tutaj po prostu ustawiamy kolor znaków w wybranej komórce na indeks 3, który jest czerwony.
Następnie dodajemy +1 do intStart i ponownie sprawdzamy, czy mamy więcej pasujących słów.
Drobny problem to teraz
spowoduje wyświetlenie błędu, jeśli zostanie wybranych wiele kolumn.
Aby sobie z tym poradzić, możemy dodać prostą obsługę błędów przy użyciu
On Error GoTo Error
Końcowy kod będzie wyglądał następująco: Edytuj W przypadku pominięcia wielkości liter i ponownie dodano funkcję sterowania.
Wynik powinien wyglądać następująco:
źródło
If strA(j) = strB(i) Then
na Yes, abyIf UCase(strA(j)) = UCase(strB(i))
nie rozróżniać wielkości liter. i dodaj+ strDelimit
po każdymUcase
wintStart
obliczeniach. Kod jest aktualizowany.