VLOOKUP in VBA

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

VLOOKUP in VBA

Mesaj de RAMBO » Joi Feb 16, 2017 12:38 pm

Buna ziua.
Am un tabel oarecare si sa zicem ca pe prima coloana se afla valori numerice (niste ID-uri). Pentru ca intentionez sa modific via VBA continutul unei celule din coloana 3 sa zicem, corespondent unui anume rand (ID) m-am gandit ca cel mai bine e cu VLOOKUP. Asta deoarece ID-urile nu sunt in ordine deoarece tabelul sufera diverse sortari. Lookup_value va fi preluat dintr-un textbox al unui form. Chestia e ca nu reusesc sa scriu formula cu VLOOKUP in VBA, care banuiesc care alta "exprimare".
Mi-ar prinde bine un exemplu.
Multumesc.

mariusc
Mesaje: 269
Membru din: Vin Sep 28, 2012 6:24 pm

Re: VLOOKUP in VBA

Mesaj de mariusc » Joi Feb 16, 2017 12:55 pm

Salut,

Aici gasesti un exemplu de user form cu Vlookup: http://www.itlearning.ro/forum/viewtopi ... e&start=50

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: VLOOKUP in VBA

Mesaj de Dr.Windows » Joi Feb 16, 2017 1:19 pm

Atentie - cu VLOOKUP obtii o valoare... iar din cate am inteles eu, tie iti trebuie defapt o adresa, o referinta sau mai exact un rand pe care se regaseste valoarea pentru a modifica apoi datele de pe o alta coloana... deci nu iti trebuie VLOOKUP.

Daca totusi iti trebuie VLOOKUP, ai primit deja un exemplu de la mariusc mai sus, pe scurt, pentru ca nu imi place sa caut cod in fisiere atasate decat daca este absolut necesar, apelul acestei functii ar fi in felul urmator:

Cod: Selectaţi tot

Application.WorksheetFunction.VLookup(10,range("A1:B10"),2,0)
"Trucul" in VBA este ca zona in care se face cautarea nu este specificata ca si in formula doar cu zona "A1:B10" ci trebuie folosit obiectul RANGE("A1:B10").

Pe de alta parte, in cazul tau cred ca mai bine folosesti metoda FIND pentru a gasi pozitia celulei si apoi poti sa modifici o alta celula de pe acelasi rand:

Cod: Selectaţi tot

Sub CautaCelula()
    Dim Celula As Range
    Dim ID As Double
    
    ID = 10
    
    Set Celula = Range("A1:A10").Find(What:=ID)
    If Celula Is Nothing Then
        Debug.Print "Nu a fost gasita nici o valoare"
    Else
        Debug.Print "Adresa celulei gasite: " & Celula.Address
        Debug.Print "Randul pe care am gasit informatia: " & Celula.Row
        'Modific celula de pe coloana C
        Range("C" & Celula.Row).Value = "X"
    End If
End Sub

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

Re: VLOOKUP in VBA

Mesaj de RAMBO » Vin Feb 17, 2017 4:15 pm

Well... yeah. In realitate nu aveam nevoie de VLOOKUP, ci doar asa credeam eu ca o sa rezolv problema. Codul tau este exact ce-mi trebuia. Bonus: cand o sa am nevoie real de VLOOKUP in VBA macar stiu cum sa fac.
Multumesc.

Închis

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