Kategorie szkoleń | Egzaminy | Kontakt
  • 2
  • 0
  • 1

Jest taki zbiór:

    a                b

1 oko          piwne

2 nos           długi

3 oko          zielone

4 nos           krótki

5 oko           niebieskie

I mamy tysiące linii.

Co zrobić, aby posortować to na kolumny wg typologii w kolumnie (a), czyli coś jak taki wielokrotny vlookup?

   a                     b

piwne               długi

zielone             krótki

niebieskie

Dzięki.
Włodek.

Włodzimierz_Piekut
  • Zapytał
  • @ Włodzimierz_Piekut | 11.07.2019
    • 1
    • 0
    • 0
Komentarze (2)
znalazłem rozwiązanie bez vba.
Jeśli mamy w jednej kolumnie A jakieś dane i występują one w cyklicznych odstępach, tzn. np 1 wiersz to nazwisko, potem imię, potem adres i np. czwarty wiersz email... można zastosować formułe:
=PRZESUNIĘCIE($A$1;(WIERSZ(A1)*x)-n;0) gdzie x odpowiada ilości typów danych danych: nazwisko, imię.... a n to wektor przesunięcia do góry,
wklejamy formułe np. w c1 i
jesli n=3 to uzyskujemy nazwisko, przeciągamy taką komórkę z formułą z c1 poniżej aż wartości uzyskają 0
potem n=2 mamy imię
etc...
Skomentował : @ Włodzimierz_Piekut ,26.07.2019
  • 1
  • 0
  • 0
Proponuję zamiast PRZESUNIĘCIE użyć funkcji INDEKS - ta pierwsza jest jedną z tzw. funkcji ulotnych, czyli przeliczających się przy każdej zmianie w excelu (nawet w innym, równolegle otwartym skoroszycie, do którego formuła w ogóle się nie odnosi). Przy tysiącach wierszy będzie to powodować masę niepotrzebnych, dodatkowych obliczeń, co może prowadzić do widocznej utraty wydajności excela.
Skomentował : @ Mirosław_Janiak ,28.07.2019
  • 1
  • 7
  • 1
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedzi (2)

  • 1

Power Query?

let
    Źródło = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    #"Pogrupowano wiersze" = Table.Group(Źródło, {"Kolumna1"}, {{"Kolumna2", each _[Kolumna2], type list}}),
    #"Tabela z kolumn" = Table.FromColumns(#"Pogrupowano wiersze"[Kolumna2], #"Pogrupowano wiersze"[Kolumna1])
in
    #"Tabela z kolumn"

 

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 12.07.2019
    • 1
    • 7
    • 1
  • 0

Jeżeli zależy Ci na rozwiązaniu formułowym, to proponuję zrobić tak:

1) Skopiuj kolumnę A w osobne miejsce.

2) Usuń duplikaty, opcjonalnie posortuj, a następnie wklej z transpozycją w miejsce docelowe jako nagłówki kolumn (np. do D1)

3) W D2 wprowadź poniższą formułę, zatwierdź przez ctrl+shift+enter i skopiuj w dół i w prawo na resztę kolumn:

=JEŻELI.BŁĄD(INDEKS($B$1:$B$5;MIN.K(JEŻELI($A$1:$A$5=D$1;WIERSZ($A$1:$A$5));WIERSZ($A1)));"")

 

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 28.07.2019
    • 1
    • 7
    • 1