Forum IDG.pl - miejsce dyskusji o IT: [EXCEL] Lista wartości - Forum IDG.pl - miejsce dyskusji o IT

Skocz do zawartości

Close Open
Close Open
Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie

[EXCEL] Lista wartości Oceń temat: -----

#1 Użytkownik jest niedostępny   gilbert_z Ikona

  • Uczestnik
  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 152
  • Dołączył: 17-październik 05

Napisany 09 sierpień 2006 - 06:14

W arkuszu jest duża tabelka z danymi dotyczącymi kilku osób. Każda z tych osób powtarza się od kilku do kilkudziesięciu razy zawierając różne dane (nazwisko zawsze w kolumnie A). Czy da się przy pomocy formuł zrobić w innym arkuszu unikatową listę tych nazwisk? (np w kolumnie A będę miał alfabetycznie: Adamiecki, Kowalski, Nowak itd

#2 Użytkownik jest niedostępny   Mały_Rycho Ikona

  • eremita
  • PipPipPipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 2009
  • Dołączył: 02-marzec 05
  • Płeć:Mężczyzna
  • Lokalizacja:Sulęcin

Napisany 09 sierpień 2006 - 22:22

Hej.
Próbowałem samymi formułami ale się zapętliłem :(

Łatwo zrobić przy pomocy tabeli przestawnej, zwłaszcza jeśli nazwiska nie są posortowane. Ale to ma jedną wadę; odświerzać automatycznie i tak trzeba makrem.
Mały Rycho

Jeśli mówisz prawdę, nie musisz niczego pamiętać. Mark Twain.

#3 Użytkownik jest niedostępny   takajulka Ikona

  • Początkujący
  • PipPipPip
  • Grupa: Forumowicze
  • Postów: 52
  • Dołączył: 15-wrzesień 05

Napisany 10 sierpień 2006 - 10:08

a sortowanie danych wg tej kolumny z nawiskami nie wchodzi w grę?
albo przekopiowanie danych dotyczących kolejnych nazwisk po przefiltrowaniu (jesli juz przerzucac osobno)?
Looking For The Summer

#4 Użytkownik jest niedostępny   Rysiek103 Ikona

  • Adept
  • Pip
  • Grupa: Forumowicze
  • Postów: 2
  • Dołączył: 10-sierpień 06

Napisany 10 sierpień 2006 - 13:35

Sheets("Arkusz2").Select
Range("AZ2:AZ500").Clear
Range("AX2:AX65536").AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=Range("AZ2"), Unique:=True
Range("AZ2:AZ253").Sort Key1:=Range("AZ2"), Header:=xlGuess


Ja mam coś podobnego ale w jednym arkuszu
Zakres AX to zbiór rekordów (konkretnie są to daty wykonywania zadań)
a w Kolumnie AZ mam po jednej dacie z zakresu AZ.
Kod makra zamieszczony był swego czasu na stronie excelwpraktyce
autorstwa Rycha lub Tajana

Pozdrawiam
Rysiek

#5 Użytkownik jest niedostępny   gilbert_z Ikona

  • Uczestnik
  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 152
  • Dołączył: 17-październik 05

Napisany 10 sierpień 2006 - 23:06

Dziękuję za ospowiedzi, jednak interesowało mnie zrobienie czegoś takiego wyłącznie przy pomocy formuł.
W makrze to nie widzę problemu,
Pozdrawiam, Gilbert

#6 Użytkownik jest niedostępny   Mały_Rycho Ikona

  • eremita
  • PipPipPipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 2009
  • Dołączył: 02-marzec 05
  • Płeć:Mężczyzna
  • Lokalizacja:Sulęcin

Napisany 10 sierpień 2006 - 23:25

Hej gilbert_z
Tak. Makrem to banalne.
Formułami dla liczb też banalne, no prawie.
Dla nazwisk już posortowanych, pewnie wykonalne (nie jestem pewien).

Ale jak sortować formułami tekst? :o
Próbowalem zastosować funkcję zamieniającą tekst na liczbę.
Najpierw funkcją KOD i potem funkcją PODAJ.POZYCJĘ operującą na 32 znakch zamieniałm poczczególne litery na liczby i mnożyłem przez odpowiednie wagi ale z powodu tego, że excel pamieta liczby tylko z dokładnością 15 cyfr, to jedynie 10 pierwszych znaków nazwiska mozna w ten sposób przekształcić. Wynikim będzie więc nieprecyzyjne sortowanie a co gorsza jest możliwość 'zgubienia' podobnych nazwisk.
W weekend jeszcze trochę nad tym pomyślę. Może znajdę lepszy sposób 'pakowania' tekstu do liczby, ale obawiam się, że przy pomocy samych formuł to niewykonalne. Przecież w tym co już zrobiłem, musiałem użyć 'pseudo-iteracji' w formułach tablicowych.

Ale problem ciekawy. :)
Pozdrawiam
Mały Rycho

Jeśli mówisz prawdę, nie musisz niczego pamiętać. Mark Twain.

#7 Użytkownik jest niedostępny   gilbert_z Ikona

  • Uczestnik
  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 152
  • Dołączył: 17-październik 05

Napisany 11 sierpień 2006 - 17:18

A jeżeli to sortowanie darowalibyśmy sobie, bo to tylko zabieg kosmetyczny, to jak powinna wyględać formuła, która to zrobi??
Pozdrawiam, G

#8 Użytkownik jest niedostępny   Mały_Rycho Ikona

  • eremita
  • PipPipPipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 2009
  • Dołączył: 02-marzec 05
  • Płeć:Mężczyzna
  • Lokalizacja:Sulęcin

Napisany 11 sierpień 2006 - 18:09

Hej.
Sortowanie, niestety jest istotne. :(

W kolumnie A lista nazwisk posortowana lecz zawierająca powtórzenia,
w kolumnie B lista nazwisk unikalnych
B2 =A2
B3 i poniżej
=INDEKS($A$1:$A$99;MAX(WIERSZ($A$1:$A$99)*($A$1:$A$99=B2))+1)

Jest to formuła tablicowa, zatwierdzana klawiszami Ctrl+Shift+Enter)
Lista zakończy się wartością 0 (zero) i błądami w kolejnych komórkach. Można to wykorzystac do określenia konca listy.
Nie wiem, do czego wykorzystasz tą listę?
Jeśli jednak by to przeszkadzało, to formułę można 'opakować' funkcją JEŻELI, sprawdzając to 'zero'.
Mały Rycho

Jeśli mówisz prawdę, nie musisz niczego pamiętać. Mark Twain.

#9 Użytkownik jest niedostępny   gilbert_z Ikona

  • Uczestnik
  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 152
  • Dołączył: 17-październik 05

Napisany 12 sierpień 2006 - 15:32

Nie wiem czy mój plan nie był zbyt chytry.
W jednym arkuszu "głównym" są wszystkie dane (ta duża tabela z nazwiskami i innymi wartościami). W drugim arkuszu jest podsumowanie. Jest nazwisko osoby, dla której sumuję pewne wrtości z głównego arkusza przy pomocy suma.jeżeli...nazwisko. Żeby mi to działało to +/- ręcznie muszę wybrać i wpisać nazwiska jakie są w głównej tabeli. Chciałem żeby formuła wpisywała mi nazwiska do arkusza z podsumowaniem i do tych nazwisk wyliczyły się odpowiednie wartości.
Obawiam się, że na samych formulach to nie pójdzie a nie chcę robić tam żadnego makra, ale jak nie da rady formułami to chyba będę musiał
G

#10 Użytkownik jest niedostępny   Mały_Rycho Ikona

  • eremita
  • PipPipPipPipPipPipPip
  • Grupa: Forumowicze
  • Postów: 2009
  • Dołączył: 02-marzec 05
  • Płeć:Mężczyzna
  • Lokalizacja:Sulęcin

Napisany 12 sierpień 2006 - 17:30

Witam.
Męczyło mnie to okrutnie, a że nie umiem się poddać w sytuacji gdy wiem, że coś jest w moim zasięgu, to posiedziałem nad tym i zrobiłem. :)

