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: 68188 Skopiuj do schowka Zapytanie Power Query - znajdywanie wartości w tabeli
Autor Wiadomość
xfish 
Excel Expert



Wersja: Win Office 2013
Pomógł: 351 razy
Posty: 1119
Wysłany: 22-05-2020, 11:05   Zapytanie Power Query - znajdywanie wartości w tabeli

Potrzebuję stworzyć zapytanie z zewnętrznego Pliku Excela ale mam jeden problem.

W załączniku w Arkusz1 mam układ danych, na którym pracuję.
Są to dwie tabele danych (nie sformatowane jako tabele), potrzebuję wyciągnąć drugą tabelę i otrzymać to co jest w Arkusz2.

Problem jest taki, że te tabele pojawiają się w różnych miejscach arkusza.
To nie zawsze będą dwa wiersze puste na górze a druga tabela nie zawsze zacznie się w kolumnie E.
W jaki sposób skasować kolumny na lewo od tej która zawiera komórkę "Kolumna X".
Podobnie z wierszami: skasować wszystkie do wiersza zawierającego komórkę "Kolumna X".

PowerQuery.xlsx
Pobierz Plik ściągnięto 21 raz(y) 9.75 KB

_________________
Pozdrawiam
xFish
ID posta: 387734 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2385 razy
Posty: 7806
Wysłany: 22-05-2020, 11:37   

xfish, a możesz się odnieść do nazw kolumn?
Jeśli tak to zapytanie może być takie:
Kod:
let
    Źródło = Excel.Workbook(File.Contents("C:\Users\XXXXXXXX\Downloads\PowerQuery.xlsx"), null, true),
    Arkusz1_Sheet = Źródło{[Item="Arkusz1",Kind="Sheet"]}[Data],
    #"Nagłówki o podwyższonym poziomie" = Table.PromoteHeaders(Arkusz1_Sheet, [PromoteAllScalars=true]),
    #"Usunięto inne kolumny" = Table.SelectColumns(#"Nagłówki o podwyższonym poziomie",{"Kolumna ruchoma", "KR2", "KR3"}),
    #"Usunięto puste wiersze" = Table.SelectRows(#"Usunięto inne kolumny", each not List.IsEmpty(List.RemoveMatchingItems(Record.FieldValues(_), {"", null})))
in
    #"Usunięto puste wiersze"
_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 387735 Skopiuj do schowka
 
 
xfish 
Excel Expert



Wersja: Win Office 2013
Pomógł: 351 razy
Posty: 1119
Wysłany: 22-05-2020, 12:29   

Teoretycznie mógłbym odnieść się do nazw kolumn (chociaż wolałbym żeby dało się określić nr kolumny w której jest szukany nagłówek i począwszy od niej pozostawić x kolumn)

Innym problemem, który powoduje, że Twojego sposobu nie mogę użyć (a o czym nie pomyślałem tworząc plik) jest, że powyżej tabeli o którą mi chodzi nie są całkowicie puste wiersze. Mogą się zdarzyć jakieś wypełnione komórki.
_________________
Pozdrawiam
xFish
ID posta: 387741 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Wersja: Win Office 365
Pomógł: 886 razy
Posty: 3583
Wysłany: 22-05-2020, 13:20   

xfish, parę pytań
1) Czy pierwsza tabela jest zawsze od kolumny A? (inaczej, czy nie ma czegoś na lewo od pierwszej tabeli - np jakiś tekst powyżej niej i dodatkowo na lewo od pierwszej kolumny pierwsze tabeli)
2) Czy nagłówki obu tabel są zawsze takie same? ( i jakie to nagłówki)
3) Czy obie tabele zaczynają się w tym samym wierszu?
4) Czy liczba kolumn w tabelach jest stała? (ile najmniej kolumn mogą mieć poszczególne tabele?)
_________________
Zlecenia, konsultacje, doradztwo i szkolenia z Power Query, Power BI i Excela - Raporty, Analizy, Projekty
Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 387745 Skopiuj do schowka
 
 
xfish 
Excel Expert



Wersja: Win Office 2013
Pomógł: 351 razy
Posty: 1119
Wysłany: 22-05-2020, 14:07   

1. Zawsze w A ale nie w A1 i powyżej może coś być (ale nie na lewo)
2. Tak (przyjmijmy to co w pliku)
3. Tak
4. Interesująca mnie druga tabela ma zawsze stałą ilość kolumn, pierwsza - różnie

Spróbuję jeszcze coś dopisać, bo w zasadzie większość rzeczy działa mi jak należy.
Obecnie mam użyte coś tego typu
= Table.RemoveFirstN(tabela, each [Column10] <> "Ruchoma kolumna")
później Table.PromoteHeaders i wybieram kolumny przez Table.SelectColumns podając nazwy, które mnie interesują.

W ostatnim czasie "Ruchoma kolumna" pojawia się w [Column9] albo [Column11] i wtedy cała reszta się sypie, bo Table.RemoveFirstN kasuje mi wszystko.
Potrzebuję krok, który sprawdzi mi czy w [Column10] jest "Ruchoma kolumna" i dopiero gdy TRUE wykonuje Table.RemoveFirstN gdy FALSE sprawdza [Column9] itd.
Na teraz taki sposób by mi wystarczył.
_________________
Pozdrawiam
xFish
ID posta: 387749 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Wersja: Win Office 365
Pomógł: 886 razy
Posty: 3583
Wysłany: 22-05-2020, 14:19   

xfish, poniżej masz kod do najbardziej ogólnego rozwiązania tzn
- nad tabelami dowolne wpisy
- nagłówki tabel nie muszą być w tym samym wierszu
- miejsce pierwszych kolumn obu tabel dowolne
- na prawo od drugiej tabeli mogą być inne wpisy (ale nie zaraz obok ostatniego prawidłowego nagłówka drugiej tabeli)

let
   Source = Excel.Workbook(File.Contents("Twoja ścieżka do pliku"), null, true),
   #"Filtered Rows" = Table.SelectRows(Source, each ([Kind] = "Sheet")),
   Arkusz1_Sheet = #"Filtered Rows"{[Item = "Twój Arkusz", Kind = "Sheet"]}[Data],
   #"Added Custom" = Table.AddColumn(
      Arkusz1_Sheet, 
      "Niestandardowe", 
      each List.Contains(Record.ToList(_), "Kolumna ruchoma")
   ),
   RemoveFirstNRows = Table.RemoveFirstN(#"Added Custom", each [Niestandardowe] <> true),
   #"Removed Columns" = Table.RemoveColumns(RemoveFirstNRows, {"Niestandardowe"}),
   #"Promoted Headers" = Table.PromoteHeaders(#"Removed Columns", [PromoteAllScalars = true]),
   Rec = [
      CN = Table.ColumnNames(#"Promoted Headers"), 
      Pos = List.PositionOf(CN, "Kolumna ruchoma"), 
      Headers = List.FirstN(List.Skip(CN, Pos), each not Text.StartsWith(_, "Column"))
   ],
   Table = Table.SelectColumns(#"Promoted Headers", Rec[Headers])
in
   Table
_________________
Zlecenia, konsultacje, doradztwo i szkolenia z Power Query, Power BI i Excela - Raporty, Analizy, Projekty
Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 387750 Skopiuj do schowka
 
 
xfish 
Excel Expert



Wersja: Win Office 2013
Pomógł: 351 razy
Posty: 1119
Wysłany: 22-05-2020, 18:36   

Super pomysł z tą dodatkową kolumną.
Działa. Musiałem kilka poprawek w moim pliku nanieść ale jakoś dałem radę i jest ok.
_________________
Pozdrawiam
xFish
ID posta: 387760 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