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: 70186 Skopiuj do schowka VlookUp jako makro w VBA
Autor Wiadomość
Gurallek
Świeżak


Wersja: Win Office 365
Posty: 5
Wysłany: 19-02-2021, 12:48   VlookUp jako makro w VBA

Cześć,

szukałem na forum ale niestety nigdzie nie mogłem znaleźć odpowiedzi na moje pytanie.

Chciałbym stworzyć makro działające jak vlookup. Na samym początku makro pyta : zaznacz co chcesz szukać - następnie my zaznaczamy zakres jedno-kolumnowy. następnie makro pyta : gdzie chcesz szukać - następnie zaznaczamy zakres, w którym chcemy szukać. Następnie makro pyta z której komórki chcesz brać dane : my wpisujemy numer kolumny. Doszedłem do etapu gdzie makro nas pyta gdzie chcemy szukać i niestety nie potrafię sobie z tym poradzić, nie umiem kodzie vlookup odwołać się do zakresu, który zaznaczyłem. Rzućcie okiem na mój kod :

Kod:
Dim tbl As Range
Dim tbl2 As Range
Dim tbl3 As Range
Dim n As Integer
Dim a As Integer
Dim b As Variant

Set tbl = Application.InputBox(prompt:="Zaznacz czego chcesz szukac", _
                      Title:="Dane wejściowe", _
                      Type:=8)
               
 If tbl.Columns.Count > 1 Then
      MsgBox prompt:="Zaznacz po czym chcesz szukac", _
             Title:="bład", _
             Buttons:=vbOKOnly + vbCritical
  End If
 
Set tbl2 = Application.InputBox(prompt:="Zaznacz gdzie chcesz szukać", _
                      Title:="Dane wejściowe", _
                      Type:=8)
                     
 Set tbl3 = Application.InputBox(prompt:="Zaznacz pierwsza komórke dla wyniku", _
                      Title:="Dane wejściowe", _
                      Type:=8)
             
             
 'a = tbl.Rows.Count
 
       
'  On Error Resume Next
       
  'For n = 0 To a
 
  b = Chr(34)
 
 
   Range("P2").Value = "=VLOOKUP(" & b & tbl.Cells(1, 1).Value & b & ", tbl2.range,2,0)"


  'Next n


byłbym bardzo wdzięczny za jakieś wskazówki.

oczywiście na samym końcu chciałbym wrzucić to w pętle ale póki co nie potrafię poradzić sobie z jedną komórka :(

dzięki :)
ID posta: 400677 Skopiuj do schowka
 
 
wczesny 
Stały bywalec Excelforum


Wersja: Win Office 2016
Pomógł: 31 razy
Posty: 269
Wysłany: 19-02-2021, 14:12   

Daj załacznik, to będzie szybciej.
Ewentualnie spróbuj: https://docs.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.vlookup
Kod:

Range("P2").Value = Application.Vlookup()

Skoro tbl jest zakresem, to po co piszesz tbl.range.
  
ID posta: 400686 Skopiuj do schowka
 
 
Rafał B.
Exceloholic



Wersja: Win Office 2016
Pomógł: 33 razy
Posty: 232
Wysłany: 19-02-2021, 14:19   

Kod:
Application.Vlookup != Application.WorksheetFunction.Vlookup

Te dwa przykłady różnią się wiązaniem: warto dodać, że w przypadku błędu pierwsza funkcja zwraca wartość (typ - błąd), natomiast druga wykonuje Err.Raise.
_________________
Jest niemal niemożliwe nauczenie dobrego programowania uczniów, którzy byli narażeni na kontakt z BASIC: jako potencjalni programiści są okaleczeni, bez nadziei na poprawę. (Edsger Dijkstra, pionier informatyki).
Po części dotyczy również VBA.
Ostatnio zmieniony przez Rafał B. 19-02-2021, 14:35, w całości zmieniany 1 raz  
ID posta: 400687 Skopiuj do schowka
 
 
wczesny 
Stały bywalec Excelforum


Wersja: Win Office 2016
Pomógł: 31 razy
Posty: 269
Wysłany: 19-02-2021, 14:33   

Rafał, czytałem watek na forum :)
To i to rozwiazanie zadziała, a obsługi błędów kolega jeszcze nie ma.
ID posta: 400689 Skopiuj do schowka
 
 
Gurallek
Świeżak


Wersja: Win Office 365
Posty: 5
Wysłany: 19-02-2021, 14:37   

Hej Panowie,

bardzo dziekuje za szybka odpowiedz. W zalaczniku przykladowa tabela oraz kod.

jeszcze raz dzieki za pomoc!

Test_1.xlsm
Pobierz Plik ściągnięto 4 raz(y) 16.13 KB

ID posta: 400692 Skopiuj do schowka
 
 
wczesny 
Stały bywalec Excelforum


Wersja: Win Office 2016
Pomógł: 31 razy
Posty: 269
Wysłany: 19-02-2021, 15:22   

Co konkretnie chcesz znaleźć? Wiek danej osoby?
Bo szukana to tekst a nie zakres.
Sprubuj tak:

Kod:

Range("P2").Value = Application.VLookup(tbl, tbl2, 1, 0)


Pamiętaj, że tbl - wybierasz jedną wartość, tbl2 - Zaznaczasz całą tabelę.
  
ID posta: 400698 Skopiuj do schowka
 
 
Gurallek
Świeżak


Wersja: Win Office 365
Posty: 5
Wysłany: 19-02-2021, 15:47   

@Wczesany

bardzo mi pomogłeś - wystarczyło dodac application i sprawa sie rozwiazała :)

dziekuje Ci bardzo!!!

udanego dnia
ID posta: 400701 Skopiuj do schowka
 
 
wczesny 
Stały bywalec Excelforum


Wersja: Win Office 2016
Pomógł: 31 razy
Posty: 269
Wysłany: 19-02-2021, 15:49   

To tak nie do końca.
Ty dodawałeś formułę w arkuszu, a ja używając funkcji arkuszowej dodałem wartość, która ta funkcja zwraca.
ID posta: 400702 Skopiuj do schowka
 
 
Gurallek
Świeżak


Wersja: Win Office 365
Posty: 5
Wysłany: 19-02-2021, 16:33   

@wczesany

a rzucilbys okiem jaki tutaj blad robie :

On Error Resume Next

Kod:
             
 a = tbl.Rows.Count
 
       
  On Error Resume Next
       
  For n = 1 To a
 
 
 
 
   tbl4.Offset(n - 1, 0).Value = Application.VLookup(tbl.Cells(n, 1).Value, tbl2.Cells(n, 1).Value, tbl3, 0)


  Next n


Wrzucam to w petle tak by zrobic ta sama czynnosc dla kazdej komórki z wybranego zakresu ale caly czas mi wyrzuca arg ;(
  
ID posta: 400707 Skopiuj do schowka
 
 
wczesny 
Stały bywalec Excelforum


Wersja: Win Office 2016
Pomógł: 31 razy
Posty: 269
Wysłany: 19-02-2021, 17:30   

Poczytaj o funkcji Vlookup i sprawdź jakie argumenty przyjmuje. Link masz powyżej.
ID posta: 400711 Skopiuj do schowka
 
 
Gurallek
Świeżak


Wersja: Win Office 365
Posty: 5
Wysłany: 19-02-2021, 20:37   

Wszystko działa. Jeszcze raz dzięki !
ID posta: 400721 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