Excell & VBA : laten zoeken / inhoud vergelijk

Pagina: 1
Acties:
  • 151 views sinds 30-01-2008

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Topicstarter
Hai luitjes,

Ik heb een excell-sheet van 11.000 records (A), en een andere Excell-sheet (B). B is elke keer anders, en de nummer komen overeen, maar neit altijd.
Nu heb ik een macro gemaakt, haalt uit een cel een nummer, en ga ik boven-in A staan, nu ga ik met die macro van boven naar beneden toe, en kijk ik of ActiveCell de variable is die ik net uit B geselecteerd heb. Dus sheet B, nummer in var, dan naar A, en door 11.000 records laten lopen. Dit gaat zolang duren dat ik het hele weekend bezig ben.
Is er niet een zoek functie die ik kan gebruiken die met 1 of 0 meldt of ding is gevonden? Zoja, hoe? en.. alsíe gevonden is, moet ik op de zelfde regel, in een andere colom een X mikken. Maar dat kan volgens mij met de functie naar links.

offtopic:
Dit is mega belangrijk dat me dit lukt ASAP, dus ik heb geen tijd om boek door te spitten, dus geen RTFM's plz :'(

Ey!! Macarena \o/


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14:16

Crazy D

I think we should take a look.

Kun je zoiets niet bakken met 1 van de wizards in Excel? Lookup-wizard of zo?

Exact expert nodig?


  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Iets meer VBA, maar misschien iets als :

- Lees alle waarden (van A) in en stop ze in een Array
- Doorzoek deze array ipv rechtstreeks de cellen.

Gaat sneller denk ik

SIZE does matter.
"You're go at throttle up!"


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Met de volgende voorbeeldcode gebruik je de ingebouwde Excel zoekfunctie die veel sneller is dan de cellen 1 voor 1 te doorlopen.
De code doorzoekt alle worksheets in het actieve workbook op een door de gebruiker in te voeren tekst en activeert elke cell die gevonden wordt en toont dan een messagebox.
(het is wat redelijk snel in elkaar geflanst dus geen complete foutafhandeling en zo, maar het werkt in ieder geval)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Public Sub TestZoeken()

    Dim strZoekTekst As String
    Dim wshSheet As Excel.Worksheet
    Dim rngGevonden As Excel.Range
    Dim rngEersteGevonden As Excel.Range
    
    strZoekTekst = InputBox("Geef zoektekst", , "")
    
    For Each wshSheet In ActiveWorkbook.Worksheets
      ' activeer het te doorzoeken worksheet
      ' anders kan je de gevonden cel niet activeren
      wshSheet.Activate
      Set rngEersteGevonden = wshSheet.Cells.Find(What:=strZoekTekst _
, After:=ActiveCell _
, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows _
, SearchDirection:=xlNext, MatchCase:= _
        False)
      Set rngGevonden = rngEersteGevonden
      Do While Not (rngGevonden Is Nothing)
        rngGevonden.Activate
        Call MsgBox("Gevonden")
        Set rngGevonden = wshSheet.Cells.FindNext(After:=ActiveCell)
        ' vergelijk de gevonden range met de allereerste gevonden range
        ' omdat we anders in een rondje blijven gaan
        If rngGevonden = rngEersteGevonden Then
            Set rngGevonden = Nothing
        End If
      Loop
    Next wshSheet
End Sub

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Dit kan je in excell volledig zonder VBA doen >:)
of ben ik nou gemeen bezig?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Daar heb ik eigenlijk niet naar gekeken omdat ik toevallig vandaag al met de zoekfunctie van Excel in VBA bezig was geweest.

Maar als de waarde in sheet B altijd in dezelfde cel staat is het heel simpel met zoiets:
code:
1
=IF(Sheet2!$A$1=Sheet1!A1,"X","")

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Dit is mega belangrijk dat me dit lukt ASAP, dus ik heb geen tijd om boek door te spitten, dus geen RTFM's plz
D'r zijn hier een heleboel mensen die met mega belangrijke dingen ASAP af moeten hebben. Moeten die dat dan allemaal maar opzij zetten omdat jij geen zin hebt om ff te rtfm-en?

Sorry, maar iedereen die hier komt heeft recht op dezelfde behandeling. Als we verwachten dat andere mensen horen te RTFM-en verwachten wij dat ook van jou..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1

Dit topic is gesloten.