Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 67396 Skopiuj do schowka Wiersz jako osobna kolumna
Autor Wiadomość
gharalion
świeżak


Wersja: Win Office 2016
Posty: 1
Wysłany: 28-02-2020, 15:34   Wiersz jako osobna kolumna

Cześć,
pracuję z tabelą przestawną, w której wypisani są właściciele/współwłasciciele rożnych działek, dla których przygotowuję umowy na wejścia w teren.
Stworzyłem sobie tabelę przestawną, którą załączam jako przykład, a która niezbyt nadaje się do moich celów
Najlepsza dla mnie byłaby tabela, gdzie wierszem byłby numer działki, natomiast w kolejnych kolumnach pojawiały by się informację na temat kolejnych współwłaścicieli działek. Czyli stworzyć tak jakby podkolumny.
Siedzę już nad tym trochę i nie umiem sobie dać z tym rady - dalibyście radę mi pomóc?

PRZYKŁAD.xlsx
Pobierz Plik ściągnięto 23 raz(y) 226.29 KB

ID posta: 382709 Skopiuj do schowka
 
 
bodek 


Wersja: Win Office 2019
Pomógł: 969 razy
Posty: 2789
Wysłany: 29-02-2020, 09:34   

Nie da się osiągnąć efektu jaki pokazałeś (za pomocą TP).
TP nie buduje wielowierszowych nagłówków górnych z danych tekstowych umieszczonych w polu kolumny. Ponadto, nie agregujesz za pomocą TP żadnych liczb, zatem praktycznie utworzysz tylko jeden wiersz nagłówka górnego.
_________________
Szkolenia z Excela, Power Query, Power Pivot, wizualizacje danych w Excelu, szkolenia online
ID posta: 382745 Skopiuj do schowka
 
 
DwaNiedźwiedzie 
Excel Expert



Pomógł: 248 razy
Posty: 625
Wysłany: 01-03-2020, 15:26   

Taki układ możesz osiągnąć przy pomocy Power Query - minus jednak byłby taki, że musiałbyś zostawić nagłówek swojej tabeli (wiersze 24:25), wynik zapytania wrzucić od wiersza 26., a sam 26. ukryć.
Kod:
let
    Źródło = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    #"Przefiltrowano wiersze" = Table.SelectRows(Źródło, each ([Nr_dz] <> null)),
    #"Posortowano wiersze" = Table.Sort(#"Przefiltrowano wiersze",{{"Nr_dz", Order.Ascending}, {"Nazwisko", Order.Ascending}}),
    #"Usunięto inne kolumny" = Table.SelectColumns(#"Posortowano wiersze",{"Nr_dz", "Obreb", "KW", "Nazwisko", "Ulica", "Miasto", "udzial", "pesel", "nip", "regon"}),
    #"Pogrupowano wiersze" = Table.Group(#"Usunięto inne kolumny", {"Nr_dz", "Obreb", "KW"}, {{"agr", each Table.RemoveColumns(_, {"Nr_dz","Obreb","KW"}), type table}}),
    #"Dodano kolumnę lista" = Table.AddColumn(#"Pogrupowano wiersze", "lista", each Table.Transpose(Table.FromList(List.Combine(Table.ToColumns(Table.Transpose([agr])))))),
    #"Dodano kolumnę kolumny" = Table.AddColumn(#"Dodano kolumnę lista", "kolumny", each Table.ColumnNames([lista])),
    #"Usunięto kolumny1" = Table.RemoveColumns(#"Dodano kolumnę kolumny",{"agr", "kolumny"}),
    #"Rozwinięty element lista" = Table.ExpandTableColumn(#"Usunięto kolumny1", "lista", List.Distinct(List.Combine(#"Dodano kolumnę kolumny"[kolumny])))
in
    #"Rozwinięty element lista"

Edit: Poprawiłem krok usuwania zbędnych kolumn. We wzorcowym pliku gharaliona ostatnia (Q, ta z formułą określającą płeć) nie ma nazwy, więc po zamianie całego zakresu na tabelę (ctrl+T) zostaje jej nadana domyślna "Kolumna1", a ja bez ostrzeżenia przezwałem ją sobie na "płeć". W obecnej wersji zmieniłem usuwanie zbędnych kolumn na pozostawienie potrzebnych, więc wspomniana kolumna przestaje być istotna.
Ostatnio zmieniony przez DwaNiedźwiedzie 03-03-2020, 23:40, w całości zmieniany 1 raz  
ID posta: 382820 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Wersja: Win Office 365
Pomógł: 880 razy
Posty: 3556
Wysłany: 03-03-2020, 22:55   

DwaNiedźwiedzie, uważam podobnie jak Ty, że PQ tu się sprawdzi :mrgreen:
A jak pójdziemy na drobne kompromisy to i prawie nagłówki się będą zagadzały - bez ich ukrywania (na marginesie, można ich nie wyświetlać "odptaszając" odpowiedni checkbox w menu Projektowania Tabeli).
Twój kodzik u mnie nie do końca działa (Table.FromList sypie błędami - przypomniało mi się dlaczego tak rzadko go używam ;-) ). Może warto zamienić na Table.FromColumns?
Poniżej dwa moje (podobne ale jednak inne) kody
Sposób1
Kod:
let
    fxZrob = (t as table) =>
        let
            #"Added Index" = Table.AddIndexColumn(t, "Indeks", 0, 1),
            #"Integer-Divided Column" = Table.TransformColumns(#"Added Index", {{"Indeks", each Text.From(Number.IntegerDivide(_, 7)+1), Int64.Type}}),
            #"Merged Columns" = Table.CombineColumns(Table.TransformColumnTypes(#"Integer-Divided Column", {{"Indeks", type text}}, "pl-PL"),{"Atrybut", "Indeks"},Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Scalone"),
            #"Pivoted Column" = Table.Pivot(#"Merged Columns", List.Distinct(#"Merged Columns"[Scalone]), "Scalone", "Wartość")
    in
            #"Pivoted Column",


    Source = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    #"Removed Other Columns" = Table.SelectColumns(Source,{"Nr_dz", "KW", "Obreb", "Nazwisko", "Ulica", "Miasto", "udzial", "pesel", "nip", "regon"}),
    #"Replaced Value" = Table.ReplaceValue(#"Removed Other Columns",null,"",Replacer.ReplaceValue,{"Nazwisko", "Ulica", "Miasto", "udzial", "pesel", "nip", "regon"}),
    #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Replaced Value", {"Nr_dz", "KW", "Obreb"}, "Atrybut", "Wartość"),
    #"Grouped Rows" = Table.Group(#"Unpivoted Other Columns", {"Nr_dz", "KW", "Obreb"}, {{"Liczność", each Table.RowCount(_), type number}, {"tbl", each fxZrob(_), type table}}),
    Custom2 = Table.Combine(#"Grouped Rows"[tbl])
in
    Custom2


Sposób2
Kod:
let
    Source = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Ident_dz", type any}, {"Nr_dz", Int64.Type}, {"Obreb", Int64.Type}, {"Pow_ew", Int64.Type}, {"Jedn_rej", type text}, {"KW", Int64.Type}, {"Nazwisko", type text}, {"Rodzice", type any}, {"Ulica", type text}, {"Miasto", type text}, {"udzial", type number}, {"Typ_osoby", type text}, {"pesel", Int64.Type}, {"nip", Int64.Type}, {"regon", Int64.Type}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Changed Type",{"Nr_dz", "KW", "Obreb", "Nazwisko", "Ulica", "Miasto", "udzial", "pesel", "nip", "regon"}),
    ColNames = List.Skip(Table.ColumnNames(#"Removed Other Columns"), 3),
    #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"Nr_dz", "KW", "Obreb"}, {{"Liczność", each Table.RowCount(_), type number}, {"tbl", each Table.SelectColumns(_, ColNames), type table [Nazwisko=text, Ulica=text, Miasto=text, udzial=number, pesel=number, nip=number, regon=number]}}),
    AddNst = Table.AddColumn(#"Grouped Rows", "Niestandardowe", each Table.FromRows({{[Nr_dz],[KW],[Obreb]} & List.Combine(Table.ToRows([tbl]))} ) ),
    LCol = List.Repeat({ColNames}, List.Max(AddNst[Liczność])),
    LNr = List.Transform({1..List.Max(AddNst[Liczność])}, each List.Repeat({" " & Text.From(_)}, 7)),
    Custom2 = Table.FromColumns({LCol,LNr}),
    #"Added Custom1" = Table.AddColumn(Custom2, "LZip", each List.Transform(List.Zip({[Column1],[Column2]}), each Text.Combine(_))),
    Custom3 = {"Nr_dz", "KW", "Obreb"} & List.Combine(#"Added Custom1"[LZip]),
    FakeTbl = Table.FromRows({Custom3}),
    Custom1 = FakeTbl & Table.Combine(AddNst[Niestandardowe]),
    #"Promoted Headers" = Table.PromoteHeaders(Custom1, [PromoteAllScalars=true])
in
    #"Promoted Headers"
_________________
Zlecenia, konsultacje, doradztwo i szkolenia z Power Query, Power BI i Excela - Raporty, Analizy, Projekty
Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 383020 Skopiuj do schowka
 
 
DwaNiedźwiedzie 
Excel Expert



Pomógł: 248 razy
Posty: 625
Wysłany: 04-03-2020, 00:05   

Oprócz problemu z ostatnią kolumną (vide edit do mojego poprzedniego postu) moja kwerenda u mnie działa bez problemu, za to Twoje rozwlekają się na prawie 2,2k kolumn, zostawiają pusty wiersz pod danymi, a druga dodatkowo nie przenosi udziału, nipu, peselu i regonu :D Zapewne to kwestia nieco innego przerobienia danych źródłowych na tabelę, więc żeby nie było wątpliwości wrzucam plik poglądowy - i jedynie zupełnym przypadkiem tylko mojemu rozwiązaniu dodałem ładne formatowanie, że tylko wziąść i braść ;)

PRZYKŁAD.xlsx
Pobierz Plik ściągnięto 9 raz(y) 540.62 KB

ID posta: 383022 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Wersja: Win Office 365
Pomógł: 880 razy
Posty: 3556
Wysłany: 04-03-2020, 00:53   

Niedźwiadki, "wzięłem i zabrołem" :mrgreen:
Masz racje.....trochę odmienne mieliśmy tabele źródłowe.....poprawiłem kody.
Kwestią gustu jest co się komu będzie podobało (a mi się Twoje podoba)...no i wybór rozwiązania trochę chyba zależy też od wielkości danych źródłowych w tym sensie że być może będziemy chcieli filtrować wyniki po którejś z kolumn (a może nie?)
A Table.FromList nie lubię z często ma problemy z danymi które do niej wrzucamy - spróbuj np zamienić któryś nip-ów w tabeli źródłowej na liczbę (np n2 na 2). Table.FromColumns nie ma takich zacięć :mrgreen:

PRZYKŁAD_DNBS.xlsx
Pobierz Plik ściągnięto 14 raz(y) 235.26 KB

_________________
Zlecenia, konsultacje, doradztwo i szkolenia z Power Query, Power BI i Excela - Raporty, Analizy, Projekty
Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 383023 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe