Bosna i Hercegovina



#1 04.06.2015-19:36
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,794


Subject: 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živanja
;[vrsta_podudaranja])
=>
INDEX ( polja_pretrazivanja , MATCH formula )

DownloadIzvorni kod (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
Newton laže! Lake padaju brže!
↑  ↓

#2 05.06.2015-12:58
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: 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.
Pozdrav
↑  ↓

#3 05.06.2015-21:40
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,794


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

Prilozi:
Informacije o fajlu: rar  test1.rar
Preuzimanja: 31
Veličina: 14.54 KB


Newton laže! Lake padaju brže!
↑  ↓

#4 05.06.2015-22:58
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: 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.
Pozdrav
↑  ↓

#5 06.06.2015-07:42
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,794


Subject: Re: VBA Excel Vlookup Vs Index(Match)
na osnovu parametara iz list2, celije(red,kolona), hocu da mi ispise podatke iz list3 u list1
Newton laže! Lake padaju brže!
↑  ↓

#6 06.06.2015-11:12
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,794


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

Prilozi:
Informacije o fajlu: rar  test1.rar
Preuzimanja: 42
Veličina: 15.95 KB


Newton laže! Lake padaju brže!
↑  ↓

#7 06.06.2015-11:52
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: 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.
Pozdrav
↑  ↓

#8 06.06.2015-12:50
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,794


Subject: 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.

DownloadIzvorni kod (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
Newton laže! Lake padaju brže!
↑  ↓

#9 07.06.2015-12:48
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,501


Subject: Re: VBA Excel Vlookup Vs Index(Match)
DownloadIzvorni kod (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.
Pozdrav
↑  ↓

#10 17.06.2015-17:58
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,794


Ocjena: Ocjena:100 Subject: 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:

DownloadIzvorni kod (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
Newton laže! Lake padaju brže!
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 12.12.2017-07:22.