Voi răspunde aici solicitării unei cititoare (Anca).
Cerința:
Să se întocmească un formular de comandă către departamentul Aprovizionare,
pentru piesele de schimb la care stocurile existente au scăzut sub cele normate.
Formularul de comandă va cuprinde: Cod piesă, Denumire piesă, UM, Cantitate necesară.
Tabelul sursă arată așa
:
Am realizat două variante de rezolvare a cerinței propuse:
Varianta 1 – cu funcții
Pasul 1:
Identificăm rândurile din tabel care corespund stocurilor sub normă și le numerotăm.
Pentru aceasta, în foaia cu tabelul susă(Sheet1) vom atașa o nouă coloană (Status) cu următoarea formulă:
=IF(G6<D6,MAX($H$4:H5)+1,””)
Care se ”traduce” așa: Dacă stocul este mai mic decât norma, atunci afișează maximul dintre celulele de deasupra+1, dacă nu, nu afișa nimic.
Vom obține o numerotare a rândurilor din tabel care au stocuri sub normă.
Nu mai rămâne decât să extragem aceste rânduri, în fila Formular comanda.
Scriem în C6 (pentru denumirea piesei) următoarea formulă:
=IFERROR(INDEX(Sheet1!$B$6:$B$24,MATCH(ROWS($A$1:A1),Sheet1!$H$6:$H$24,0)),””)
Care se traduce astfel:
Dacă la căutarea numerelor 1,2,3,4……. în coloana H (cea cu numerotarea) obții eroare, atunci nu afișa nimic, dacă nu , caută rândul cu numărul respectiv(returnat de match) pe coloana cu denumiri (B6:B24) și scrie-mi ce găsești acolo.
După care ”tragem” până obținem prima celulă goală.
În mod analog, în D6 scriem aceași formula cu diferența că la INDEX nu mai căutăm pe coloana B din Sheet 1 (Denumirea) ci pe C (UM)
=IFERROR(INDEX(Sheet1!$C$6:$C$24,MATCH(ROWS($A$1:A1),Sheet1!$H$6:$H$24,0)),””)
Iar pentru cantitatea necesară (în E6) vom folosi două funcții de căutare (INDEX), una care să ne dea norma și cealaltă să ne dea stocul, facem diferența între ele și aplicăm iferror ca să nu avem afișate erori (dacă INDEX nu găsește informația)
=IFERROR(INDEX(Sheet1!$D$6:$D$24,MATCH(ROWS($A$1:A1),Sheet1!$H$6:$H$24,0))–
INDEX(Sheet1!$G$6:$G$24,MATCH(ROWS($A$1:A1),Sheet1!$H$6:$H$24,0)),””)
Varianta 2- cu ADVANCED FILTER
Este varianta pe care o prefer, este mai rapidă, poate fi înregistrată într-un macro și nu încarcă fișierul cu formule care în cantitate foarte mare îngreunează funcționalitatea aplicației când modul de calcul este cel automat.
Pentru această variantă va trebui să facem câteva modificări.
Vom atașa tabelului sursă coloana Cantitate Necesară în care vom face diferența între normă și stoc, lăsând blank celulele pentru care diferența este pozitivă.
Selectăm apoi din antetul tabelului (cu CTRL) celulele cu Denumire, UM și Cantitate Necesară în foaia Formular comanda. Acestea sunt coloanele pe care le extragem din tabelul sursă dacă stocul trebuie actualizat.
În fila Formular comanda, în A2, vom scrie condiția pentru care facem filtrarea, pentru primul rând din tabelul sursă (=Sheet1!G6<Sheet1!D6). Celulele A1:A2 reprezintă criteriul pentru filtrarea avansată (pentru mai multe detalii despre filtrul avansat și tipuri de criterii, vezi subiectele Filtru avansat și Advanced Filter Criteria )
Celula A2 va afișa TRUE sau FALSE, după caz.
Acum, nu mai rămâne decât să aplicăm Advanced Filter.
Selectăm cel puțin două celule pe verticală (așa vrea utilitarul, deoarece filtrarea necesită un tabel ca sursă și măcar două rânduri să aibă!) ca să putem iniția filtrarea avansată.
Eu am selectat zona C5:E6 din fila Formular comanda.
Din tab-ul Data, acționăm comanda Advanced care va deschide fereastra Advanced Filter în care completăm câmpurile, ca în imagine. (La mesajul de atenționare apăsați OK)
După care apăsați OK și…. gata!
Puteti ”colora” cu alb textul din celula A2 dacă e inestetic acel True.