Mam arkusz, który wygląda tak:
Chcę (automatycznie) utworzyć macierz, która wygląda tak:
Jaki jest najlepszy sposób osiągnięcia tego celu?
microsoft-excel
worksheet-function
microsoft-excel-2013
Susan McCoy
źródło
źródło
X
s, a następnie możesz rozwiązać go również za pomocą formuł.Odpowiedzi:
Jest to łatwe do zrobienia za pomocą formuł. Dla uproszczenia umieściłem matrycę do kolumn
C
-N
(i nie tylko) podstawowego arkusza roboczego; przeniesienie go na inny arkusz (strona / karta) jest banalne.To jest praca dla
SEARCH
funkcjonować, który szuka jednego ciągu w innym, jak „anty” w „szalonym”. Użyjemy go do wyszukania każdej indywidualnej własności („Środek przeciwbólowy”, „antybakteryjny” itp.) Na liście właściwości („Antyseptyczne, przeciwgrzybicze, przeciwbólowe, przeciwnowotworowe itp.”).SEARCH
zwraca pozycję podciągu - na przykład,SEARCH("anti", "frantic")
zwraca 3, ponieważ „a” jest trzecią postacią „szalonego”. Nie dbamy o to; zależy nam na tym, że jeśli pierwszy ciąg jest obecny w drugim,SEARCH
zwraca liczbę, w przeciwnym razie zwraca błąd. Więc jeśli to zrobimyISERROR(SEARCH(C$1, $B2))
do komórkiC2
, zwraca FAŁSZ, jeśli „antyseptyczny” (C1
) znajduje się na liście właściwości dla lawendy (B2
) i PRAWDA inaczej. Więcwyświetla
x
jeśli właściwość znajduje się na liście i jest pusta, jeśli nie jest.Ale to nadmierne uproszczenie. Jeśli lista właściwości zawiera „antybakteryjne (mocne)”, wtedy poszukiwanie „antybakteryjnego” się powiedzie. Twoja ilustracja żądanej macierzy sugeruje, że nie chcesz, aby tak się stało. Istnieje standardowa sztuczka: szukaj „antybakteryjnych” (z przecinkami na początku i na końcu), znaleźć „antybakteryjne” jako kompletny wpis na liście. Ale to nie pasuje jeśli „antybakteryjny” jest pierwszym lub ostatnim wpisem na liście - więc dodajemy przecinki także na początku i na końcu listy.
Więc, połóż
=IF(ISERROR(SEARCH(", "&C$1&",", ", "&$B2&",")), "", "x")
do komórkiC2
i przeciągnij w dół iw prawo:źródło