• 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.

Verticaal zoeken, dubbele waarden, enkele resultaten

Status
Niet open voor verdere reacties.

mhassink

Nieuwe gebruiker
Lid geworden
25 nov 2014
Berichten
1
Beste Excel goeroes,

Ik heb hier op het forum gezien dat er flinke noten worden gekraakt dus ik heb hoop dat 1 van jullie dit probleem ook kan oplossen. Laat ik proberen om het uit te leggen:

Ik heb een excel sheet met 4 kolommen.

In kolom D staan formules waarin staat dat de inhoud in cellen uit kolom C gezocht moeten
worden in de kolom A. Bij een treffer moet de inhoud van de cel er naast in kolom B in kolom D
worden geplaatst. Verticaal zoeken dus..lijkt allemaal perfect te werken. Echter.....

In kolom C staat meerdere keren het zelfde nummer en in kolom A komt dit nummer ook meerdere
keren voor.
Wanneer het nummer meerdere keren gevonden wordt de eerste treffer uit kolom A in alle gevallen in kolom D gezet. Maar wat ik wil is dat de volgende treffer uit kolom A in D wordt gezet.

Duidelijk??

Zie vb bestand voor meer informatie

Alvast dank!Bekijk bijlage Overzicht zonder RC.xlsx
 
Wat is er mis mee om gewoon dat filter te gebruiken bovenaan de kolom?
 
Met vert.zoeken is dat niet mogelijk.
Met vba is er wel een oplossing, maar met zoveel rijen is dat bijna niet te doen.
Hoelang gaat het duren voordat de code 20 000 rijen verwerkt heeft????????
En de 10-tallen kolommen die erbij komen, gaan het overzicht niet bevorderen
Toch een voorbeeldje in bijlage (verkort bestand).

Bekijk bijlage Overzicht zonder RC.xlsm
 
Wijzig je VBA routine eens in dit, dan gaat het 100 keer zo snel:
Code:
Sub Test_L()
    Dim zoek As String
    Dim lastrow As Long
    Dim lastrow2 As Long
    Dim t As Long
    Dim t2 As Long
    Dim kol As Integer
    Dim r As Long
    
    Application.ScreenUpdating = False
    With Sheets("Blad1")
        lastrow1 = .Range("C" & Rows.Count).End(xlUp).Row
        lastrow2 = .Range("A" & Rows.Count).End(xlUp).Row
    End With

    For t2 = 1 To lastrow1
        zoek = Range("C" & t2)
        kol = 4
        r = r + 1
        For t = 1 To lastrow2
            With Sheets("Blad1")
                If .Range("A" & t).Value = zoek Then
                    .Cells(r, kol) = .Range("B" & t)
                    kol = kol + 1
                End If
            End With
        Next t
    Next t2
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Dat is nu het verschil tussen stap voor stap vooruit denken, en een totaal-inzicht hebben.
Zelfs in dit korte voorbeeld is het verschil in snelheid duidelijk.
 
Ik heb de code nog wat netter gemaakt, maar dat maakt voor de snelheid verder niets uit.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan