Bosna i Hercegovina



#1 02.08.2018-12:54
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,182


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

DownloadIzvorni kod (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

DownloadIzvorni kod (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?
Život je moja domovina.
Ovaj komentar je mijenjan 3 puta. zadnja izmjena 02.08.2018-13:11 od strane Avko. ↑  ↓

#2 02.08.2018-23:03
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,737


Subject: Re: kako koristiti vise kriterija u vba excel
DownloadIzvorni kod (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

Pozdrav
↑  ↓

#3 03.08.2018-12:07
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,182


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

DownloadIzvorni kod (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

Život je moja domovina.
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 05.08.2018-06:21 od strane Avko. ↑  ↓

#4 03.08.2018-14:58
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,737


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

#5 05.08.2018-06:24
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,182


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

Prilozi:
Informacije o fajlu: rar  traziZanimanje.rar
Preuzimanja: 5
Veličina: 12.11 KB


Život je moja domovina.
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 05.08.2018-06:24 od strane Avko. ↑  ↓

#6 05.08.2018-10:39
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,737


Subject: Re: kako koristiti vise kriterija u vba excel
Ako je to tako onda bi procedura mogla izgledati ovako.
DownloadIzvorni kod (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
Pozdrav
↑  ↓

#7 06.08.2018-12:43
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 3,182


Subject: 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
Život je moja domovina.
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 18.08.2018-03:27.