Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Porównywanie wartości

Nie widzę możliwości sensownego zastosowania w problemie Eweliny funkcji Wyszukaj.pionowo (czy jakiejkolwiek funkcji wyszukiwania). Rozwiązanie, o którym pisze Wojtek jest idealne, ale istnieje tylko w najnowszej wersji Excela (nie znam jej, zresztą).

Ewelina miała znaleźć w jednej nieposortowanej tabeli (i nie do posortowania) z ok. 2000 rekordów, rekordy zawierające unikatowe wartości nie występujące w drugiej (ponad 1900 rekordów), .
W dodatku w tej drugiej (także nieposortowanej i niemożliwej do sortowania) tabeli znajdowały się rekordy z wartościami unikatowymi w stosunku do pierwszej.
Aneta S.

Aneta S. Kontroler finansowy

Temat: Porównywanie wartości

Nie widziałam danych, które ten problem stanowią, więc trudno cokolwiek powiedzieć. Chyba tego problemu nie ogarniam - jak dane mogą nie nadawać się do sortowania???
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Porównywanie wartości

Kiedy dostaję zadanie: bez sortowania, to robię bez sortowania.
Zakładam, że dla kogoś jest to ważne, więc nie dyskutuję.
Widziałem już zresztą, jak po operacji sortowania (oczywiście, przeprowadzonej niedokładnie) robota kilku tygodni była do wyrzucenia...
Napisałem, że dane nie nadają się do sortowania nie w sensie technicznym, a ze względów opisanych wyżej.
Zresztą - w tym konkretnym wypadku - sortowanie naprawdę niewiele by dało.
Na ponad 1950 sprawdzonych rekordów w jednej tabeli, powtarzało się ok. 1900 (i, jak pisałem wcześniej, w tej drugiej były wartości niewystępujące w pierwszej).
Aneta S.

Aneta S. Kontroler finansowy

Temat: Porównywanie wartości

Jak się pomyśli, to sortowanie musi dać dobre efekty :) Jeśli później chce się doprowadzić listę do poprzedniej wersji, to wystarczy przed sortowaniem do listy kolumnę z rosnącym ciągiem liczb i sortować włącznie z tą nową kolumną. Później posortujesz tabelę według kolumny z liczbami i masz pierwotną tabelę przywróconą.
Dalej będę się upierać, że sortowanie dałoby radę z funkcją wyszukaj.pionowo i porównaj. Być może wcześniej, żeby zmniejszyć liczbę kolumn użyłabym też złącz.tekst (wybaczcie jeśli przekręciłam nazwy, ale używam obecnie openoffice i w dodatku w wersji angielskiej)
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Porównywanie wartości

To podaj, proszę, zapis funkcji wyszukaj.pionowo dla tego przykładu: w kolumnie A masz 1950 wierszy, zawierających liczby posortowane rosnąco (nie są to liczby kolejne). W kolumnie B masz 1900 liczb posortowanych rosnąco, i także nie kolejnych.
W obu kolumnach każda liczba występuje tylko raz.
Trzeba znaleźć w kolumnie A liczby, których nie ma w kolumnie B.

I wystarczy tylko podać tę funkcję.
Pozdrawiam.

---------------

Ja wiem, że można zrobić różne rzeczy przy obróbce tabel. Ale to nie ja je "obrabiam", tylko klient, albo po prostu ktoś inny. To z jego obiekcjami muszę sie liczyć, z jego umiejętnościami.
Ja mam podać metodę. ;-)
Aneta S.

Aneta S. Kontroler finansowy

Temat: Porównywanie wartości

Janusz K.:
To podaj, proszę, zapis funkcji wyszukaj.pionowo dla tego przykładu: w kolumnie A masz 1950 wierszy, zawierających liczby posortowane rosnąco (nie są to liczby kolejne). W kolumnie B masz 1900 liczb posortowanych rosnąco, i także nie kolejnych.
W obu kolumnach każda liczba występuje tylko raz.
Trzeba znaleźć w kolumnie A liczby, których nie ma w kolumnie B.

I wystarczy tylko podać tę funkcję.
Pozdrawiam.

---------------
Albo nie rozumiem przykładu, albo to "pikuś" ;)

W kolumnie C wkleję w każdym wierszu liczbę "1" (przykładowo, może być cokolwiek innego, a funkcja będzie miała postać:
VLOOKUP(A1;$B$1:$C$20;2;0). Koniecznie to "0" jako ostatni parametr, żeby podało dokładne dopasowanie a nie najbliższe. Zrobiłam sobie na krótkim przykładzie i działa bez zarzutu. Obok tych liczb których nie ma w kolumnie B pojawi się #N/A. Później autofiltr po #N/A i już mam wykaz różnic. Jak chcesz wyłapać różnice w drugą stronę tzn. to co jest w B a nie ma w A, to analogicznie.

Czy może o coś innego chodziło w przykładzie?
Za
Aneta S.

Aneta S. Kontroler finansowy

Temat: Porównywanie wartości

Ja wiem, że można zrobić różne rzeczy przy obróbce tabel. Ale to nie ja je "obrabiam", tylko klient, albo po prostu ktoś inny. To z jego obiekcjami muszę sie liczyć, z jego umiejętnościami.
Ja mam podać metodę. ;-)


No właśnie staram się liczyć z umiejętnościami :) Jak nie znam VBA, to dla mnie kod który podasz będzie czarną magią. Łatwiej laikowi zrozumieć funkcję ;)
Ale jeśli komuś to rozwiązanie sprzedajesz, to masz rację. Najlepiej gotowiec i to z ukrytym kodem ;) Bo później klient jeszcze coś sam namiesza a pretensje będzie miał do Ciebie.
Aneta S.

Aneta S. Kontroler finansowy

Temat: Porównywanie wartości

[...]a funkcja będzie miała postać:
VLOOKUP(A1;$B$1:$C$20;2;0).

Sorki, oczywiście w twoim przykładzie funkcja będzie miała większą tablicę, tj. VLOOKUP(A1;$B$1:$C$1950;2;0)
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Porównywanie wartości

I oczywiście użytkownik sam się domyśli, gdzie wstawić te funkcję.. ;-)

Moja praktyka wskazuje, że zarówno funkcje, jak i VBA są jednakowo trudne dla większości użytkowników - i wtedy, kiedy nie potrzebują (nie chcą) nauczyć się tworzenia narzędzia, znacznie lepiej jest dać automat - czyli na przykład przycisk uruchamiający procedurę, która opisane przeze mnie zadanie wykona bez żadnych zabiegów przy liście.

Swoją uwagą o sprzedawaniu, gotowcu i cwanych zagrywkach zrobiłaś mi przykrość - nie masz podstaw, żeby choćby sugerować coś takiego.
Nie rozumiem takiego postępowania.
Aneta S.

Aneta S. Kontroler finansowy

Temat: Porównywanie wartości

Janusz K.:
I oczywiście użytkownik sam się domyśli, gdzie wstawić te funkcję.. ;-)

Wiesz, zawsze byłam zdania, że lepiej komuś pokazać drogę niż dać gotowe rozwiązanie. Przecież jak uruchomić makro też będziesz musiał wytłumaczyć, nawet jeśli to będzie wielki przycisk z napisem "naciśnij mnie!" ;) Idąc tym tropem nie każdy może się domyślić.
Moja praktyka wskazuje, że zarówno funkcje, jak i VBA są jednakowo trudne dla większości użytkowników - i wtedy, kiedy nie potrzebują (nie chcą) nauczyć się tworzenia narzędzia, znacznie lepiej jest dać automat - czyli na przykład przycisk uruchamiający procedurę, która opisane przeze mnie zadanie wykona bez żadnych zabiegów przy liście.

Spoko, pewnie że wszystko zależy od potrzeb i umiejętności użytkownika. Gdybym miała takie rozwiązanie pokazać Prezesowi, to bym nawet nie próbowała, oczywiście postarałabym się o gotowiec.

Swoją uwagą o sprzedawaniu, gotowcu i cwanych zagrywkach zrobiłaś mi przykrość - nie masz podstaw, żeby choćby sugerować coś takiego.
Nie rozumiem takiego postępowania.

A ja nie rozumiem o co Ci chodzi??? Nie jesteś nieco przewrażliwiony albo przemęczony? Gdzie u mnie była jakakolwiek uwaga o cwanych zagrywkach? I co ja niby sugerowałam???
Przecież chodziło mi dokładnie o to co Tobie, o jak najmniejszą ingerencję użytkownika. Po co ma mieć dostęp do kodu, którego nie zrozumie i może tylko popsuć?
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Porównywanie wartości

.Janusz K. edytował(a) ten post dnia 20.09.07 o godzinie 00:24
Ewelina T.

Ewelina T. State Street

Temat: Porównywanie wartości

Dajcie spokój- nie ma się o co sprzeczać:)
Janusz przygotował mi świetnie działający formularz, ułatwia mi to pracę niesamowicie i zrobił to zupełnie bezinteresownie.
Aneta S.

Aneta S. Kontroler finansowy

Temat: Porównywanie wartości

Wiem i dlatego nie rozumiem, skąd się ta sprzeczka wzięła ;)

Po prostu podałam drugie rozwiązanie i napisałam, że oba działają i mają sens, zależnie od układów z ich użytkownikiem i jego kompetencji w Excelu. Jeśli byłby to klient, to dałabym mu gotowy kod, w którym nie nagrzebie. Jeśli współpracownik, to wolałabym go nauczyć swojego sposobu, większe prawdopodobieństwo, że go zaadaptuje do innych problemów z Excelem i nie będzie przychodził z podobnymi zadaniami ;)

Janusz niepotrzebnie odczytał to jako jakąś uwagę pod jego adresem. Nic takiego nie miałam na myśli.
Janusz K.

Janusz K. Ekspert rozwoju i
przyszłości firm,
struktur, systemów
or...

Temat: Porównywanie wartości

Nie tylko w formułach Excela potrzebny jest umiar i rozsądek. Nadmiarowość zwykle bardzo szkodzi bezproblemowemu funkcjonowaniu - także niektóre komentarze są całkowicie zbyteczne.

------------------------

Wracając do sprawy - jak już zauważono, w Excelu (jak i w życiu) wiele zadań można rozwiązać na kila sposobów. Powstaje więc problem kryteriów wyboru.

Jeśli sami rozwiązujemy swój problem, to oczywiście tylko ze swoimi chęciami, możliwościami i umiejętnościami musimy się liczyć.
Kiedy zaś robimy coś dla kogoś - sprawa robi sie trudniejsza.
Ja również jestem zwolennikiem edukowania użytkowników - wiem jednak też, że kwanty wiedzy, przekazywanej za jednym zamachem, nie mogą być za duże, bo nie zostaną przyjęte, a to może wywołać trwałą niechęć wobec arkusza kalkulacyjnego.

To może nie być oczywiste dla wszystkich, ale konieczność głębokiej ingerencji w konstrukcję arkusza - sortowanie, przestawianie kolumn, wstawianie nowych - nie jest sprawą błahą dla nawet trochę zaawansowanego użytkownika Excela. Nie każdy ma głębokość cofania zmian ustawioną na 100, nie każdy umie sobie poradzić, kiedy program zawiesi się albo stanie się cokolwiek nieprzewidzianego.

Dodatkowo, co by nie mówić, formuła działania funkcji Wyszukaj, we wszystkich jej odmianach, jest wbrew pozorom trudna do zrozumienia i zastosowania. Chodzi nie tylko o wstawianie dodatkowej kolumnie przy wyszukiwaniu pionowym, ale też o ustawienie parametru decydującego o dokładności wyszukiwania. Intuicja mówi bowiem, że jeśli szukamy, przecież oczywiście chodzi o wartości dokładne. Również konieczność sortowania wymyka się intuicji - bo przecież szukana wartość albo jest w danej kolumnie, albo jej nie ma. Nienaturalne jest to, że zależy to (dla funkcji) od tego, czy wartości są posortowane rosnąco. To są sprawy naprawdę niełatwe nawet dla ludzi, którzy sprawnie nawigują po arkuszu, znają podstawowe operacje, umieją budować tabelki.

Procedura przeszukująca napisana w VB, co już sprawdziłem na żywym przykładzie (nie Eweliny - ;-) ) jest, może wbrew pozorom, zrozumiała łatwiej. Oczywiście nie chodzi o wygląd - laik patrzy na zapis VB z należytym szacunkiem - ale o tzw. logikę działania.
To, że "Excel" pobiera z jednej kolumny daną i szuka takiej samej w drugiej kolumnie, idąc od góry, jest zrozumiałe. To, że jeśli znajdzie, to pobiera następną daną i sprawdza, jest zrozumiałe. Że, jeśli nie znajdzie, to robi w oznaczonym miejscu stosowną adnotację i sprawdza następną daną - jest zrozumiałe.
Ze kiedy skończy, wystawia stosowny komunikat, jest zrozumiałe.
Ba! - użytkownik bez oporu - a nawet z zadowoleniem przyjmie i to, że procedura wydrukuje mu potrzebne zestawienie, albo wyśle zawiadomienie do oddalonego adresata.

Takie działanie często wywołuje apetyt na wiedzę, zwłaszcza jeśli wiedzący nie ukrywa jej i nie kreuje się na czarodzieja.

Praca została wykonana, bezcenny arkusz ani razu nie został zmieniony w istniejącej części.
Mało tego - procedura sprawdzi, ile razy musi wykonać pętlę poszukiwań, więc nie trzeba za każdym razem ustawiać argumentów funkcji. I - co też sprawdziłem - kiedy się wytłumaczy jak VB rozpoznaje kolumny i wiersze w użytych obiektach, to trochę zaawansowany użytkownik jest w stanie dokonać skutecznej modyfikacji kodu.
Dlatego też niezwykle rzadko zabezpieczam kod (jedynie wtedy, kiedy Excel działa w postaci formy użytkownika, jako specjalizowany program). Użytkownik to rzadko desperat.. ;-)

Mam nadzieję, że ten długi wykład nie znużył - bo jest kwestią naprawdę ważną sposób postępowania przy udzielaniu pomocy.
Oczywiście - każdy to robi według swojej wiedzy, możliwości i chęci.
Cieszę się, że mogłem zaprezentować także swoje podejście - przy wielkim szacunku dla metod i sposobów innych fanów Excela.

konto usunięte

Temat: Porównywanie wartości

mam wersję angielską:
funkcją MATCH sprawdzam, czy dana wartość z jednej tabeli występuje w drugiej, jeżeli tak to wyświetla mi numer wiersza i wówczas funkcją VLOOKUP wyświetlam cały wiersz
Jakub Słowiak

Jakub Słowiak Kierownik produkcji,
Fideltronik

Temat: Porównywanie wartości

Witam,

Po tej krótkiej lekturze polemiki Anety i Janusza pragnę jedynie zwrócić uwagę na kilka bardzo ważnych zasad o których warto pamiętać:

1) Formuły i funkcje wbudowane w EXCEL działają zdecydowanie szybciej niż typowe algorytmy.
2) Działanie formuł nie wymaga uaktywniania makr co może doprowadzić do zainstalowania sobie wirusa.
3) VBA jest bardzo dobrym dodatkiem do EXCEL ale trzeba rozsądnie z niego korzystać.

Ja mam prostą zasadę, jeżeli można coś zrobić przy pomocy Formuł to próbuję, jeżeli się nie da to VBA. Janusz dodatkowo wspomniał o VB, niestety mało kto ma tę możliwość aby wykupić licencję do programowania w tym środowisku.

P.S, Janusz wrzuć na forum kod, z pewnością wielu chętnie skorzysta

Pozdr,
Jakub.



Wyślij zaproszenie do