Jak mogę oflagować obecność / brak określonego podciągu w ciągu znaków w programie Excel?

2

Mamy listę słów kluczowych powiązanych z listą dokumentów. Lista została utworzona z liczenia częstotliwości słów w tekście dokumentu. Próbujemy dodać wagę do słów kluczowych na podstawie tego, czy pojawiają się one w nazwie dokumentu, czy nie. Na przykład, gdybyśmy mieli dokument o nazwie Agency_Solutions.doc, słowo kluczowe agencysortowałoby się wyżej na liście niż telephone.

Sprawę komplikuje fakt, każdy dokument ma albo the, a, anjak to top słów kluczowych, na podstawie morfologii. Oczywiście wszystko, co należy wykluczyć; Utworzyłem VLOOKUPkolumnę zawierającą 171 „wspólnych” słów do wykluczenia.

Oto mój problem: jeśli ja MATCH(WORD,TITLE,0), Agencynie równa się Agency_Solutions(lub Agency Solutions, użyłem SUBSTITUTEdo stworzenia „czystych” wersje wszystkich tytułów) i nie dostać ważona. Jeśli SEARCH(WORD,TITLE)ważę, abo apojawia się w Agency_Solutions. FINDzwróci identyczne wyniki SEARCHw tym przypadku. Skała. Trudne miejsce

Próbowałem kilku iteracji rzeczy, ale nigdy nie otrzymuję wyników identyfikujących słowo kluczowe jako samodzielny podciąg w nazwie dokumentu. Jakieś pomysły?

EDYCJA: Oto niektóre dane

Lista wykluczeń (wklej do kolumny A)

a
an
is
the
what
when
who

Dokument, słowo kluczowe, liczba (Cols B, C i D)

Keyboard_and_mouse_problems.txt the 15
Keyboard_and_mouse_problems.txt an  15
Keyboard_and_mouse_problems.txt a   14
Keyboard_and_mouse_problems.txt when    12
Keyboard_and_mouse_problems.txt system  8
Keyboard_and_mouse_problems.txt keyboard    8
Keyboard_and_mouse_problems.txt mouse   8
Keyboard_and_mouse_problems.txt when    9
Keyboard_and_mouse_problems.txt what    9
Keyboard_and_mouse_problems.txt who 8
Keyboard_and_mouse_problems.txt is  8
Keyboard_and_mouse_problems.txt phone   6
Keyboard_and_mouse_problems.txt help    6
Keyboard_and_mouse_problems.txt desk    5
Keyboard_and_mouse_problems.txt cable   4
Keyboard_and_mouse_problems.txt jack    4

Agency_Solutions.txt    X   2
Agency_Solutions.txt    c   1
Agency_Solutions.txt    on  1

Następnie moje formuły:

Col E   =IFERROR(VLOOKUP(C2,$A$2:$A$225,1,0),"notFound")    Is this in the exclusion list?
Col F   =IFERROR(VLOOKUP(C2,$A$2:$A$225,1,0),"")        Exclude this word
Col G   =IF(F2=C2,0,C2)                     Include this word
Col H   =IF(ISNUMBER(SEARCH(C2,B2)),100,0)          Title Weight
Col I   =IF(G2=0,0,D2+H2)                   Weighted Keywords
Col J   =IF(AND(H2=100,G2=0),"BAD","OK")            OK or Bad calculations
dwwilson66
źródło

Odpowiedzi:

1

Jeśli masz tylko spacje między słowami, możesz wyszukać słowo ze spacjami po obu stronach, aby uniknąć częściowych dopasowań, np

=ISNUMBER(SEARCH(" "&WORD&" "," "&TITLE&" "))

.... chociaż to się przewraca, jeśli masz interpunkcję jak _ lub. w TITLE ..... ale możesz użyć dowolnej liczby SUBSTITUTEfunkcji, aby zastąpić je spacjami takimi jak ten

=ISNUMBER(SEARCH(" "&WORD&" "," "&SUBSTITUTE(SUBSTITUTE(TITLE,"_"," "),"."," ")&" "))

Barry Houdini
źródło
Mamy więc coś takiego jak „Agencja ....”, która NIE MA miejsca. : | Ale dobry pomysł; Też o tym myślałem. :)
dwwilson66
1
Czy masz na myśli tytuł rozpoczynający się od „Agencja .....”? Moja propozycja dotyczy tego, ponieważ dodaje spacje również na początku i na końcu tytułu - próbowałeś? Jeśli WORD jest, Agencya TYTUŁ to Agency appletonpierwsza formuła zwraca PRAWDA, ale z tym samym TYTUŁEM, za który otrzymałeś FAŁSZ, appleponieważ nie jest to pełne dopasowanie
Barry Houdini
Wiesz, zupełnie nie widziałem spacji na żadnym końcu tytułu. To może mi pomóc. Pozwól mi spróbować. Dobra decyzja!
dwwilson66
3

Trzeba spróbować, aby VLOOKUPz symboli wieloznacznych, np jeśli mamy applew A1, =VLOOKUP("*"&A1&"*";B:C;2;0)pasuje dowolny ciąg, który ma appleniezależnie od pozycji. Zobacz więcej mojej innej odpowiedzi: https://superuser.com/a/552742/187330

Wskazówka: aby uniknąć rozróżniania wielkości liter, użyj LOWERfunkcji porównania.

Peter L.
źródło
Dzięki, @Peter L. To pytanie jest moim kolejnym wyzwaniem po zapoznaniu VLOOKUPsię z wszechświatem zgodnie z postem, o którym wspomniałeś powyżej. Mój problem polega teraz na tym, jak uwzględnić apple, WYŁĄCZNIE appleton. ... Lub, jak wykluczyć apple, WŁĄCZNIE appleton. Nie jestem pewien, czy mogę to zrobić w tej samej funkcji.
dwwilson66
Podaj pełną listę (lub przynajmniej odpowiednią próbkę) swojej tablicy ciągów.
Peter L.
@ dwwilson66 Myślę, że mam rozwiązanie, ale wolę przetestować je na rzeczywistych danych zamiast generować fałszywe próbki.
Peter L.
@ dwwilson66 dodaj go jako tekst do oryginalnego postu przez edycję, tylko 10-20 ciągów ze wspomnianymi „jabłkami”)
Peter L.
Gotowe i gotowe. Gdy wszystkie dane i formuły zostaną wklejone do odpowiednich kolumn, kolumna J wyświetli OKlub BAD
oprze się