Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 64717 Skopiuj do schowka Wyszukiwanie po dwóch parametrach
Autor Wiadomość
xfish
ExcelSpec



Pomógł: 103 razy
Posty: 394
Wysłany: 11-04-2019, 09:08   Wyszukiwanie po dwóch parametrach

Mam problem z jednym (pewnie prostym) kodem.
Jest formularz gdzie wpisuję dwa parametry.
Potrzebuję kawałek kodu, który na podstawie tych parametrów wyszuka w tabeli wartość z trzeciej kolumny. (Coś a'la Vlookup z dwoma parametrami)

Vlookup dwa paramtry VBA.xlsm
Pobierz Plik ściągnięto 6 raz(y) 15.24 KB

ID posta: 365847 Skopiuj do schowka
 
 
Tajan


Pomógł: 4311 razy
Posty: 9587
Wysłany: 11-04-2019, 10:20   

Przykładowo:
Kod:
Private Sub Cyfra_Change()
Call szukaj
End Sub

Private Sub Litera_Change()
Call szukaj
End Sub



Private Sub szukaj()
Dim adr As String
Dim kom As Range
Dim row As Long

Me.TextBox3 = ""

If Me.Cyfra = "" Or Me.Litera = "" Then Exit Sub

With Arkusz1.ListObjects(1).ListColumns
   Set kom = .Item("litera").Range.Find(Me.Litera, lookAT:=xlWhole)
   If Not kom Is Nothing Then
      adr = kom.Address
      Do
        row = kom.row - kom.ListObject.Range.row
        If .Item("cyfra").Range(row) = CLng(Me.Cyfra) Then
            Me.TextBox3 = .Item("wynik").Range(row)
            Exit Do
        End If
        Set kom = .Item("litera").Range.FindNext(kom)
      Loop Until kom.Address = adr
   End If
End With
End Sub
ID posta: 365857 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 2016
Pomógł: 1249 razy
Posty: 4291
Wysłany: 11-04-2019, 10:50   

W tym przypadku możesz też użyć funkcji użytkownika, bazującej na funkcjach arkuszowych:
Kod:
Function VLookUp2(par1, par2)
   Application.Volatile
   Dim tabl
   tabl = Evaluate(Range("Tabela1[Litera]").Address & "&" & Range("Tabela1[Cyfra]").Address)
   VLookUp2 = Application.Index(Range("Tabela1[Wynik]"), Application.Match(par1 & par2, tabl, 0))
End Function
Można dorobić sprawdzanie błędów. Funkcja musi być ulotna tylko wtedy, gdy dane tablicy będą zmieniane i będziesz oczekiwać automatycznego przeliczenia wyników.

Kopia Vlookup dwa paramtry VBA.xlsm
Pobierz Plik ściągnięto 2 raz(y) 18.52 KB

ID posta: 365858 Skopiuj do schowka
 
 
J_B 
Excel Expert


Pomógł: 269 razy
Posty: 775
Wysłany: 11-04-2019, 11:21   

I jeszcze z wykorzystaniem ADODB

Vlookup dwa paramtry VBA.xlsm
Pobierz Plik ściągnięto 3 raz(y) 19.66 KB

ID posta: 365862 Skopiuj do schowka
 
 
xfish
ExcelSpec



Pomógł: 103 razy
Posty: 394
Wysłany: 11-04-2019, 13:38   

Nie da się tego jakoś prościej zrobić?
Może wykorzystując vlookup stworzyć listę i później z tej listy wyszukać drugim vlookup'em?
ID posta: 365868 Skopiuj do schowka
 
 
xfish
ExcelSpec



Pomógł: 103 razy
Posty: 394
Wysłany: 11-04-2019, 14:14   

Znalazłem takie dosyć proste rozwiązanie:
Kod:
Private Sub Cyfra_Change()
Dim myValue As Variant
myValue = Evaluate("INDEX($C$2:$C$18,MATCH(""" & Litera.Text & """&""" & Cyfra.Text & """ ,$A$2:$A$18&$B$2:$B$18,0))")
TextBox3 = myValue
End Sub
  
ID posta: 365871 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe