VLOOKUP cu VBA

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: VLOOKUP cu VBA

Mesaj de TudyBTH » Joi Iul 26, 2018 1:53 pm

Buna,

Solutia functioneaza si fara VBA.

Cod: Selectaţi tot

=IF([@NUME]="";"";VLOOKUP([@NUME];nomenclator;2;FALSE))
In clipa in care utilizatorul selecteaza alta activitate decat cea implicita (afisata de formula odata cu selectarea numelui) se inlocuieste formula cu valoarea selectata. Trebuie doar sa selectati "Ignor Erros" sau sa anulati restrictia din Data Validation ca sa nu para erorile "Inconsitent formula".
Marele dezavantaj insa la aceasta solutie este (datele fiind intr-un tabel) posibilitatea ca cineva sa faca (accidental chiar) un Restor formula, lucru care ar modifica din nou datele selectate din intreaga coloana. Deci nu merita, zic eu.


Pentru implementarea solitiei VBA in alt fisier:
- click-dreapta pe TAB-ul foii si selectati View Code
- copiati codul din mesaj si lipiti-l in modulul foii
- inlocuiti denumirile definite la inceputul codului cu cele din fisier.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

RAMBO
Mesaje: 474
Membru din: Mie Noi 25, 2009 2:17 pm
Localitate: Pitesti

Re: VLOOKUP cu VBA

Mesaj de RAMBO » Joi Iul 26, 2018 3:15 pm

100% in timp s-ar intampla un restore formula. Adaptarea incipienta la fisierul original am facut-o repede. Ceea ce inca nu am reusit este sa aplic "rationamentul" din codul VBA si pentru alte campuri (coloane) in tabelul de introducere a datelor. Adica, odata ce aleg un nume, VBA sa returneze zona (care in fisierul de exemplu era numita activitate) si schimbul; ambele se regasesc in nomenclator si ambele sunt supuse aceleiasi reguli (automat cu posibilitate de modificare manuala). De asemenea mai mult ca sigur ca se vor adauga la nomenclator si alte coloane in timp si care, probabil, vor face obiectul modificarii codului VBA. De aceea as vrea sa-l inteleg. Dar cum tentatia e prea mare... atasez fisierul original.
In foaia data feed la selectarea unui nume, se returneaza zona, si ar trebui si schimbul (A, B, C). Nota: schimbul nu se refera la tura (zi, noapte) ci la o grupare de oameni, dar asa l-au denumit cei din fabrica, asa ramane.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

TudyBTH
Moderator
Moderator
Mesaje: 993
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: VLOOKUP cu VBA

Mesaj de TudyBTH » Joi Iul 26, 2018 3:39 pm

Buna,

Am adaptat codul si am pus cateva comentarii care ar trebui sa va ajute daca mai adaugati si alte coloane
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

RAMBO
Mesaje: 474
Membru din: Mie Noi 25, 2009 2:17 pm
Localitate: Pitesti

Re: VLOOKUP cu VBA

Mesaj de RAMBO » Vin Iul 27, 2018 7:52 am

Multumesc foarte mult. E perfect.

RAMBO
Mesaje: 474
Membru din: Mie Noi 25, 2009 2:17 pm
Localitate: Pitesti

Re: VLOOKUP cu VBA

Mesaj de RAMBO » Vin Ian 04, 2019 2:25 pm

Revin cu rugamintea de a ma ajuta sa mai modific codul dupa niste noi cerinte. Am incercat si singur, nu reusesc deloc, desi au fost puse comentarii in cod de catre creatorul lui pentru a intelege cum functioneaza si tot degeaba; ce-i drept si situatia e un pic diferita.
In foaia "data feed" la alegerea unui operator din lista (coloana Nume operator), VBA returneaza automat o serie de date ce se regasesc in nomenclatoare, inclusiv salariul in coloana salariu. Acest din urma aspect nu mai este valabil si se doreste urm modificare: in momentul cand se selecteaza un operator, sa nu mai returneze salariul (care pana acum era dependent de om/persoana si de aceea valoarea se regaseste in nomenclatorul/tabelul "operatori"). In schimb atunci cand se selecteaza o operatie (coloana "Descriere operatie") sa se returneze salariul corespondent din nomenclatorul/tabelul "Operatii" coloana "valr".
Am incercat sa "copiez" codul si sa-l adaptez, am bagat un alt Option explicit si cred ca am reusit sa-l stric si pe cel vechi.

Multumesc.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Scrie răspuns

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”