Znajdź wspólne kolumny (ta sama nazwa kolumny / nagłówek, ale różne pozycje) z dwóch lub więcej arkuszy programu Excel

3

Mam arkusze Excela (format csv) od różnych klientów, gdzie pierwszy wiersz wszystkich arkuszy zawiera nazwy kolumn. Jednak kolejność i liczba kolumn w każdym arkuszu może być inna. Podam przykład minimalny:

Arkusz roboczy A

cpu, memory, disk, printer
xxx, xxxxxx, xxxx, xxxxxxx

Arkusz roboczy B

network, cpu, memory, mouse 
yyyyyyy, yyy, yyyyyy, yyyyy

Chcę więc, aby arkusze A * i B * zachowywały tylko te kolumny, które są wspólne zarówno w A, jak iw B. Tak więc przecięcie A i B w odniesieniu do nazw kolumn przy zachowaniu poprzednich wartości.

Arkusz roboczy A *

cpu, memory
xxx, xxxxxx

Arkusz roboczy B

memory, cpu
yyyyyy, yyy

Jakieś pomysły, jak to osiągnąć w programie Excel? Każda pomoc lub wskaźniki będą bardzo mile widziane :)

xkcd
źródło
Proszę to zanotować Superużytkownik nie jest bezpłatną usługą pisania skryptów / kodu. Jeśli powiesz nam, co próbowałeś do tej pory (dołącz skrypty / kod, którego już używasz) i gdzie utknąłeś, możemy spróbować pomóc w określonych problemach. Powinieneś także przeczytać Jak mogę zadać dobre pytanie? .
DavidPostill
@DavidPostill - Mam dobry pomysł, jak to zrobić w Pythonie lub innym języku skryptowym / programistycznym, w zasadzie jest to problem z ustawieniem skrzyżowania. Problem polega na tym, jak to zrobić w programie Excel. W tym celu próbowałem wszystkich moich googlefu i stackoverflow, większość ludzi wydaje się sugerować funkcje WYSZUKAJ.PIONOWO i INDEKS, ale nie widzę, jak można to zrobić za ich pomocą. Więc utknąłem na starcie.
xkcd

Odpowiedzi:

1

Aby to zadziałało, musisz użyć wiersza pomocnika. Skonfigurowałem przykład taki sam, jak ten, który wysłałeś. W arkuszu 1 mam twoją pierwszą listę, arkusz2 twoją drugą, a arkusz3 będzie zawierał pożądane wyniki.

Dla arkusza 1: enter image description here Ta formuła wygląda w arkuszu2 dla dopasowania. Jeśli pasuje, wyświetla indeks, tworząc zamówienie.

Formuła dla kolumny A musi być inna, ponieważ jest pierwszą:

enter image description here

Po wykonaniu tej czynności mamy liczby poniżej kolumn, w których znajduje się dopasowanie i zamówienie.

Na koniec musimy po prostu przechwycić wartości za pomocą liczby, więc w arkuszu3 ustawimy liczby w górnym wierszu, a następnie skorzystamy z tej formuły, aby wyszukać nazwy:

enter image description here

Te z błędem w nich oznaczają po prostu, że znaleziono najwyższy numer, więc oczywiście odrzuć te.

Eric F
źródło
Czy zauważyłeś, że nie pokazujesz tego samego wyniku, którego szuka OP?
fixer1234
@ fixer1234 Jak obliczasz? Pokazałem, jak pokazać wspólne kolumny, które chce. Potrafi bardzo łatwo dostosować to rozwiązanie do miejsca, w którym chce mieć kolumny. Jest on pokazany jako przykład do naśladowania, aby uzyskać właściwą koncepcję.
Eric F
Skupiłem się na tym, co pokazałeś jako wynik. Zazwyczaj, jeśli odpowiedź pokazuje wyniki oprócz rozwiązania formuły, wyniki służą do zilustrowania, że ​​rozwiązanie działa zgodnie z oczekiwaniami. Zwykle wyniki są wyświetlane jako część zrzutu ekranu, który pokazuje dane źródłowe, a dane dokładnie podążają za przykładem w pytaniu. Jeśli odpowiedź opisuje bardziej ogólny przypadek i używa różnych danych źródłowych, użyte dane są pokazane w odpowiedzi, więc wyniki mają kontekst. Jeśli nie są wyświetlane żadne dane źródłowe, zakłada się, że to, co użyłeś, pasuje do przykładu w pytaniu. (ciąg dalszy)
fixer1234
Celem pytania w tym przykładzie było uzyskanie pamięci i procesora, które były dwiema wspólnymi wartościami. Rezultatem jest sieć i procesor, co nie jest tym, czego powinieneś użyć przy użyciu danych źródłowych pytania, jeśli twoja formuła działa. Jeśli twoja formuła jest poprawna, ale zacząłeś od różnych danych źródłowych, twoja odpowiedź jest bardzo myląca bez uwzględniania tych danych (i zauważ, że wyniki mają być różne i dlaczego).
fixer1234
@EricF - Tak, to rozwiązanie nie działa w moich arkuszach. Dostaję kolumny, których nie chcę. Ponadto, czy możesz umieścić formuły w tekście, a nie w obrazach, nie można ich kopiować / wklejać tak, jak są teraz i zwiększają ryzyko błędów.
xkcd