Wyszukiwanie na podstawie trzech kryteriów


3

Mam ten arkusz.

Trzy kryteria

Chcę sprawdzić wartość wykonania (%) na podstawie trzech kryteriów: roku, tygodnia i maszyny. Więc chcę powiedzieć szukaniu, aby szukać Rok: 2018, Tydzień: 2, Maszyna: Wypełniacz, powinienem uzyskać liczbę 100%. Chcę zrobić to samo dla daty CILT, czasu trwania (%) i wyniku.

WYSZUKAJ.PIONOWO wydaje się bardzo ograniczone dla tego rodzaju rzeczy.

Znalezione przeze mnie informacje o INDEKSIE i PODAJNIKU nie są dobrze wyjaśnione.

Czy VLOOKUP może to zrobić? Jeśli nie, w jaki sposób można uzyskać pożądane wartości?

Mam tę formułę

= INDEKS („Dane L5”! M5: M15, SUMPRODUCT (- („Dane L5”! A5: A15 = „2018”) („Dane L5”! B5: B15 = „2”) („Dane L5”! F5: F15 = „Filler”) * ROW („Dane L5”! 5: 15)))

Ale zwraca wartość o jeden wiersz w dół. Innymi słowy, dla roku: 2018, tygodnia: 2, maszyny: Wypełniacz zwraca 81,8% zamiast 100%. Co może być przyczyną?


