Centar za edukaciju-BiH



#1 04.06.2015 19:36
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:VBA Excel Vlookup Vs Index(Match)
list1 - list iz kojeg uzimamo vrijednost celije za traziti, celija C5
list2 - list u kojem trazimo celiju C5 iz List1 , rang je A1:K950

INDEX, MATCH je puno brza naredba od VLOOKUP

sintaksa INDEX,MATCH je sljedeca:
INDEX ( polja_pretraživanja, red)
MATCH(vrijednost_pretraživanja;polja_pretraživan
ja;[vrsta_podudaranja])
=>
INDEX ( polja_pretrazivanja , MATCH formula )

PreuzmiIzvorni kôd (Visual Basic):
  1. 'sa VLOOKUP RADI
  2.    With Application.WorksheetFunction
  3.         Cells(1, 1) = .VLookup(Sheets("List1").Range("C5"), _
  4.         Sheets("List2").Range("a1:k950"), 2, False)
  5.     End With
  6.  
  7.     'sa INDEX(MATCH) NE RADI
  8.    With Application.WorksheetFunction
  9.         Cells(2, 1) = .Index(Sheets("List2").Range("A1:k950"), _
  10.                     .Match(Sheets("List1").Range("C5"), _
  11.                     Sheets("List2").Range("A1:K950"), 0), 0)
  12.     End With

molim pomoc
zivot je moja domovina.
↑  ↓

