• 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 grote tabel

Status
Niet open voor verdere reacties.

Gerald Baalhuis

Gebruiker
Lid geworden
14 jan 2006
Berichten
369
We hebben een tabel in Excel met zo'n 30.000 regels.
In deze tabel staan alle artikelen en de componenten waaruit dat artikel bestaat naast elkaar in kolommen.
Op een ander tabblad (blad 1)staan 2 kolommen: 1 met artikelnummers en 1 met een omschrijving.
Nu willen we aan de hand van de artikelnummers uit blad 1 voor alle 20.000+ componenten kijken of deze component bij de artikelen uit blad 1 hoort.
We hebben dit al geprobeerd met verticaal zoeken, maar dan loopt het niet goed. Ook een =als() formule loopt niet goed.

Gerald
 

Bijlagen

Laatst bewerkt:
Post eens een voorbeeld met wat je hebt en hoe het er moet komen te zien?
Misschien een taak voor wat VBA?

Groet,
Ferenc
 
Probeer het eens met de database-functies van excel:
bv DBLEZEN

De INDEX-functie komt meestal ook wel van pas.

Groeten,

M.
 
Heren,

Ik heb (een deel van) het bestand ge-rard en bijgevoegd. Als een van jullie mij wwat duidelijkheid over de functie DB kan verschaffen (of INDEX(), dan is dat zeer welkom.

Gerald
 
Code:
Sub Zoeken()
For Each Cel In Worksheets(1).Columns("A:A").Cells
    If Cel.Value <> "" Then
        With Worksheets(2).Columns("A:A")
            Set Art = .Find(Cel.Value, lookat:=xlWhole)
            If Not Cel Is Nothing Then
                Worksheets(1).Cells(Cel.Row, "C") = Worksheets(2).Cells(Art.Row, "B")
            End If
        End With
    End If
Next
End Sub
Bovenstaande code controleert de waardes in de A-kolom van het 1e werkblad met de waardes van de A-kolom van het 2e werkblad.
Van de gevonden waardes worden de gegevens van de B-kolom, gekopieerd naar de C-kolom van blad 1.

M.a.w.
Blad 1 : artikel - componenten
Blad 2 : artikel - omschrijving.

Resultaat
Blad 1 : artikel - component - omschrijving
Blad 2 : artikel - omschrijving.

Met vriendelijke groet,


Roncancio
 
Ik ben toch nog niet helemaal mee. Geef eens in simpele bewoordingen wat je zou willen, met een concreet voorbeeld uit het bestandje.

EDIT: post van Roncancio nog niet gelezen

Wigi
 
Laatst bewerkt:
Wigi, Ronancio e.a.,

In blad1 (zo heet dit werkblad ook), staan 2 kolommen. In kolom A een artikelnummer, in kolom B een omschrijving van dat artikel.
In blad STUKL2 staan 'groepjes' componenten per artikel opgesomd.
Kolom A: volgnummer
Kolom B: Artikelcode
Kolom C:Omschrijving artikelcode
Kolom D: Onderdeel
Kolom E: Omschrijving onderdeel

Lees Onderdeel als zijnde component.

De lijst in BLAD1 dient als 'zoekcriterium' (op artikelnummer).
Zit moet vergeleken worden met de artikelnummers in kolom B.
Als deze nummers gelijk zijn, moeten alle "Onderdelen" van dat artikel aangemerkt worden met bijv "JA" (of in een apart werkblad geplaatst) in kolom F op werkblad STUKL2.

Een voorbeeldje kan ik zo ff snel niet plaatsen, tenzij je genoegen neemt met een verwijzing in tekst.

Gerald
 
Laatst bewerkt:
Code:
Sub Zoeken()
For Each Cel In Worksheets("Blad1").Columns("A:A").Cells
    If Cel.Value <> "" Then
        With Worksheets("STUKL2").Columns("B:B")
            Set Art = .Find(Cel.Value, lookat:=xlWhole)
            If Not Cel Is Nothing Then
                Worksheets("STUKL2").Cells(Art.Row, "F")="JA"
            End If
        End With
    End If
Next
End Sub
Een aanpassing op mijn vorige reactie.
In cellen in de A-kolom van Blad1 worden vergelijken met de waardes in de B-kolom van STUKL2.
Als de waardes gevonden worden, dan komt er een "JA" in de F-kolom van STUKL2.

Met vriendelijke groet,


Roncancio
 
foutmelding

Ronancio, ik krijg een foutmelding tijdens het uitvoeren van de macro:

Fout 91 tijdens de uitvoering:
Objectvariabele of of blokvariabele With is niet ingesteld

Enig idee?

Gerald
 
Roncancio

jouw herwerkte code:

Code:
Sub Zoeken()
Dim cel As Range, art As Range
For Each cel In Sheets("Blad1").Columns("A:A").Cells
    If cel <> "" Then
        With Sheets("STUKL2")
            On Error Resume Next
            Set art = .Columns("B:B").Find(cel, lookat:=xlWhole, LookIn:=xlFormulas)
            On Error GoTo 0
            If Not art Is Nothing Then art.Offset(, 4) = "JA"
        End With
    End If
Next
End Sub

Vergeet variabelen niet te declareren. Zet Option Explicit boven je module.

Wigi
 
Vergeet variabelen niet te declareren. Zet Option Explicit boven je module.
Nogal slordig van ondergetekende !:o
Mijn excuses !:D

Met vriendelijke groet,


Roncancio
 
Ronancio,

Nu de volgende:
Option Explicit
Sub Zoeken()
For Each Cel In Worksheets("Blad1").Columns("A:A").Cells
If Cel.Value <> "" Then
With Worksheets("STUKL2").Columns("B:B")
Set Art = .Find(Cel.Value, lookat:=xlWhole)
If Not Cel Is Nothing Then
Worksheets("STUKL2").Cells(Art.Row, "F") = "JA"
End If
End With
End If
Next
End Sub

compileerfout: variabele niet gedefinieerd...
 
Ronancio,

Nu de volgende:
Option Explicit
Sub Zoeken()
For Each Cel In Worksheets("Blad1").Columns("A:A").Cells
If Cel.Value <> "" Then
With Worksheets("STUKL2").Columns("B:B")
Set Art = .Find(Cel.Value, lookat:=xlWhole)
If Not Cel Is Nothing Then
Worksheets("STUKL2").Cells(Art.Row, "F") = "JA"
End If
End With
End If
Next
End Sub

compileerfout: variabele niet gedefinieerd...

Ik had Ron's code al wat opgepoetst... zie hierboven.
 
Wigi,

welk stukje code moet ik nu gebruiken. Ik heb onderstaande geknipt en geplakt in This Workbook, Option Explicit toegevoegd boven de code en een sneltoets toegekend. Maar ik zie in kolom F van Blad Stukl2 niets gebeuren....???

Gerald

Option Explicit
Sub Zoeken()
Dim cel As Range, art As Range
For Each cel In Sheets("Blad1").Columns("A:A").Cells
If cel <> "" Then
With Sheets("STUKL2")
On Error Resume Next
Set art = .Columns("B:B").Find(cel, lookat:=xlWhole, LookIn:=xlFormulas)
On Error GoTo 0
If Not art Is Nothing Then art.Offset(, 4) = "JA"
End With
End If
Next
End Sub
 
Plak de code in een nieuwe Module (in VBA doe Insert > Module, plak de code daar).

Run de macro via Alt-F8. Daar kan je ook een sneltoets toekennen.

Wigi
 
Helaas,

Wigi, ik heb gedaan zoals je schreef, maar helaas komt er nergens een "JA" te staan...

Gerald
 
Helaas,

Wigi, ik heb gedaan zoals je schreef, maar helaas komt er nergens een "JA" te staan...

Gerald

Als ik het goed begrijp is er geen enkele artikelcode op STUKL2 die voorkomt in kolom A op blad1 (met een AANTAL.ALS gedaan). Klopt dit? Is dit de bedoeling?
 
Als ik het goed begrijp is er geen enkele artikelcode op STUKL2 die voorkomt in kolom A op blad1 (met een AANTAL.ALS gedaan). Klopt dit? Is dit de bedoeling?
Is dit typisch een voorbeeld van appels met peren vergelijken ?!:p

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan