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] - Kryteria filtrowania X3

bystrotrecon 20 Sie 2017 18:10 837 10
  • #1 20 Sie 2017 18:10
    bystrotrecon
    Poziom 7  

    Witam. Stworzyłem rejestr, w którym docelowo chciałbym filtrować dane w trzech kolumnach: JB, Zakład, Uzasadnienie. Zdefiniowałem nazwy, lecz nie wiem czy poprawnie. Całość nie działa tak jak powinna, nie mogę odnaleźć błędu (pewnie w makrze). Proszę o pomoc.

    0 10
  • #2 21 Sie 2017 14:19
    lanzul
    Poziom 28  

    bystrotrecon napisał:
    docelowo chciałbym filtrować dane w trzech kolumnach: JB, Zakład, Uzasadnienie

    A jakie operatory ... i/lub ... nie mówiąc o przyrównaniach ... równa się/nie równa się/zawiera/nie zawiera/zaczyna się/nie zaczyna się ... itd. ... ?

    0
  • #3 21 Sie 2017 14:58
    bystrotrecon
    Poziom 7  

    Wybierając np. w JB - GA zostają wiersze z GA, dodatkowo dokładając np. w Zakładzie - A, zostają z tych przefiltrowanych wierszy tylko A ... całość jest zrobiona, tylko nie mogę znaleźć błędu..

    0
  • #4 21 Sie 2017 17:36
    lanzul
    Poziom 28  

    bystrotrecon napisał:
    Wybierając np. w JB - GA zostają wiersze z GA, dodatkowo dokładając np. w Zakładzie - A, zostają z tych przefiltrowanych wierszy tylko A

    Czyli "proste" wybieranie, bez operatorów i przyrównań, tylko jedno kryterium na kolumnę
    bystrotrecon napisał:
    całość jest zrobiona, tylko nie mogę znaleźć błędu

    :) ... jeśli jest zrobiona, to dlaczego nie działa ... :) ...

    Wg mnie ...
    1. Stosujesz metody operowania AutoFiltrem, po to by na końcu próbować "wcisnąć" to w opcję/metodę filtra zaawansowanego ... to dwie różne sprawy.
    Skup się na jednej z tych metod.

    2. Włączyłeś w to nazwy zdefiniowane arkusza podpięte i pod obszary i pod funkcje arkuszowe ... po co ... skoro chcesz stosować makra ... jeśli makra, to tam sobie to wszystko "poustawiasz", przykładowy opis algorytmu, jaki by można zastosować:
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    0
  • Pomocny post
    #6 22 Sie 2017 13:44
    lanzul
    Poziom 28  

    bystrotrecon napisał:
    Wzorowałem się na pliku z dwoma zmiennymi, który działa idealnie. Dodałem trzecią zmienną i wszystko się posypało

    Zwróć uwagę, że:
    1. W pliku "wzorcowym" istniejące tam dwa warunki działają "na krzyż", tzn., że jeśli jeden z nich = "Wszystkie", to sprawdź wartość drugiego i jeśli ten jest inny jak "Wszystkie" to wykonaj kryteria przypisane do tego pierwszego ... albo warunek końcowy, jeśli obydwa kryteria są inne jak "Wszystkie":
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    2. U ciebie są trzy warunki, jak więc ma to działać na takiej zasadzie, jak wyżej ?
    Chcesz się może "bawić w wyznaczniki macierzy trójelementowej" ... :) ... ?

    3. Dodatkowo nagłówki obszaru warunków, u ciebie zakres 'E12:F12' oraz 'H12' muszą być takie same jak w tabeli ... a nie są ... w tabeli masz wstawione odstępy po nagłówku 'JB' (3 odstępy) i 'Uzasadnienie" (72 odstępy), tak więc są to zupełnie inne etykiety nagłówków, jak w obszarze warunków. Jak więc ma to działać ?

    4. Żeby to zadziałało, trzeba to napisać "prawie od początku" z "inną ideą" ... chociaż szkielet i pewne elementy można by pewnie zostawić ... dodatkowo "całą zabwę" psują te "Wszystkie".
    Filtr zaawansowany "nie rozumie" tego i szuka takich wpisów w tabeli, co przy prostym kodzie - "wyłączającym" taki wpis "z rozpatrywania" - powodować może, że kryteria filtrowania z obszaru warunków nie będą traktowane całościowo, a rozłącznie, nie na zasadzie "to i to i to", ale "to albo to albo to" - przykład takiego działania poniżej, można sobie "poeksperymentować":
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    0
  • #7 22 Sie 2017 16:15
    bystrotrecon
    Poziom 7  

    Dziękuje "lanzul" za szczerą chęć pomocy, jednak chyba będę musiał zostać przy dwóch kryteriach filtrowania. Z plikiem "wzorcowym" masz w 100% racje, dzięki Tobie zrozumiałem o co chodzi. Korzystając z podpowiedzi, też nie do końca chce mi to działać - przy samym 'JB' lub 'JB'+'Zakład' jest ok, dodając jednak trzecie kryterium, w moim przypadku 'Uzasadnienie' - filtrowanie dwóch poprzednich zostaje przerwane i filtruje same dane z kolumny: Uzasadnienie. Nie jestem jeszcze na tyle biegły w tych sprawach więc zostanę przy okrojonym rozwiązaniu.

    0
  • #8 22 Sie 2017 17:10
    lanzul
    Poziom 28  

    bystrotrecon napisał:
    jednak chyba będę musiał zostać przy dwóch kryteriach filtrowania

    Nie ... dlaczego (?) ... za szybko się poddajesz ... :) ... Sprawdź jak będzie działać, to co poniżej ... jak nie będzie, to będzie się główkować "dalij":
    Kod: vba
    Zaloguj się, aby zobaczyć kod


    Możesz to jeszcze skrócić do takiej formy i w ogóle wyrzucić wszystkie nazwy zdefiniowane w arkuszu, które wcześniej się do tego odnosiły:
    Kod: vba
    Zaloguj się, aby zobaczyć kod

    0
  • #9 22 Sie 2017 17:54
    bystrotrecon
    Poziom 7  

    Super, jeszcze raz wielkie dzięki. Teraz pięknie wszystko się filtruje. Wydaje się mi, że w ten sposób łatwo rozbudować filtr o kolejne kryteria.. Wytłumacz mi tylko o co chodzi z "zakr_kryt". Chciałbym chociaż w połowie dysponować taką wiedzą. Pozdrawiam.

    0
  • #10 22 Sie 2017 22:03
    lanzul
    Poziom 28  

    bystrotrecon napisał:
    ... o co chodzi z "zakr_kryt"...

    Zakres kryteriów - obszar, w którym podajesz warunki filtrowania filtra zaawansowanego. Jeśli takie warunki nakłada się "pojedynczo", to dzieją się różne "dziwne" rzeczy, jak w pierwszym przykładzie z pętlą. Jeśli, mimo pojedynczych zmian, zastosować do filtracji "cały" obszar warunków, zbiorczo, to działa jak powinno. Pojedyncza zmiana rzutuje tylko na "sformułowanie" całości kryteriów przed ich zastosowaniem, do filtracji brany jest już potem cały, jednolity zakres warunków. Zakres ten ma stałe położenie w arkuszu, dlatego został przypisany w kodzie do stałej.

    0
  • #11 23 Sie 2017 00:10
    bystrotrecon
    Poziom 7  

    Jeszcze raz dziękuje. Uznajmy, że w połowie zrozumiałem :) Pozdrawiam.

    0