Excel - wartości przestawne w jednej komórce (jako wartość oddzielona przecinkami)
Mam dwie kolumny danych:
Dostawca1 | Produkt 1 Dostawca1 | Produkt2 Dostawca1 | Produkt4 Dostawca1 | Produkt7 Dostawca2 | Produkt3 Dostawca2 | Produkt5
Chcę obrócić się wokół dostawcy i podać listę produktów w jednej komórce, oddzielając je przecinkami, np
Dostawca1 | Produkt 1, Produkt 2, Produkt 4, Produkt 7 Dostawca2 | Produkt3, Produkt5
Jest około 1000 dostawców i 0 <produkty <= 10.
Moje obecne obejście obejmuje używanie tabel przestawnych, zapisywanie jako CSV itp. I jest bardzo nieuporządkowane. Rozwiązanie inne niż VBA byłoby niesamowite.
microsoft-excel
Chris
źródło
źródło
Odpowiedzi:
Oto rozwiązanie tabeli nieobsługiwanej przez VBA, która wykorzystuje tylko kilka formuł.
Najpierw użyłem „Tekst do kolumn”, aby podzielić dane przy tym ograniczniku „potoku” (linia pionowa) na 2 kolumny; kolumna „Dostawca” i kolumna „Produkt”. Te znajdują się odpowiednio w kolumnach A i B. (W Twoim poście wydaje się, że są one połączone w jedną kolumnę, więc najpierw je rozdzieliłem. Nie musisz tego robić).
W kolumnie C, którą nazwałem kolumną „Łączenie”, użyłem tej formuły, zaczynając od komórki C2 i kopiując do końca: = JEŻELI (A2 = A1, C1 i „,” i B2, A2 i „|” i B2)
W kolumnie D, którą nazwałem „DostawcaChangesAtNextLine?” Użyłem tej formuły (zaczynając od D2 i kopiując do końca): = JEŻELI (A2 = A3, „”, „Zmieniono”)
Powinieneś być teraz w stanie filtrować według kolumny D tylko dla „zmienionych” wartości.
Dobre polowanie!
źródło
źródło
Dodaj kolumnę C jako licznik *: = LICZ.JEŻELI (A 2 $: 528 USD, A2)
Dodaj D jako przyrost * = JEŻELI (A2 = A1, D1 + 1, 1)
Dodaj E do konkatenacji *: = JEŻELI (A1 = A2, E1 & "," I B2, B2)
Dodaj F, aby zachować tylko ostatnią konkatację : = JEŻELI (ORAZ (C2 = D2, E4 <> ""), E4, "")
Uwaga: dodaj komórkę 2 i pociągnij w dół (lub kliknij dwukrotnie w prawym rogu), aby zastosować formułę dla wszystkich komórek w kolumnie
skopiuj i wklej jako wartości w innym arkuszu, sortuj malejąco według F, usuń resztę
źródło