Centar za edukaciju-BiH



#1 02.08.2018 12:54
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,831


Predmet:kako koristiti vise kriterija u vba excel
nevjerojatno, izgubo 10 dana a nisam rijesio problem

A BC
1000101ZG
2000102EMPTY
3000103KA
4000201ZG
5000202KA
6000203EMPTY

htio bi za criterij [A] = 0001 i kriterij [B] = 02 da mi izbaci rezultat = empty, a recimo za
criterij [A] = 0002 i kriterij [B] = 02 da mi izbaci rezultat = KA

probao sljedece:

PreuzmiIzvorni kôd (Text):
  1. broj_1=0001
  2. broj_2=02
  3.  
  4. With Application.WorksheetFunction
  5.  rezultat = .Index(Range(Cells(1, 1), Cells(6, 3)), _
  6.                 .Match(broj_1, Range(Cells(1, 1), Cells(6, 1)), 0) + _
  7.                 .Match(broj_2, Range(Cells(1, 2), Cells(6, 2)), 0) - 1)
  8. End With

PreuzmiIzvorni kôd (Text):
  1. broj_1=0001
  2. broj_2=02
  3.  
  4. With Application.WorksheetFunction
  5.  rezultat= .VLookup( broj_1 & broj_2, Range(Cells(1, 1), Cells(6, 3)), 3, 0)
  6. End With


jeli zna netko?
zivot je moja domovina.
Ovaj post je ureden 3 puta. Posljednja izmjena 02.08.2018 13:11 od strane Avko. ↑  ↓

#2 02.08.2018 23:03
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: kako koristiti vise kriterija u vba excel
PreuzmiIzvorni kôd (Visual Basic):
  1. Function Uporedi(Polje1 As Range, Polje2 As Range)
  2.  
  3. If Polje1 = "0001" Then
  4. Select Case Polje2
  5.  
  6. Case "01"
  7. Uporedi = "ZG"
  8. Case "02"
  9. Uporedi = "EMPTY"
  10. Case "03"
  11. Uporedi = "KA"
  12. End Select
  13.  
  14. ElseIf Polje1 = "0002" Then
  15. Select Case Polje2
  16.  
  17. Case "01"
  18. Uporedi = "ZG"
  19. Case "02"
  20. Uporedi = "KA"
  21. Case "03"
  22. Uporedi = "EMPTY"
  23. End Select
  24.  
  25. End If
  26.  
  27. End Function

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 03.08.2018 12:07
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,831


Predmet:Re: kako koristiti vise kriterija u vba excel
hvala na trudu

evo u meduvremnu pronasao nesto na internetu malo sam preuredio i neke stvari izbacio :

koristimo ovako :

PreuzmiIzvorni kôd (Text):
  1. sub proba()
  2.  
  3. if Two_Con_Vlookup(Range(Cells(odReda, odKolone), Cells(doReda, doKolone)), traziA, traziB) = False Then
  4.                     'ako nije nasao
  5.                     msgbox "greska"
  6. end if
  7. end sub
  8.  
  9. Function Two_Con_Vlookup(Table_Range As Range, Col1_Fnd, Col2_Fnd) As Boolean
  10.    
  11.     Dim rCheck As Range
  12.     Dim bFound As Boolean
  13.     Dim lLoop As Long
  14.  
  15.     On Error Resume Next
  16.  
  17.     Set rCheck = Table_Range.Columns(1).Cells(1, 1)
  18.     With WorksheetFunction
  19.         For lLoop = 1 To .CountIf(Table_Range.Columns(1), Col1_Fnd)
  20.            Set rCheck = Table_Range.Columns(1).Find(Col1_Fnd, rCheck, xlValues, xlWhole, xlNext, xlRows, False)
  21.            If UCase(rCheck(1, 2)) = UCase(Col2_Fnd) Then
  22.                 bFound = True
  23.                 Exit For
  24.             End If
  25.         Next lLoop
  26.     End With
  27.  
  28.     If bFound = True Then
  29.         Two_Con_Vlookup = True
  30.     Else
  31.         Two_Con_Vlookup = False
  32.     End If
  33.  
  34. End Function

zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 05.08.2018 06:21 od strane Avko. ↑  ↓

#4 03.08.2018 14:58
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: kako koristiti vise kriterija u vba excel
Cekaj sad te ne razumijem a ne razumijem ni tvoju proceduru.
Pitanje je bilo.
Citat:
htio bi za criterij [A] = 0001 i kriterij [B] = 02 da mi izbaci rezultat = empty, a recimo za
criterij [A] = 0002 i kriterij [B] = 02 da mi izbaci rezultat = KA

Moras pojasniti kako radi ja ne vidim da moze ovo uraditi ili zakaci primjer.
Mozda ja nisdam dobro razumio.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 05.08.2018 06:24
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,831


Predmet:Re: kako koristiti vise kriterija u vba excel
trebam muju ekonomistu

Prilozi:
Informacije o tipu datoteke za:rar  traziZanimanje.rar
Preuzimanja:431
Velicina datoteke:12.11 KB


zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 05.08.2018 06:24 od strane Avko. ↑  ↓

#6 05.08.2018 10:39
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,656


Predmet:Re: kako koristiti vise kriterija u vba excel
Ako je to tako onda bi procedura mogla izgledati ovako.
PreuzmiIzvorni kôd (Visual Basic):
  1. Function Trazi_Muju(Region As Range, Ime As String, Zanimanje As String)
  2. Dim I As Integer
  3. Dim Kolone(1) As Integer
  4. Dim Poredjenje(1) As String
  5.  
  6. Kolone(0) = Region.End(xlUp).Column
  7. Kolone(1) = Region.End(xlUp).Column + 1
  8.  
  9. If Region.EntireColumn.Columns.Count <> 2 Then GoTo Kraj
  10.  
  11. Poredjenje(0) = Ime & Zanimanje
  12. For I = 1 To Region.Rows.Count
  13. Poredjenje(1) = Region(I, Kolone(0)).Value & Region(I, Kolone(1)).Value
  14. If Poredjenje(0) = Poredjenje(1) Then
  15.     MsgBox "Red: " & I & "Ispunjava kriterij"
  16. End If
  17. Next I
  18. Exit Function
  19. Kraj:
  20. MsgBox "Pogrešna selekcija"
  21. End Function


Znaci da trazi u dvije kolone natpise koji se poklapaju sa ime i prezime
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#7 06.08.2018 12:43
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,831


Predmet:Re: kako koristiti vise kriterija u vba excel
namucio se.

neke celije nisu string
neke celije koje usporedujem su long ili single
ona prije funkcija pretrazuje cijelu tablu rangiranu sa rng dok ova usporeduje samo 1 kolonu i 2 kolonu
shvatio poantu , a to je suziti pretragu na dvije kolone koje trebam.
vrijeme pretrage smanjo sa 64,63 sec na 18,77 sec
na pocetku sam htio staviti u VBA index(match ) funkciju ali se na kraju svelo na obicnu for-next petlju

Function trazi(Col1_Fnd As Long, Col2_Fnd As Long, zadnjiRed As Long, kolona As Single) As Boolean
trazi = False'stavlja na default
Dim I As Integer

For I = 1 To zadnjiRed

If Col1_Fnd = Cells(I, kolona).Value And Col2_Fnd = Cells(I, kolona + 1).Value Then

trazi = True 'ako je nasao stavlja na true

Exit Function 'izlazi iz funkcije

End If
Next I
'ako nije nasao ostaje na default tj false
Exit Function

End Function

hvala
zivot je moja domovina.
↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 3: 29 am.