• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Zoeken in meerdere kolommen

Status
Niet open voor verdere reacties.

JeanR

Gebruiker
Lid geworden
19 jan 2011
Berichten
8
Hallo,

Ik heb een formule nodig waarmee ik in verschillende kolommen tegelijk kan zoeken.
Deze -niet werkende- formule gebruik ik momenteel:
Code:
=IF(J13=VLOOKUP(J13,$A$3:$B$32,1,FALSE),VLOOKUP(J13,$A$3:$B$32,2,FALSE),(IF(J13=VLOOKUP(J13,$D$3:$E$33,1,FALSE),VLOOKUP(J13,$D$3:$E$33,2,FALSE)),(IF(J13=VLOOKUP(J13,$G$3:$H$33,1,FALSE),VLOOKUP(J13,$G$3:$H$33,2,FALSE),"Other"))))

Helaas is het niet mogelijk om de kolommen onder elkaar te plaatsen.
Bijgevoegd zit een klein voorbeeld.

Heeft iemand enig idee hoe je wel in meerdere kolommen kunt zoeken?

Bedankt!
Bekijk bijlage Zoeken in meerdere kolommen.xls
 
Met een macrootje.

Uitleg staat in bestandje.
 

Bijlagen

Laatst bewerkt:
Harry , :thumb: eens de macro er staat ik het makkelijker om nog wat bij te werken :)

Ik heb er deze van gemaakt ;)
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i, j
    For i = 4 To 10
     For j = 1 To 8
      With Cells(i, j)
        [COLOR="blue"]If ActiveCell.Value = "" Then Exit Sub[/COLOR]         
          If .Value = ActiveCell.Value Then
         ActiveCell.Offset(, 1).Value = Cells(i, j).Offset(, 1).Value
       End If
     End With
    Next j
  Next i
End Sub
 
Ik heb er nog iets uitgehaald Daniël. :D
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i, j
    For i = 4 To 10
     For j = 1 To 8
      With Cells(i, j)
        If ActiveCell = "" Then Exit Sub         
          If .Value = ActiveCell.Value Then
         ActiveCell.Offset(, 1).Value = .Offset(, 1).Value
       End If
     End With
    Next j
  Next i
End Sub
 
Laatst bewerkt:
met iets meer slaap maakte ik dit ervan
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim c as range
  Cancel = True
  If IsEmpty(Target) Then Exit Sub                         'dubbelgeklikte cel is leeg, dus stoppen
  Set c = Range("A4:H10").Find(Target.Value, lookat:=xlWhole, LookIn:=xlValues)  'zoek die celinhoud
  If c Is Nothing Then MsgBox "waarde " & Target.Value & " is niet gevonden": Exit Sub  'waarde niet gevonden
  Target.Offset(, 1).Value = c.Offset(, 1).Value           'rechts ervan de waarde schrijven
End Sub
 
verschil tussen een boer en een chauffeur klikt dichter bij de waarheid :D
 
Als de symmetrische layout van het voorbeeld in post #1 aangehouden wordt, kan het ook met een relatief eenvoudige formule.
 

Bijlagen

Top, Bedankt allemaal!:thumb::thumb:

De oplossing van Wher zal in mijn database het beste werken.
 
Het is zojuist nog wat ingewikkelder geworden. De tabellen worden naast elkaar te onoverzichtelijk en moeten hierdoor worden geplaatst op een afzonderlijke sheet.

Daarnaast moet het mogelijk zijn om meerdere criteria tegelijk op te zoeken.

Nu heb ik wel met behulp van de vorige tips een formule kunnen maken die het opzoekt, het probleem is dan weer dat deze formule in het werkelijke bestand te groot is.

Weet iemand hier een oplossing voor? Of zal ik weer uitkomen op de macro's?

Bekijk bijlage Zoeken in meerdere kolommen(sheets).xls

(Hier kon ik geen oplossing voor vinden, dus heb ik ieder "gevraagde item" in een apparte cel berekend. Vervolgens heb ik deze cellen opgeteld. Dit maakt het ook gelijk overzichtelijker.)
 
Laatst bewerkt:
Met onderstaande macro in moduleblad 1 is het appeltje/eitje.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim laatste_cel As Long
Dim iSheetCount As Integer
Dim iSheet As Integer
Dim row As Long
Application.ScreenUpdating = False

iSheetCount = ActiveWorkbook.Worksheets.Count
  For iSheet = 2 To iSheetCount
  
laatste_cel = Sheets(iSheet).Range("A65536").End(xlUp).row
For row = laatste_cel To 1 Step -1

On Error Resume Next
With Sheets(iSheet)
   If Sheets(iSheet).Range("A" & row).Value = Target.Value Then
       Sheets("Sheet1").Cells(Target.row, 5).Value = Sheets(iSheet).Range("A" & row).Offset(, 1).Value + Sheets("Sheet1").Cells(Target.row, 5).Value

      End If
     End With
   Next row
 Next iSheet
Application.ScreenUpdating = True
End Sub

Ps. Wel even bovenstaande code in de meegestuurde bijlage doen (helaas verkeerde test meegezonden).
 

Bijlagen

Laatst bewerkt:
Opnieuw heel erg bedankt.
Die macro's zijn best handig, tijd om me er wat meer in te verdiepen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan