Excel - wartości przestawne w jednej komórce (jako wartość oddzielona przecinkami)

11

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.

Chris
źródło
Aby to zrobić, potrzebujesz zapytania SQL. Czy możesz wyeksportować do bazy danych z jakimś opisem?
Rhys Gibson

Odpowiedzi:

23

Oto rozwiązanie tabeli nieobsługiwanej przez VBA, która wykorzystuje tylko kilka formuł.

  1. 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ć).

  2. 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)

  3. 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”)

  4. Powinieneś być teraz w stanie filtrować według kolumny D tylko dla „zmienionych” wartości.

Dobre polowanie!

F106dart
źródło
1
C1  C2  C3          C4
a   1   1   
a   2   2,1 
a   3   3,2,1   
a   5   5,3,2,1 
a   3   3,5,3,2,1   New
b   11  11  
b   13  13,11   
b   11  11,13,11    
b   14  14,11,13,11 New
c   22  22  
c   24  24,22       New
f   25  25  
f   11  11,25   
f   10  10,11,25    New
  1. W kolumnie 3 (oznacza C3) użyj formuły = JEŻELI (A2 = A1, B2 i „,” i C1, B2), zaczynając od komórki C2 i przeciągnij ją w dół.
  2. w C4 (oznacza kolumnę 4) użyj formuły = JEŻELI (A2 = A3, „”, „zmieniono”), rozpoczynając od komórki D2 i przeciągnij ją w dół.
  3. Filtruj Nowy na C4 (oznacza col4), a otrzymasz pożądany wynik.
Arghya Tarafdar
źródło
0

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ę

Conete_Cristian
źródło
za dużo do zrobienia ... Rozwiązanie F106dart jest bardziej eleganckie.
ihightower