Like

Problem z ostatnich dni. Dostawca przysyła nam spis zamówionych produktów w zupełnie innej formie niż my trzymamy w swojej bazie. Chodzi o buty. On przynosi zapis taki jak zwykle jest na fakturze – po kolei model, rozmiar, ilość. Natomiast my mamy przed sobą tabelę – w kolejnych wierszach dziesiątki modeli, w kolumnach rozmiary i podane ilości. Jeśli trzeba ręcznie porównać 5 czy 10 wartości, sprawa jest prosta. Ale nie tu – musimy sprawdzić czy zgadza się lista mająca prawie 1000 pozycji.

Zadanie rozwiązaliśmy przy pomocy połączenia dwóch funkcji: VLOOKUP (WYSZUKAJ.PIONOWO) i MATCH (PODAJ.POZYCJĘ). Pierwszą z tych funkcji omawiam szeroko w innym wpisie.

Rozwiązanie problemu możesz znaleźć w tym pliku. Jeśli chcesz z nim pomajstrować, zrób sobie własną kopię.

Nasza tabela wyglda tak:

Tabela dwuwymiarowa. Mamy tu w kolejnych kolumnach stany magazynowe. Całość to ponad 100 pozycji.

Natomiast kontrahent wrzuca zapytanie w formie takiej:

Skoro mamy jakieś wspólne identyfikatory – kod producenta i rozmiar. Możemy określić jednoznacznie o który produkt chodzi. Zadanie dzielimy na dwa etapy. Najpierw znajdujemy odpowiedni identyfikator.

=vlookup(B3;$G$3:$AD$23; [kolumna];False)

  • B3 to przesłany przez kontrahenta kod produktu
  • $G$3:$AD$23 – to nasza tabela. W pierwszej kolumnie znajduje się kod. Dalej rozmiary
  • [kolumna] – to zrobimy w drugim etapie
  • False – to informacja, że nasza tabela nie jest sortowana i szukamy konkretnej wartości, a nie przybliżenia

A gdy już jesteśmy w odpowiednim wierszu – szukamy odpowiedniej kolumny z rozmiarem by pobrać z niej wartość przy pomocy MATCH:

match(C3; $G$2:$AD$2;0)

  • C3 to komórka w której znajduje się rozmiar w zapytaniu,
  • $G$2:$AD$2 – to nagłówek tabeli, gdzie mamy listę rozmiarów
  • 0 – to sposób pracy funkcji match – znajduje dokładną wartość, gdy zakres jest nieposortowany

Cała funkcja wygląda tak:

=vlookup(B3;$G$3:$AD$23;match(C3; $G$2:$AD$2;0);False)

Na koniec proponuję to obudować jeszcze w formułę tabelową, tak by jedna funkcja obsłużyła nam całe zapytanie i nie trzeba było jej kopiować. Tą metodę opisałem szerzej w innym wpisie.

=array_constrain( ArrayFormula( vlookup(B3:B;$G$3:$AD$23;match(C3:C; $G$2:$AD$2;0);False) ); counta(B3:B);1) – po dodaniu dodatkowych funkcji, znajdujemy wartości dla całego zapytania bez potrzeby kopiowania funkcji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.