Chcę utworzyć macierz z arkusza danych w kolumnach

0

Mam arkusz, który wygląda tak:
worksheet of data

Chcę (automatycznie) utworzyć macierz, która wygląda tak:

worksheet of resulting matrix

Jaki jest najlepszy sposób osiągnięcia tego celu?

Susan McCoy
źródło
Co dokładnie powinno być zrobione automatycznie? Ostatecznym rozwiązaniem jest makro, ale jeśli masz już listy i musisz je tylko umieścić X s, a następnie możesz rozwiązać go również za pomocą formuł.
Máté Juhász
Arkusz kalkulacyjny „dane” będzie zmienny, będę dodawał do niego dane, gdy je otrzymam ... ale chciałbym automatycznie wygenerować macierz z danych, więc nie muszę jej budować. Nie wiem, jak napisać makro i byłbym bardzo wdzięczny za pomoc.
Susan McCoy

Odpowiedzi:

2

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 zrobimy ISERROR(SEARCH(C$1, $B2)) do komórki C2, zwraca FAŁSZ, jeśli „antyseptyczny” ( C1 ) znajduje się na liście właściwości dla lawendy ( B2 ) i PRAWDA inaczej. Więc

=IF(ISERROR(SEARCH(C$1, $B2)), "", "x")

wyś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órki C2i przeciągnij w dół iw prawo:

matrix

Scott
źródło
Nadal trzeba będzie tworzyć nagłówki dla każdej właściwości medycznej, zachowując ich spójność. Mimo to lubię to jako czyste rozwiązanie Excela, zamiast używać jakiegoś narzędzia (CLI) do analizowania pliku CSV tworzącego inny, jak pierwotnie chciałem zasugerować.
Gypsy Spellweaver