Pomiędzy każdym z nich masz * (prawda? Sugerowałbym odjęcie 4 od wyniku SUMPRODUCT (). Obecnie zwróci numer wiersza, w którym spełnione są trzy warunki, tj. 8. Ponieważ twój tabela indeksu rozpoczyna się w wierszu 5, formuła powinna zwrócić zawartość M12, która jest pusta. Nie jestem pewien, dlaczego otrzymujesz M9.
Bandersnatch 15.01.2018

Myślę, że szukasz SUMIF (), to suma byłaby oparta na twoich kryteriach. czytaj więcej: techonthenet.com/excel/formulas/sumif.php
iSR5

Odpowiedzi:


1

Zadałeś trzy pytania.

Jednym z nich jest: „Czy można w tym celu użyć funkcji WYSZUKAJ.PIONOWO ()?” Miroxlav opublikował doskonałą odpowiedź pokazującą, jak to zrobić za pomocą kolumny pomocniczej.

Drugie pytanie dotyczy tego, jak uzyskać pożądany rezultat, a trzecie pytanie, jaki może być powód, dla którego twoja formuła zwraca złą odpowiedź. Spróbuję odpowiedzieć na dwa ostatnie.

Twoja formuła jest bardzo bliska prawidłowego działania. Zróbmy rozwiązywanie problemów, aby dowiedzieć się, co jest nie tak.

Po pierwsze, twoja formuła zawiera kilka literówek - brak znaku mnożenia w 2 miejscach między nawiasami. Excel zaproponował korektę tego i usunąłem odniesienia do arkusza danych („Dane L5”!) Dla uproszczenia:

=INDEX(M5:M15,SUMPRODUCT(--(A5:A15="2018")*(B5:B15="2")*(F5:F15="Filler")*ROW(5:15)))

Program Excel ma wbudowaną funkcję rozwiązywania problemów, w której możesz podświetlić część formuły na pasku formuły i wpisać F9, aby zobaczyć wartość podświetlonej części formuły.

Kliknij komórkę zawierającą formułę, a następnie podświetl wyrażenie (A5: A15 = „2018”) na pasku formuły i naciśnij F9 (klawisz funkcyjny 9). Zobaczysz tablicę zawierającą wszystkie FALSEwartości. Oznacza to, że brak komórki w A5: A15 = „2018”. To dlatego, że masz 2018 w cytatach. Jeśli usuniesz cudzysłowy i spróbujesz ponownie, otrzymasz tablicę, {TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}której oczekujesz - pierwsze 5 komórek w zakresie to = 2018.

Ten sam problem występuje w drugim wyrażeniu - usuń znaki cudzysłowu wokół 2 cali (B5:B15="2"). Trzeci wyraz (F5:F15="Filler") nie trzeba cytaty, bo „wypełniacz” to tekst, zamiast liczby.

Teraz zaznacz (A5:A15=2018)*(B5:B15=2)*(F5:F15="Filler")i wciśnij F9. Zobaczysz wynik jest {0;0;0;1;0;0;0;0;0;0;0}. Co się tu stało? Mnożenie tablic wartości logicznych konwertuje wartości Prawda / Fałsz na 1 i 0, a także wykonuje równoważnik logicznego AND (). Zatem wynik ten mówi, że jest tylko jedna pozycja w zakresie wierszy 5:15, gdzie kolumna A to 2018, kolumna B to 2, a kolumna F to „Wypełniacz”. I ta pozycja jest czwarta.

Następnie twoja formuła zwielokrotnia tę tablicę razy tablicę liczb wierszy 5:15. Używając F9, możesz zobaczyć ten wynik - {0;0;0;8;0;0;0;0;0;0;0}. Teraz SUMPRODUCT () sumuje elementy tej tablicy i zwraca wynik 8, który jest numerem wiersza, w którym wszystkie trzy warunki są spełnione. Ponownie możesz zobaczyć ten wynik za pomocą F9.

A teraz jest główny problem - po tych pośrednich obliczeniach twoja formuła jest =INDEX(M5:M15,8):, która zwraca ósmy element z zakresu M5: M15. Ale nie chcesz ósmego elementu, potrzebujesz czwartego, ponieważ zakres M5: M15 zaczyna się w rzędzie 5, a 100% znajduje się w czwartej komórce w zakresie M5: M15.

Rozwiązaniem jest odjęcie 4 od SUMPRODUCT ():

=INDEX(M5:M15,SUMPRODUCT((A5:A15=2018)*(B5:B15=2)*(F5:F15="Filler")*ROW(5:15))-4)

To zwraca poprawny wynik - 100%.

Uwagi:

  1. Nie udało mi się uzyskać zwrotu z formuły 81,8%, bez względu na to, jak bardzo się starałem.
  2. Podwójne jednoargumentowe ujemne (-) w formule nie jest konieczne. Jest często używany do konwersji tablic logicznych na 1 i 0 ', ale zwielokrotnienie tablic osiąga to.

Mam nadzieję, że to pomoże. Przedstawione przeze mnie zmiany pozwolą na prawidłowe działanie formuły. Użyj odpowiedzi Miroxlav, jeśli chcesz użyć WYSZUKAJ.PIONOWO (). Powodzenia.


Wielkie dzięki. Działa to z nawiasami klamrowymi. {= INDEKS („Dane L5”! M5: M15, SUMPRODUCT ((„Dane L5”! A5: A15 = $ B $ 1)) * („Dane L5”! B5: B15 = 2) * („Dane L5”! F5: F15 = B12) * ROW („Dane L5” 5: 15)) - 4)}
user823527

1

Tak, funkcja WYSZUKAJ.PIONOWO () może to zrobić, oferując potrzebną pojedynczą wartość (jeśli potrzebujesz sumy, użyj SUMIF ()).
W takich przypadkach zazwyczaj tworzę i używam klucza złożonego dla VLOOKUP ().
W twoim przypadku taki klucz po prostu zawiera wartości ze wszystkich trzech kolumn.
Umożliwia określenie kryteriów wyszukiwania za pomocą trzech kolumn.

Detale:

  1. Wstaw kolumnę A z nagłówkiem Rok | Miesiąc | Maszyna i wzór (dla A5)

    =B5 & "|" & C5 & "|" & D5
    

    Więc dla A5 to oceni 2018|1|Filler.

  2. Następnie rozłóż formułę w dół.

  3. Gdziekolwiek chcesz przeprowadzić wyszukiwanie, złóż ten sam klucz i wykonaj VLOOKUP (), na przykład:

    =VLOOKUP("2018|2|Filler", A5:R9999, 8, FALSE)
    
    • Dostosuj wyszukiwane wyrażenie do potrzeb, np. 2018|1|LabelerLub złóż je z wartości w innych komórkach.
    • Dostosuj zakres danych A5:R9999do rzeczywistego.
    • Dostosuj wartość, 8aby dopasować kolumnę Execution (%), licząc od lewej kolumny powyższego zakresu.

