Toon posts:

VBA VLookup zoeken in ander tab

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

Verwijderd

Topicstarter
Beste mede-tweakers,
Ik zit al ruim enkele dagen met hetzelfde probleem.
Wat toch naar mijn weten makkelijk op te lossen zou moeten zijn.

Ik heb een excel bestand met daarin 2 sheets sheet 1 en sheet 2 verder:

A1 t/m A5 met daarin tekst als mv1 mv2 mv3 mv4 mv5 deze sheet heet sheet 1

A1 t/m A5 met daarin tekst als mv8 mv9 mv10 m11 mv1 deze sheet heet sheet 2

Nu zou ik graag willen dat m.b.v vba de macro, de velden van sheet 1, opzoekt in sheet 2 en deze vergelijkt.
ALs ze dan gelijk dan dan die betreffende row van sheet 1 verwijderen.
In dit geval zou de eerste row dus verwijderd moeten worden van sheet 1.

Ik heb al gezocht enkele topics gevonden maar ook een die hetzelfde had uit 2002 echter zonder antwoord erbij.

Hopelijk kunnen jullie mij helpen...

Verwijderd

never mind :)

[ Voor 86% gewijzigd door Verwijderd op 14-10-2006 10:27 ]


  • Lukse
  • Registratie: Januari 2004
  • Laatst online: 12-04-2023
Zoiets ongeveer?

Visual Basic:
1
2
3
4
5
6
7
8
for i = 1 to Sheets(2).UsedRange.Rows.Count
    for j = 1 to Sheets(1).UsedRange.Rows.Count
        if Sheets(1).Cells(j, 1) = Sheets(2).Cells(i, 1) then
            'Code om rij te verwijderen uit Sheet1
            exit for
        end if
    next j
next i
Is uit het hoofd geschreven. De code om een rij te verwijderen kan ik zo niet opkomen.
Kan je heel gemakkelijk vinden door even een macro te recorden en dan naar de code te kijken.

Verwijderd

Topicstarter
Dit lukt maar hij verwijderd nu 1 cell.

For i = 1 To Blad2.UsedRange.Rows.Count
For j = 4 To Blad1.UsedRange.Rows.Count
If Blad1.Cells(j, 1) = Blad2.Cells(i, 1) Then
'Code om rij te verwijderen uit Sheet1
Blad1.Cells(j, 1).Select
Selection.ClearContents
Exit For
End If
Next j
Next i

getest getest nog eens getest het enigste wat ik werkende krijg is dat hij 1 cel verwijderd. Dus bovenstaande... Ook niet alle cellen waar bv een klas instaat die in de vorige lijst voorkomt verwijderd hij met de volgende code nogal raar.

[ Voor 117% gewijzigd door Verwijderd op 14-10-2006 00:16 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:10
Dit hoort eerder thuis in Office systemen

PRG -> OFF

https://fgheysels.github.io/


Verwijderd

Topicstarter
sorry, mod.
Iemand enig idee hoe die row te verwijderen?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Wat zijn je eigen gedachten hierover? F1 (zoals zoeken op 'verwijder rij') lijkt me namelijk er al vrij duidelijk over? Zo lijkt het namelijk zo op voorkauwen en dat is niet de bedoeling op GoT :)

Hoe dan ook wil je geen .Select gebruiken in VBA, behalve als je wilt dat het resultaat ook een visueel geselecteerd iets is. Gebruik gewoon rechtstreeks object.functie ipv. object.select & selection.functie.

Gebruik trouwens even [ code ] tags voor enige code, dan is het veel beter leesbaar.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Ik heb het nu anders gedaan:

Visual Basic:
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
33
34
35
36
37
Sub mijnprogramma()
    Dim myArr As Variant
    Dim Rng As Range
    Dim I As Long

    Application.ScreenUpdating = False
    
   
  myArr = Range("a1:a3").Value

  ' myArr = Array("test", "3", "5")
   
   'myArr(1) = "test"
 'myArr(2) = "test2"
'myArr(3) = "test3"

    'You can also use more then one value in the Array
  ' Application.Worksheets("Blad3").Activate
    
    For I = LBound(myArr) To UBound(myArr)
    Do
            Set Rng = Range("A:A").Find(What:=myArr(I), _
                    After:=Range("A" & Rows.Count), _
                    LookIn:=xlFormulas, _
                    LookAt:=xlWhole, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlNext, _
                    MatchCase:=False)
            'If you want to search in a part of the rng.value then use xlPart
            'if you use LookIn:=xlValues it will also delete rows with a
            'a formula that evaluates to "ron"
            If Not Rng Is Nothing Then Rng.EntireRow.Delete
        Loop While Not (Rng Is Nothing)
        
    Next I
    Application.ScreenUpdating = True
End Sub


Echter hoe kan ik die array gevult krijgen met waarde uit sheet Blad2?
Bij myArr = Range("a1:a3").Value zegt hij het subscript is buiten berijk.
Deze code zorgt ervoor:

[code=vb]

Set Rng = Range("A:A").Find(What:=myArr(I), _
After:=Range("A" & Rows.Count), _
LookIn:=xlFormulas, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
[/code =vb]

wat is er mis aan?

[ Voor 23% gewijzigd door Verwijderd op 16-10-2006 15:14 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Ik snap hier eerlijk gezegd niet goed wat je probeert te doen. Kan je niet beter gewoon de code van Lukse in "VBA VLookup zoeken in ander tab" gebruiken en dan eenvoudigweg Rows(i) of (j) deleten?
Moet je natuurlijk oppassen dat je i resp. j een moet opschuiven omdat alles een rij omhoog gaat.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
idd en daar snapte ik als niets van, maar dat gebeurd er idd.
En bij het voorbeeld hierboven gaat myArr(I) fout, als dat opgelost is moet het ook kunnen werken en heb ik dat probleem niet meer.
Pagina: 1