Dopasuj wartość wyjściową na podstawie zakresu

1

Mam arkusz kalkulacyjny z dwiema zakładkami: jedna to dane wyszukiwanego hasła z kampanii AdWords, a druga to lista fragmentów tekstu.

Chcę użyć funkcji, aby zwrócić, czy wyszukiwane hasła zawierają

Karta wyszukiwanych haseł

+-----------------------------+--------+------+
|         Search term         | Clicks | Cost |
+-----------------------------+--------+------+
| nike running shoes          |     50 | $31  |
| soccer cleats               |     30 | $40  |
| lace up boots               |     40 | $45  |
| spikeless adidas golf shoes |     20 | $15  |
| red/blue converse classics  |     15 | $20  |
| flyknit nike for men        |     25 | $30  |
+-----------------------------+--------+------+

Karta fragmentów tekstu

nike
adidas
converse

Chcę dodać kolumnę do pierwszej karty, aby wyświetlać dopasowaną wartość z karty fragmentu tekstu obok każdego wyszukiwanego hasła.

dane wyjściowe wyglądałyby tak:

+-----------------------------+--------+------+--------------+
|         Search term         | Clicks | Cost | matched term |
+-----------------------------+--------+------+--------------+
| nike running shoes          |     50 | $31  | nike         |
| soccer cleats               |     30 | $40  |              |
| lace up boots               |     40 | $45  |              |
| spikeless adidas golf shoes |     20 | $15  | adidas       |
| red/blue converse classics  |     15 | $20  | converse     |
| flyknit nike for men        |     25 | $30  | nike         |
+-----------------------------+--------+------+--------------+

Próbowałem użyć funkcji SZUKAJ w zakresie: =SEARCH(tab2!A1:A63,A2)ale rozumiem#VALUE!

Bogdan
źródło

Odpowiedzi:

1

Proponuję następujące rozwiązanie w oparciu o sposób, w jaki rozumiem twoje pytanie. W tym przykładzie wyszukiwany termin znajduje się w arkuszu o nazwie tab1! C3: F8. Ciągi fragmentów tekstu znajdują się w tab2! C3: C5.

Teraz w F3 wstaw następującą formułę i na pasku formuły Naciśnij CTRL + SHIFT + ENTER, aby utworzyć formułę tablicową. Formuła powinna być zamknięta nawiasami klamrowymi, aby wskazać, że jest to formuła tablicowa i przeciągnij ją wzdłuż tabeli. Aby to zadziałało, należy pozostawić jedną komórkę wolną nad listą pofragmentowanej tabeli ciągów, tj. Rozpocząć pofragmentowaną listę w wierszu 2 i dalej w arkuszu tab2

=IF(MIN(IF(ISERROR(SEARCH('tab2'!$C$3:$C$5,C3)),9^99,ROW('tab2'!$C$3:$C$5)-ROW('tab2'!$C$2)))<9^99,INDEX('tab2'!$C$3:$C$5,MIN(IF(ISERROR(SEARCH('tab2'!$C$3:$C$5,C3)),9^99,ROW('tab2'!$C$3:$C$5)-ROW('tab2'!$C$2)))),"")

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Aktualizacja:

Jeśli używasz Arkuszy kalkulacyjnych Google, ta sama formuła również działa dobrze. Naciśnięcie klawiszy CTRL + SHIFT + ENTER powoduje zawinięcie formuły w nazwę funkcji ArrayFormula. Zobacz poniższy zrzut ekranu.

wprowadź opis zdjęcia tutaj

patkim
źródło
jakiś pomysł, jak zrobić formułę tablicową w arkuszu google / excel dla mac? Jaki jest wpływ 9^99twojej formuły?
Bogdan
Sprawdź support.google.com/docs/answer/3093275?hl=pl w arkuszach kalkulacyjnych Google
patkim
Formuła wyszukuje obecność wszystkich list fragmentów jeden po drugim w pojedynczej komórce głównej tabeli. Jeśli znaleziono dopasowanie, zwracana jest liczba wierszy komórki fragmentu, jeśli nie, zwraca dużą liczbę (np. 9 ^ 99) daleko poza maksymalną liczbą wierszy w programie Excel. Min. Tej tablicy to dopasowany numer wiersza ciągu fragmentu. Manipulując, odejmując numer wiersza pierwszej komórki przed listą, otrzymujesz pozycję indeksu numeru fragmentu ciągu zaczynając od liczby 1. Teraz zastosuj funkcję Index i zwróć pasujący ciąg z listy i umieść go w kolumnie F w głównej tabeli.
patkim
Z wyszukiwania w Internecie - Excel dla komputerów Mac - formuła tablicowa - CONTROL + U, a następnie naciśnij ⌘ + RETURN, a dla Mac Excel 2016 CTRL + SHIFT + RETURN. Jednak nie zweryfikowałem, ponieważ nie mam komputera Mac.
patkim
0

Z Sheet1zawierającym warunki wyszukiwania i Sheet2zawierające fragmenty, należy rozważyć następujące User Defined Function:

Public Function GetKeyWord(s As String, rng As Range) As String
    Dim s2 As String, r As Range
    s2 = LCase(" " & s & " ")

    GetKeyWord = ""

    For Each r In rng
        If InStr(1, s2, " " & r.Value & " ") > 0 Then
            GetKeyWord = r.Value
            Exit Function
        End If
    Next r
End Function

wprowadź opis zdjęcia tutaj

Funkcje zdefiniowane przez użytkownika (UDF) są bardzo łatwe w instalacji i obsłudze:

  1. ALT-F11 wyświetla okno VBE
  2. ALT-I ALT-M otwiera nowy moduł
  3. wklej i zamknij okno VBE

Jeśli zapiszesz skoroszyt, UDF zostanie z nim zapisany. Jeśli używasz wersji Excela późniejszej niż 2003, musisz zapisać plik jako .xlsm zamiast .xlsx

Aby usunąć UDF:

  1. wywołać okno VBE jak wyżej
  2. wyczyść kod
  3. zamknij okno VBE

Aby użyć UDF z Excela:

= moja funkcja (A1)

Aby dowiedzieć się więcej o makrach, zobacz:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

i

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

a szczegółowe informacje na temat UDF można znaleźć:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Makra muszą być włączone, aby to działało!

Uczeń Gary'ego
źródło