#2 05.06.2015 12:58
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
Kad bi znao sta zelis uraditi onda bi mogao mozda vise.
Ovako evo ovo.
Naredba index ti je na nivou aplikacije znaci da bi radila pod with treba pisati:
With Application
Ili staviti
Application.Index(...

Poslije imas naredbu koja jeste na niou Application.WorksheetFunction

Kadfa stavis tacku pojavi ti se spisak komandi i u vecini sliucajeva to su te i opet imas object Borwser pa tamo mozes vidjeti sta cemu pripada.

Imas naredbe
Lookup ---> moze se koristiti na dva nacina
Vlookup
Match

E sad sve zavisi sta hoces jer nisu one bas iste.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 05.06.2015 21:40
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
ma samo ucim nista vazno

Prilozi:
Informacije o tipu datoteke za:rar  test1.rar
Preuzimanja:363
Velicina datoteke:14.54 KB


zivot je moja domovina.
↑  ↓

#4 05.06.2015 22:58
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
Mnogo si ti toga naucio.
U List 3 imas neki spisak a pretpostavka da u list 2 hoces neki podatak sa list3 na osnovu nekog parametra.
Znaci napisi:
Na osnovu parametra iz kolomne XX hocu da mi u list2 da podatak iz kolone yy.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 06.06.2015 07:42
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
na osnovu parametara iz list2, celije(red,kolona), hocu da mi ispise podatke iz list3 u list1
zivot je moja domovina.
↑  ↓

#6 06.06.2015 11:12
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
nisam stigao gornje ispraviti/dodati

Prilozi:
Informacije o tipu datoteke za:rar  test1.rar
Preuzimanja:390
Velicina datoteke:15.95 KB


zivot je moja domovina.
↑  ↓

#7 06.06.2015 11:52
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
Uff.
Na osnovu parametara ili parametra neznam list2 kolona b hocu da mi ispise podatke iz list3 u list1.

primjer:
Kolona b2=204

Podaci koje treba prenijeti iz list3 u list1:
204    paketi    11:00    13:00

Eto ovako nekako opsi.
Ovo je prekomplikovano da bih uspio skontati sta si naumio.
Ukoliko je to na osnovu vise podataka (uslova) onda je jos komplikovanije.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 06.06.2015 12:50
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
test1 radi upravo to
problem je to napraviti sa index(match)
pokreni test1 i vidjeces da radi,
jbg , shvatio sam da sam informaticki nepismen i neznam objasniti pa zato ne kuzis sto hocu reci.

PreuzmiIzvorni kôd (Visual Basic):
  1. Sub trazi()
  2.  Sheets("List1").Select
  3.  Dim datum As Range
  4.  Dim rndDatum As Range
  5.  Dim red As Integer
  6.  Dim broj As Integer
  7.  Dim red1 As Integer
  8.  Dim ime As String
  9.  ime = "ivan"
  10.  Set rngDatum = Sheets("List2").Range("B1:G1") ' selectiram datume za koje zelim ispis
  11. red = Application.WorksheetFunction.Match(ime, Sheets("List2").Range("A:A"), 0) 'nadem red u kojem je ime ivan
  12.    For Each datum In rngDatum 'za sve datume u redu 1 lista2
  13.        If datum >= "2.1.2015." And datum <= "4.1.2015." Then 'uvjet za koje datume treba ispis
  14.            broj = Val(Trim(Sheets("List2").Cells(red, datum.Column))) 'uzimam broj sa kojim cu traziti u vlookup
  15.            'sa VLOOKUP RADI
  16.            'HTIO SAM OVO:VLookup(broj, Sheets("List3").Range("A1:D7"), {2,3,4}, False)
  17.            'ali mi neda ovo:{2,3,4}
  18.            ' pa sam 3 x napisao vlookup za svaki 2,3 i 4
  19.            kolona2 = Application.WorksheetFunction.VLookup(broj, Sheets("List3").Range("A1:D7"), 2, False)
  20.             kolona3 = Application.WorksheetFunction.VLookup(broj, Sheets("List3").Range("A1:D7"), 3, False)
  21.             kolona4 = Application.WorksheetFunction.VLookup(broj, Sheets("List3").Range("A1:D7"), 4, False)
  22.             Cells(red1, 1) = datum
  23.             Cells(red1, 2) = ime
  24.             Cells(red1, 3) = kolona2
  25.             Cells(red1, 4) = kolona3
  26.             Cells(red1, 5) = kolona4
  27.         End If
  28.         red1 = red1 + 1
  29.     Next datum
  30.    
  31.     'sa INDEX(MATCH) NEZNAM
  32.    
  33. End Sub

hmm, ja mislim da ti malo mene mucis. Uglavnom mi das neku smjernicu pa me prisaljavas da zakljucim i rijesim to. Ne dajes mi konacno rijesenje vec oces da sam uz tvoje naputke dodem do tog istog rijesenja.
dobro, nema veze.
Vidim ja da ti nemas pametnija posla nego samnomtu čatati Laughing
zivot je moja domovina.
↑  ↓

#9 07.06.2015 12:48
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,642


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
PreuzmiIzvorni kôd (Visual Basic):
  1. indeksmath:
  2.     'sa INDEX(MATCH) NEZNAM
  3.    Dim a As Integer
  4.     Dim b
  5.      Set rngDatum = Sheets("List2").Range("B1:G1")
  6.      red = Application.WorksheetFunction.Match(ime, Sheets("List2").Range("A:A"), 0)
  7.      For Each datum In rngDatum
  8.         If datum >= "2.1.2015." And datum <= "4.1.2015." Then
  9.             broj = Val(Trim(Sheets("List2").Cells(red, datum.Column)))
  10.             kolona2 = Application.Index(Sheets("List3").Range("b1:b7"), WorksheetFunction.Match(broj, Sheets("List3").Range("A1:A7")))
  11.             kolona3 = Application.Index(Sheets("List3").Range("c1:c7"), WorksheetFunction.Match(broj, Sheets("List3").Range("A1:A7")))
  12.             kolona4 = Application.Index(Sheets("List3").Range("d1:d7"), WorksheetFunction.Match(broj, Sheets("List3").Range("A1:A7")))
  13.             Sheets("List1").Select
  14.             Cells(red1, 1) = datum
  15.             Cells(red1, 2) = ime
  16.             Cells(red1, 3) = kolona2
  17.             Cells(red1, 4) = kolona3
  18.             Cells(red1, 5) = kolona4
  19.         End If
  20.         red1 = red1 + 1
  21.     Next datum

Moze to i mnogo krace ali da bude isto ko tvoje.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 17.06.2015 17:58
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,807


Predmet:Re: VBA Excel Vlookup Vs Index(Match)
Index(sheets("Ime lista").Range("stupac iz kojega dobivamo podatak"), Match("vrijednost koju trazimo", Sheets("Ime Lista").Range("stupac u kojem trazimo"),0),1)

to bi izgledalo u primjeru ovako:

PreuzmiIzvorni kôd (Visual Basic):
  1. dim trazi as string
  2. dim nasao as string
  3.  
  4. With Application.WorksheetFunction
  5.    'prvo cemo provijeriti sa MATCH dali je ta celija prazna
  6.   'ako je prazna doslo bi do greske
  7.  nasao = .Match(trazi, Sheets("List1").Range("A:A"), 0)
  8.   If Not IsError(nasao) Then 'ako nadena celija nije prazna onda
  9.     nasao = .Index(Sheets("List1").Range("B:B"), _
  10.              .Match(trazi), Sheets("List1").Range("A:A"), 0), 1)
  11.   End If
  12. End With

eto, rijeseno i INDEX(MATCH) koja je daleko brza od VLOOKUP, pa po mojoj procijeni i 12x
zivot je moja domovina.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 12: 17 am.