Rozwiązanie nie jest proste i wymaga kolumn pomocniczych i formuł tablicowych (zatwierdzanych klawiszem Enter podczas trzymania wciśniętych klawiszy Ctrl i Shift).

Nazwiska w kolumnie A (przyjąłem zakres 99 wierszy).

do B2 formuła tablicowa
=SUMA(($A$1:$A$99<=A2)*1)

którą należy przekopiować w dół,

do C2
=MIN(B2:B99)

do C3 formuła tablicowa
=MIN(JEŻELI($B$2:$B$99>C2;$B$2:$B$99;1000))

którą należy przekopiować w dół,

do D2
=INDEKS(A$2:$A$99;PODAJ.POZYCJĘ(C2;$B$2:$B$99;0))

którą należy przekopiować w dół,

do E2
=JEŻELI(NIE(CZY.BŁĄD(D3));D3;"")

którą należy przekopiować w dół.

Plik, w którym to testowałem, w załączniku.
Pozdrawiam

EDIT
Porawiłem formuły (także w załączniku) w kolumnie D, bo to była wersja pośrednia, gdy próbowalem zrobić jedną megaformulę, ale jak na razie nie wyszło.

Załączone pliki


Mały Rycho

Jeśli mówisz prawdę, nie musisz niczego pamiętać. Mark Twain.

#11 Użytkownik jest niedostępny   gilbert_z Ikona

  • Uczestnik
  • PipPipPipPip
  • Grupa: Forumowicze
  • Postów: 152
  • Dołączył: 17-październik 05

Napisany 13 sierpień 2006 - 14:53

Szczerze wątpiłem, żę da się to zrobić, ale jak widać nie ma dla Ciebie rzeczy niemożliwych.
Pozdrawiam, G :)

#12 GośćGość_*

  • Grupa: Goście

Napisany 14 czerwiec 2011 - 22:18

Dziękuje

Prześlij ten temat:


Strona 1 z 1
  • Nie możesz rozpocząć nowego tematu
  • Nie możesz odpowiadać w tym temacie


1 Użytkowników czyta ten temat
0 użytkowników, 1 gości, 0 anonimowych użytkowników


Reklama