Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

excel - Automatyczny wybór wartości na podstawie 3 innych argumentów

kulinek 04 Sie 2013 13:16 2457 17
  • #1 04 Sie 2013 13:16
    kulinek
    Poziom 8  

    Witam ponownie,

    Głowię się od kilku dni nad rozwiązaniem, ale bez skutku.

    S3 to wynik sumowania objętości z komórek B6:D9
    T11 określa rodzaj pracy (monataż, demontaż, montaż+demontaż)
    T14 określa model

    rodzaj pracy warunkuje wybór stawki czyli: dla montażu bierze stawkę z kolumny Z, demontaż AA i montaż+demontaż AB.
    Wartości objętości to przedziały od 0-24,9999; 25,0-49,999; itd.
    Chciałbym aby zależnie od wybranych parametrów wskazanych w T11 i T14 podstawiona do U11 została stawka odpowiadająca zadanemu zakresowi.
    Byłbym zapomniał: Modele zakresu S20:S23 nie mają zróżnicowania stawki zależnej od objętości.


    Do moda - jeśli to możliwe to proszę o przeczyszczenie topicu bo troche za mocno namieszałem przez nieprecyzyjny opis tego, co chcę osiągnąć

    0 17
  • #2 04 Sie 2013 13:32
    marcinj12
    Poziom 40  

    Chyba zły plik zamieściłeś, bo opis nijak ma się do tego co zawiera..

    0
  • #3 04 Sie 2013 13:44
    kulinek
    Poziom 8  

    Po części chciałem uprościć, bo właściwy plik jest w excelu 2010 z obsługą makr. Zaraz poprawię opis kłopotu. Dzięi za zwrócenie uwagi.

    0
  • #4 04 Sie 2013 14:53
    marcinj12
    Poziom 40  

    Niestety, dalej nie jest zrozumiałe - nie każdy zna też niemiecki żeby się domyślać...

    Piszesz, że w U11 podajesz typ pracy z zakresu U11 - U13. Chyba U12-U14?
    Jakie to ma przełożenie na wynik - w AI:AK widać tylko model i zakres objętości??

    Piszesz też, że model wpisujesz w komórkę AB20 - tam jest napis "rodzaj"...

    Zakresy objętości od-do są takie same dla każdego modelu czy mogą się zmieniać (dochodzić nowe)? Swoją drogą jak są dobieranie - np. wartość 25 wchodzi w 0-25 czy 25-50 ??

    0
  • #5 04 Sie 2013 15:07
    kulinek
    Poziom 8  

    AB20 - roztargnienie. tam docelowo jest usytuowana wartość wyboru między AB21:AB29
    Właściwy plik jest w excelu 2010 z obsługą makr, których na forum nie wolno używać - stąd kłopoty.
    Co o U11 - masz rację - poprawne zakresy wejściowe to U12:U14
    Zakresy objętości są takie same dla każdego modelu czyli od 0 do 24,9999 włącznie itd. wartość 25 należy do przedziału 25-50. Wielkości wychodzą zazwyczaj z kilkoma miejscami po przecinku.

    0
  • #6 04 Sie 2013 15:12
    marcinj12
    Poziom 40  

    Plik Excela 2010 zawsze możesz spakować i spakowany dodać na forum.
    Dalej nie odpowiedziałeś, jakie jest przełożenie "typu pracy" z zakresu U12-U14 na wynik końcowy?? Domyślam się - ale tylko domyślam - że U12 to dane z kolumny AI, U13 z AJ, a U14 z AK ??

    0
  • #7 04 Sie 2013 15:22
    kulinek
    Poziom 8  

    Jak widać myślenie boli ;) Dodałem załącznik spakowany. Tylko teraz posypało mi się oznaczenie komórek ;)
    typ pracy: dokładnie tak jak się domyśliłeś. W spakowanej wersji:
    objętość warunkująca stawkę: idzie w komórkę S3
    rodzaj pracy pokazywany jest w T11 a komórki wejściowe to T12:T14
    Te z kolei wpływają na to czy brana jest stawka z kolumny Z, AA czy AB.

    Ale zamotałem teraz.... ;)

    0
  • #8 04 Sie 2013 16:05
    marcinj12
    Poziom 40  

    Jeszcze zapomniałeś dodać, że mowa o arkuszu "CZYSTY" ;)
    Ale OK, teraz już chyba wszystko rozumiem.

    Moja propozycja jest taka: użyć funkcji WYSZUKAJ.PIONOWO.

    Najpierw dodaj kolumnę pomocniczą przed kolumną Y (może być ukryta) z kluczem do wyszukiwania, w postaci model-przedział objętości (możesz wpisać ręcznie lub użyć złączenia tekstów):

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    To będzie kolumna po której szukasz funkcją WYSZUKAJ.PIONOWO.

    Aby podać jej pierwszy argument (wartość do wyszukania), użyj znaczka & lub funkcji ZŁĄCZ.TEKSTY() do złączenia komórki S14 oraz przedziału, który uzyskasz - po najmniejszej linii oporu - przez zagnieżdżanie kilku funkcji JEŻELI().
    Wynik możesz wstawić do innej komórki. Wyjdzie mały potworek, ale dla 10 argumentów jeszcze do przyjęcia:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    To oczywiście uproszczony przykład, Ty musisz podać wszystkie przedziały tak, aby w zależności od objętości uzyskać stosowny "przedział".

    Teraz masz już argument do funkcji WYSZUKAJ.PIONOWO, pozostaje numer zwracanej kolumny. Możesz znowu zagnieździć dwie lub trzy funkcje JEŻELI, albo użyć:
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    W wyniku dostaniesz 1, 2 lub 3 - dodaj do tego odpowiednią liczbę, a uzyskasz trzeci argument funkcji WYSZUKAJ.PIONOWO.

    Drugim będzie tablica - kolumny lub zakres komórek Y:AC.
    Czwarty argument zawsze równy 0.

    Spróbuj samemu i dać znać jak poszło ;)

    0
  • #9 04 Sie 2013 17:17
    kulinek
    Poziom 8  

    Kładę się na argumentowaniu wyszukaj.pionowo.
    Zindeksowałem sobie wszystko tak jak radziłeś i wstawiam taką formułę:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Zwraca mi #ARG!
    Chyba kłopotem jest to, że nie podstawiam prawidłowo zakresów do szukaj.pionowo.

    użycie takiej składni:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    daje z kolei #N/D!
    Wierz mi lub nie - tyle razy próbowałem zrozumieć składnię tego polecenia, że powinienem napisać to zbudzony w nocy :(

    0
  • #10 04 Sie 2013 17:53
    kulinek
    Poziom 8  

    Klękam.

    Musisz mi pomóc z tym wyszukiwaniem, bo chyba tu właśnie tkwi mój błąd.

    Wyszukujemy wartości komórki (dajmy na to) U17; przeszukiwany zakres to Y6:AC59 i szukam tego w kolumnie 1. Czy tak?

    0
  • Pomocny post
    #11 04 Sie 2013 17:54
    marcinj12
    Poziom 40  

    Powiem tak: przeczytaj jeszcze raz mój ostatni post #8 (tak od połowy) i porównaj z tym, co masz. Obecnie każdy z 4 argumentów funkcji WYSZUKAJ.PIONOWO (tej z ostatniego załącznika) masz zły :) Grunt, to dobrze zrozumieć tą funkcję: może ten krótki tutorial pomoże?

    kulinek napisał:
    Wyszukujemy wartości komórki (dajmy na to) U17; przeszukiwany zakres to Y6:AC59 i szukam tego w kolumnie 1. Czy tak?
    Tak, ale... U17 miał być KLUCZEM - złączeniem DWÓCH wartości (grupy i przedziału). W załączniku jak konstruowałeś klucz, nie dałeś symbolu >1000. Istotny jest też 3 argument - numer kolumny (począwszy od pierwszej w tablicy) który chcesz zwrócić - czyli U18 + jakaś liczba.

    0
  • #12 04 Sie 2013 19:14
    kulinek
    Poziom 8  

    Leżę i kwiczę.

    Jeszcze raz: Szukana jest wartość S14 w przedziale Y6:Y59, jako kolumnę do przeszukania trzeba podać kolumnę klucz czyli 1 i fałsz jako, że ma być znalezione dokładne trafienie.

    Kod: vb
    Zaloguj się, aby zobaczyć kod
    To daje mi odpowiedź #N/D!

    z kolei
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    zwraca mi grupę o 1 mniejszą czyli: jeśli mam wybrane w S14 ram_gr3 to dostaję mod_gr6>1000

    Jeżeli z kolei podam :
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    to dostaję wartość montażu + demontażu mod_gr6>1000

    JEst jedno ale - w tym przypadku nie mogę stosować wyszukiwania przybliżonego bo muszę otrzymać wartość dokładną.... PRzerasta mnie to trochę

    Dodano po 12 [minuty]:

    WRÓĆ!!
    Częściowo wiem na czym się położyłem. teraz walczę ze stawką. zaraz dam znać co z tego wyszło :D

    Dodano po 7 [minuty]:

    JEEEE
    Sukces :)

    Błąd leżał gdzie indziej. Nie w WYSZUKAJ.PIONOWO. Pominąłem stworzenie komórki pomocniczej S14&U17 I stąd brał się błąd. No i jako że szukamy w pierwszej kolumnie bo tam jest klucz to trzeba wybrać która to będzie w stawce czyli U18 + żądana kolumna.

    0
  • #13 04 Sie 2013 19:16
    marcinj12
    Poziom 40  

    No to brawo, ale na końcu funkcji FAŁSZ albo 0.

    0
  • #14 04 Sie 2013 19:36
    kulinek
    Poziom 8  

    Tak, FAŁSZPodzielić się? Neeee nie będę dawał gotowców.
    Jeszcze raz stokrotne dzięki za naprowadzenie.

    Dodano po 18 [minuty]:

    No dobra, nie do końca wszystko jest jak powinno. Bo jeśli mam do czynienia z dwiema wartościami jest cacy. Walczę w tym momencie z kategorią wis_ bo ona zwraca mi błąd #N/D

    0
  • #15 04 Sie 2013 19:49
    marcinj12
    Poziom 40  

    kulinek napisał:
    Walczę w tym momencie z kategorią wis_ bo ona zwraca mi błąd #N/D
    A ta kategoria nie ma przedziałów?? Bo sam napisałeś, że:
    kulinek napisał:
    Zakresy objętości są takie same dla każdego modelu

    Jeżeli jednak nie, to... kolejna funkcja JEŻELI(), np. w argumencie do wyszukania funkcji WYSZUKAJ.PIONOWO. Funkcją LEWY sprawdzasz, czy szukany model zaczyna się od wis_. Jeżeli tak, to zwracasz sam model, w przeciwnym wypadku - model złączony z przedziałem tak jak do tej pory.

    0
  • #16 04 Sie 2013 20:00
    kulinek
    Poziom 8  

    Właśnie walczę z JEŻELI. trochę łopatologicznie i bajzel w kodzie ale najważniejsze ze chyba będzie działać ;)

    Dodano po 8 [minuty]:

    No dobra, zrobiłem. Cóż... kod wygląda jak robiony przez Gates'a po kilku głębszych, ale na ten moment nie potrafię go uprościć tak, żeby nie zajmował dwóch linijek ;)

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Jakieś pomysły jak go uprościć? bo z tym LEWY nie czaje o co może tam chodzić

    0
  • #17 04 Sie 2013 20:29
    marcinj12
    Poziom 40  

    To "kat" to nazwa tej komórki, w której masz złączenie kategorii i przedziału objętości?
    Myślałem bardziej o czymś takim - jak rozumiem z kodu teraz w U16 jest sama kategoria, więc:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #18 04 Sie 2013 21:03
    kulinek
    Poziom 8  

    Nie, "kat" to nazwa komórki S14 do której wybieram z S15:S23. Ale zaraz przeanalizuję to co napisałeś i postaram się zaadaptować na lokalne warunki

    Dodano po 30 [minuty]:

    Ale z tym postaram się jakoś zaradzić w tygodniu. Dziękuję Ci jeszcze raz za podpowiedź.

    0
  Szukaj w 5mln produktów