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: 55513 Skopiuj do schowka Sort. w jednej kolumnie na podstawie trzech innych kolumn
Autor Wiadomość
puma1990
Fan Excela


Posty: 66
Wysłany: 06-01-2017, 15:37   Sort. w jednej kolumnie na podstawie trzech innych kolumn

Witam :-)

Na wstępie zaznaczę, że do zbudowania excela posłużono się excelem z tej strony, którego autorem jest DarcioR.

Wg pierwszego posta DarcioR w jego temacie należało utworzyć kolumnę, która miała sortować dynamicznie dane z jednej innej kolumny (moja formuła mogłaby mu pomóc, lecz założenie zadania zmienił w kolejnym poście w swoim temacie).
Wg mojego zadania, sortowanie danych ma nastąpić z trzech innych kolumn.

Kolumny nieposortowane są w kolumnach C, E i G.

Wg mojej wersji wykonano to zadanie za pomocą kolumny pomocniczej J, w której zebrano wszystkie elementy z kolumn nieposortowanych, w kolejności C, E i G. Później w kolumnie M posortowano wszystkie dane z kolumny J.

Ważne:
- wartości w kolumnie M mogą się powtarzać,
- wartości w kolumnie M nie mogą zawierać pustych elementów kolumn C, E i G,
- kolumny C, E, G i M będą zawsze rozpoczynały się w tym samym wierszu,
- kolumny C, E, G mogą kończyć się na poziomie różnych wierszy.

Jak wykonać zadanie bez zastosowania kolumny pomocniczej J, aby uzyskać takie same wyniki, które są w kolumnie M?

Bardzo proszę o pomoc :-)

ex10a1.xlsx
Pobierz Plik ściągnięto 15 raz(y) 15.93 KB

ID posta: 312323 Skopiuj do schowka
 
 
Maciej Gonet
Excel Expert


Pomógł: 751 razy
Posty: 2546
Wysłany: 07-01-2017, 17:52   

Nie bardzo rozumiem, jakiego wyniku autor oczekuje
puma1990 napisał/a:
Jak wykonać zadanie bez zastosowania kolumny pomocniczej J, aby uzyskać takie same wyniki, które są w kolumnie M?
W kolumnie M wyniki nie są posortowane, ani nie są usunięte duplikaty, są tylko usunięte puste komórki. A w treści cały czas jest mowa o sortowaniu.
Jeśli chodzi o połączenie 3 kolumn w jedną, można to zrobić formułami, ale wygodnie jest użyć małej tabeli pomocniczej z długościami poszczególnych segmentów. Można na siłę zrobić bez tej tabelki, ale wtedy formuły będą dłuższe i mniej czytelne. Moja propozycja jest taka:
Przygotować tabelkę pomocniczą wg schematu w komórkach A6:A9. W ostatniej komórce jest całkowita długość ciągu komórek, której nadamy nazwę n. Następnie tworzymy formuły nazwane:
Kod:
wn : =WIERSZ(ADR.POŚR("1:"&n))
trzykol : = WYBIERZ(PODAJ.POZYCJĘ(wn;Sortowanie!$A$6:$A$9+1); INDEKS(Sortowanie!$C$6:$C$42; N(wn)); INDEKS(Sortowanie!$E$6:$E$42; N(JEŻELI(N(wn)-Sortowanie!$A$7>0;N(wn)-Sortowanie!$A$7;1))); INDEKS(Sortowanie!$G$6:$G$42; N(JEŻELI(N(wn)-Sortowanie!$A$8>0;N(wn)-Sortowanie!$A$8;1))))
Formuła trzykol reprezentuje tablicę łączącą 3 kolumny danych, z tym że puste komórki zostają w niej zamienione na zera.
Dalej jeśli chcemy tylko usunąć te zera (po pustych komórkach), należy zdefiniować formułę:
Kod:
wakt : =MIN.K(JEŻELI(trzykol<>0;wn;"");wn)
Nie jest to konieczne, ale tak wygodniej. Wynik jak w kol M zwróci formuła:
Kod:
=JEŻELI.BŁĄD(INDEKS(trzykol;N(wakt));"")
To jest formuła, która zwraca od razu całą tablicę, więc trzeba zaznaczyć miejsce, a potem zatwierdzić tablicowo (CSE).
Jeśli natomiast wynik ma być posortowany i bez duplikatów, to można użyć formuły szbilla62 z innego wątku i będzie to coś takiego:
Kod:
=JEŻELI.BŁĄD(INDEKS(trzykol;INDEKS(WYST.NAJCZĘŚCIEJ.TABL(JEŻELI.BŁĄD(PODAJ.POZYCJĘ(wn;MACIERZ.ILOCZYN((trzykol<>0)*(trzykol>=TRANSPONUJ(trzykol));1^wn);{0\0});""));ILE.WIERSZY(T$9:T9)));"")
Tę formułę zatwierdza się tablicowo w jednej komórce i potem kopiuje.
Zakładam, że wśród danych nie będzie wartości zerowych, bo one są eliminowane.

ex10a1.xlsx
Pobierz Plik ściągnięto 12 raz(y) 19.48 KB

ID posta: 312411 Skopiuj do schowka
 
 
apollo
ExcelSpec


Pomógł: 914 razy
Posty: 3228
Wysłany: 07-01-2017, 19:40   

No właśnie, pokazane wyniki w kolumnie M nie są posortowane!
Proponuję tablicową w M6
Kod:

=JEŻELI.BŁĄD(INDEKS(C$6:G$42;MOD(MIN.K(JEŻELI(C$6:G$42<>"";42*(NR.KOLUMNY(C$6:G$42)-NR.KOLUMNY(C$6)+1)+WIERSZ(C$6:G$42)-WIERSZ(C$6)+1;"");ILE.WIERSZY(C$6:C6));42);MIN.K(JEŻELI(C$6:G$42<>"";42*(NR.KOLUMNY(C$6:G$42)-NR.KOLUMNY(C$6)+1)+WIERSZ(C$6:G$42)-WIERSZ(C$6)+1;"");ILE.WIERSZY(C$6:C6))/42);"")

Jeśli jednak ma być posortowana to pukaj do sąsiada szbill62 i pożycz jego maszynkę
ID posta: 312413 Skopiuj do schowka
 
 
puma1990
Fan Excela


Posty: 66
Wysłany: 08-01-2017, 00:23   

Maciej Gonet i apollo wybaczcie, ale wprowadziłem Was nieświadomie w błąd z tym sortowaniem :-( Na szczęście zorientowaliście się o co mi chodzi.

Maciej Gonet dziękuję bardzo za pomoc :-D
ID posta: 312422 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.