Gdy już zaczniesz działać, możesz także utworzyć podobny mechanizm wyszukiwania w oparciu o pozostałe trzy kolumny. Po prostu dodaj kolejną kolumnę po lewej stronie tych samych danych. (Powód: funkcja WYSZUKAJ.PIONOWO () oczekuje, że kolumna odnośnika będzie znajdowała się jak najbardziej na lewo).

Uwaga: Zazwyczaj ważne jest, aby mieć separator (w powyższym przykładzie użyłem |), aby klucze były unikalne. W przeciwnym razie 2018, 10, Filleri 2018, 1, 0Fillerstworzy ten sam klucz, co jest oczywiście błędne. W przypadku separatora użyj znaku nieobecnego w wartościach.

AKTUALIZACJA: To rozwiązanie działa. W komentarzach poniżej wspomniano o niektórych problemach, które zostały teraz poprawione lub wyjaśniono punkty. Dzięki Rajesh za korektę.


Już głosowałem odpowiedź, powód 1, użyte kryteria nie pasują do PO, czyli tak naprawdę „2018,2, Filler”. Podstawowym powodem jest to, że ta formuła nie zwróci żadnego rekordu, nawet jeśli kryteria będą zgodne.
Rajesh S

TAK, przetestowałem Formułę, a następnie głosowałem na nią. Twoja formuła przy użyciu kryteriów 2018 | 1 | Filler nie zwraca ŻADNEJ WARTOŚCI KOMÓREK. A przez RECORD rozumiem WARTOŚĆ MECZOWĄ.
Rajesh S

I tak, Excel zwraca również rekordy, które pasują do kryteriów.
Rajesh S

@RajeshS - formuła wymaga korekty przed użyciem, ponieważ próbka zawiera niektóre pominięte kolumny ... Liczba 8musi zostać dostosowana. Wkładam notatkę do odpowiedzi.
miroxlav

1
@miroxlav, wiem, że wytyczne witryny wymagają uprzejmości i pochwalam za niezwykle uprzejmą odpowiedź. Rajesh, prawdopodobnie ustanowiłeś rekord dla najbardziej upartych odpowiedzi w najkrótszym czasie w historii tej strony. I jest ku temu dobry powód. Chciałbym uprzejmie zasugerować, abyś starał się zdobyć szacunek dobrymi, dokładnymi odpowiedziami i powstrzymał się od głosowania nikogo . - Bandersnatch 2 godziny temu
Bandersnatch

0

Twoja formuła Powinna to,

{=INDEX(K$96:K$100,SUMPRODUCT(($D$96:$D$100="2018")*($E$96:$E$100=2)*($I$96:$I$100="Filler")*ROW($96:$100)))}

Uwaga: tylko Musisz wstawić znak „*” między każdym zakresem danych i nie używać „- -” po SUMPRODUCT.

Uwaga: to formuła CSE, więc zakończ z Ctrl + Shift + Enter .

Użyj mojego zakresu danych zamiast mojego.

Mam nadzieję, że ci to pomoże.


Moja SUGESTIA jest prosta, jeśli GŁOSUJESZ ODPOWIEDŹ, włóż POWÓD, aby pomógł mi ZREALIZOWAĆ i zaimprowizować ODPOWIEDŹ.
Rajesh S

Teraz umieściłem {} na obu końcach, aby uczynić go formułą CSE i to był mój błąd. Podczas wklejania tutaj właśnie brakowało mi nawiasów. Myślę, że to był powód, aby głosować w DÓŁ.
Rajesh S

1
Może być wiele przyczyn, oto kilka: 1. Nie odpowiedziałeś na pytanie PO. 2. Opublikowałeś prawie dokładnie (tylko zakresy danych są różne) tę samą formułę, z której korzysta już OP, co nie daje mu właściwej odpowiedzi. 3. Opublikowana formuła zawiera złą odpowiedź. 4. Ze względu na użycie Sumproduct nie jest to formuła tablicowa, więc nie trzeba go wprowadzać za pomocą CSE.
Bandersnatch
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.