[Excel] Twee tabellen controleren op matches

Pagina: 1
Acties:
  • 146 views sinds 30-01-2008
  • Reageer

  • Aristos
  • Registratie: Oktober 1999
  • Laatst online: 20:23
Ik heb twee tabellen. Een grote met daarin de getallen 1 t/m 1000. In de andere tabel heb ik random 25 getallen tussen de 1 en de 1000. (Let wel dit is een voorbeeld, in werkelijkheid gaat het over 15.000 getallen)
Nu wil ik dat ik met een functie in de tabel van 1 t/m 1000 een nieuwe kolom krijgen met daarin een 1 (dit getal komt wél voor in de random tabel) of een 0 (hij komt niet voor).

Voorbeeld

Tabel 1
1
2
3
...
1000


Tabel 2

2
4
88

Resultaat

1 0
2 1
3 0
4 1
5 0
6 0
88 1
etc

Weet iemand deze functie?

  • Tukk
  • Registratie: Januari 2002
  • Laatst online: 22-07 09:58

Tukk

De α-man met het ẞ-brein

De meest pragmatische oplossing is de data exporteren naar een software systeem dat is gemaakt op dit probleem op te lossen, oftewel, exporteer je data naar MySQL/Oracle/Sql-server en schrijf een simpele query.

Helemaal met dit soort aantallen ga je buiten de mogelijkheden van Excel werken (IMHO)

[ Voor 17% gewijzigd door Tukk op 16-01-2007 14:16 ]

Q: How many geeks does it take to ruin a joke? A: You mean nerd, not geek. And not joke, but riddle. Proceed.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

zoek (hier of google) eens op vert.zoeken. Probleem is vaker voorgekomen en opgelost;)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 23:07
niesje schreef op dinsdag 16 januari 2007 @ 14:20:
zoek (hier of google) eens op vert.zoeken. Probleem is vaker voorgekomen en opgelost;)
Misschien kan je beter gewoon de excel hulp gebruiken. Dit is op zich een vrij basic probleem, dan doet excel help het uitstekend. Ik ben het tot op zekere hoogte wel met Tukk eens. Als je dit "even"/eenmalig uit moet rekenen kan je er desnoods nog een bakje koffie bij pakken terwijl je PC rekent, maar als je dit om de dag moet doen of zo is een database toch echt een beter idee.

  • SierdW
  • Registratie: April 2004
  • Laatst online: 24-06 16:54
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub controleren()
Dim rij, rij1
'Doorlopen tabel
    For rij = 1 To 9
    If Cells(rij, 1) <> "" Then
        'Doorlopen reeks waar in gezocht moet worden
        For rij1 = 1 To 9
            If Cells(rij1, 4) <> "" Then
                If Cells(rij, 1) = Cells(rij1, 4) Then
                    'Als gevonden in beide tabellen dan 1, anders door naar volgende regel
                    Cells(rij, 2) = 1
                    GoSub volgende
                Else
                    Cells(rij, 2) = 0
                End If
            End If
        Next
    End If
volgende:
Next
    
End Sub

Misschien niet al te nette code voor de kenners, maar het is wel een oplossing voor je probleem ;)

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 16:36

Dido

heforshe

Iets wat met een simpele VLOOKUP kan oplossen met een lap code is niet netjes nee ;)

Een gosub gebruiken in plaats van een goto is ook niet netjes, trouwens (na een gosub zoekt basic een return en keert terug naar het eerste statement na de gosub.)

Een goto gebruiken op deze manier is ook niet netjes.

Verders wel aardig :P

Wat betekent mijn avatar?


Verwijderd

SierdW schreef op dinsdag 16 januari 2007 @ 15:16:Misschien niet al te nette code voor de kenners, maar het is wel een oplossing voor je probleem ;)
wanneer na een vervulde voorwaarde de rest van de lus niet meer uitgevoerd dient, gebruik je beter "exit for". voor de rest houdt je code geen rekening met tabellengte, maar het is een begin.
zolang de tabel met op te zoeken waarden kleiner is dan 65000 rijen zul je weinig problemen ondervinden met een formule zoals bv. =ALS(ISFOUT(VERT.ZOEKEN(cel1tabel1;cel1tabel2:laatsteceltabel2;1;ONWAAR));0;1) die het resultaat binnen de seconde geeft als je een ietwat recente pc hebt.
Pagina: 1