Mam dane, które wyglądają tak:
Id | Loc1 | Loc2 | Loc3 | Loc4
---+------+------+------+-----
1 | NY | CA | TX | IL
2 | WA | OR | NH | RI
I chcę przekonwertować to na to:
Id | LocNum | Loc
---+--------+----
1 | 1 | NY
1 | 2 | CA
1 | 3 | TX
1 | 4 | IL
2 | 1 | WA
2 | 2 | OR
2 | 3 | NH
2 | 4 | RI
Jak najłatwiej to zrobić w programie Excel 2007?
Odpowiedzi:
Możesz to zrobić za pomocą tabeli przestawnej.
Powinieneś zobaczyć nowy arkusz zawierający wszystkie dane w tabeli przestawnej, transponowane tak, jak szukasz.
Technologie Datapig zapewniają instrukcje krok po kroku, które są w rzeczywistości bardziej skomplikowane niż potrzebujesz - jego przykład transponuje tylko część zbioru danych i wykorzystuje technikę przestawną w połączeniu z TextToColumns . Ale ma wiele zdjęć.
Pamiętaj, że tabela przestawna grupuje dane. Jeśli chcesz go rozgrupować, jedynym sposobem na to jest skopiowanie tabeli przestawnej i „wklejenie specjalne” jako wartości. Następnie możesz wypełnić puste pola za pomocą następującej techniki: http://www.contextures.com/xlDataEntry02.html
źródło
Jeśli twoje dane nie są tabelą przestawną programu Excel, ale tylko danymi, możesz chcieć ją „cofnąć” za pomocą prostego kodu VBA. Kod zależy od dwóch nazwanych zakresów, źródłowego i docelowego. Źródło to dane, które chcesz cofnąć przestawienie (z wyjątkiem nagłówków kolumn / wierszy, np. NY-RI w próbce), a Obiekt docelowy to pierwsza komórka, w której chcesz umieścić wynik.
źródło
Zbudowałem dodatek, który pozwoli ci to zrobić, a to ułatwi dostosowanie się do różnych sytuacji. Sprawdź to tutaj: http://tduhameau.wordpress.com/2012/09/24/the-unpivot-add-in/
źródło
Do tej pory najlepiej wymyśliłem:
To działa, ale muszę wygenerować identyfikator i LocNum ręcznie. Jeśli istnieje bardziej zautomatyzowane rozwiązanie (oprócz pisania makra), daj mi znać w osobnej odpowiedzi.
źródło
W programie Excel 2010 jest całkiem fajne rozwiązanie, wystarczy trochę zagrać przy stole przestawnym.
Utwórz tabelę przestawną na podstawie danych przy użyciu następujących ustawień:
źródło
Jeśli wymiary twoich danych są takie, jak w przykładzie podanym w pytaniu, to następujący zestaw formuł używających OFFSET powinien dać ci wymagany wynik:
Zarozumiały
są w zakresie A2: E3, a następnie wprowadź
w F2, powiedzmy, i
w G2, powiedzmy, i
powiedzmy w H2.
Następnie skopiuj te formuły w miarę potrzeb.
Jest to najłatwiejsze, czyste, wbudowane rozwiązanie do formuł, jakie mogę wymyślić.
źródło
Wygląda na to, że masz kolumnę „loc” (o czym świadczy Twoja pierwsza odpowiedź), a teraz potrzebujesz pomocy w uzyskaniu pozostałych dwóch kolumn.
Pierwszą opcją jest po prostu wpisanie pierwszych kilku (powiedzmy 12) wierszy w tych kolumnach i przeciągnięcie w dół - myślę, że Excel robi w tym przypadku właściwą rzecz (nie mam programu Excel na tym komputerze, aby to sprawdzić na pewno).
Jeśli to nie zadziała, lub jeśli chcesz czegoś bardziej programistycznego, spróbuj użyć funkcji row (). Coś w rodzaju „= Floor (row () / 4)” dla kolumny ID i „= mod (row (), 4) +1” dla kolumny LocNum.
źródło
Istnieje parametryczne narzędzie do konwersji VBA do odwracania lub odwracania przestawnych danych z powrotem do tabeli bazy danych, zobacz
http://www.spreadsheet1.com/unpivot-data.html
źródło
Oto fajne narzędzie do rozpinania, normalizowania tabeli przestawnej.
Normalisieren von Pivot Tabellen
Mam nadzieję, że to pomoże.
źródło
Odpowiedź @DaveParillo jest najlepszą odpowiedzią na tabelę z pojedynczą kartą. Chciałem tutaj dodać dodatki.
W przypadku wielu kolumn poprzedź kolumny przestawne
Ta metoda nie działa.
W YouTube można przestawić proste dane, takie jak pytanie
To jest film na YouTube pokazujący, jak to zrobić w prosty sposób. Pominąłem część dotyczącą dodawania skrótu i użyłem skrótu @devuxer, który jest w odpowiedzi DaveParillo.
https://www.youtube.com/watch?v=pUXJLzqlEPk
źródło
To jest o wiele prostsze niż to. Wystarczy kliknąć opcję „Transponuj” w „Wklej specjalnie ...”, aby uzyskać żądaną transpozycję.
źródło