Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Excel2007] Compare met delete row?

Pagina: 1
Acties:

  • Tallguy
  • Registratie: Augustus 2000
  • Niet online

Tallguy

There is no place like 127.0.0

Topicstarter
Ik wil 2 worksheets met elkaar vergelijken en dan in de mastersheet rijen verwijderen die overeenkomen met items uit de compare lijst.

Ik heb deze macro gevonden:

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
Sub DelDups_TwoLists()
Dim iListCount As Integer
Dim iCtr As Integer

' Turn off screen updating to speed up macro.
Application.ScreenUpdating = False

' Get count of records to search through (list that will be deleted).
iListCount = Sheets("sheet2").Range("A1:A100").Rows.Count

' Loop through the "master" list.
For Each x In Sheets("Sheet1").Range("A1:A10")
   ' Loop through all records in the second list.
   For iCtr = 1 To iListCount
      ' Do comparison of next record.
      ' To specify a different column, change 1 to the column number.
      If x.Value = Sheets("Sheet2").Cells(iCtr, 1).Value Then
         ' If match is true then delete row.
         Sheets("Sheet2").Cells(iCtr, 1).Delete xlShiftUp
         ' Increment counter to account for deleted row.
         iCtr = iCtr + 1
      End If
   Next iCtr
Next
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub



Deze werkt wel, maar alleen wordt de overeenkomende cell in kolom A verwijderd. Ik wilde juist dat de gehele rij dan wordt verwijderd met alles wat er in staat (dus meerdere kolommen in dezelfde rij).

Maar hoe krijg ik dat voor elkaar? Ik dacht iets in de trant van een EntireRow.Delete, maar dat werkt niet...ik moet het stukje hier
Visual Basic:
1
Sheets("Sheet2").Cells(iCtr, 1).Delete xlShiftUp

dan schijnbaar verder aanpassen...maar hoe?

specs | 3360wP met SE3000


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

rows(i).delete ;)

Let op dat je nu natuurlijk wel meteenje hele vergelijking in de soep laat lopen aangezien rij i+1 nu rij i wordt. Als je daarna i++ doet dan sla je dus een rij over. Da's het nadeel van een standaardvoorbeeld copypasten: soms doet het niet helemaal wat je wilt en moet je weten wat er eigenlijk gebeurt :P

Kortom: ga van onder naar boven.

[ Voor 24% gewijzigd door F_J_K op 05-05-2011 13:28 ]

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


  • Tallguy
  • Registratie: Augustus 2000
  • Niet online

Tallguy

There is no place like 127.0.0

Topicstarter
Hoe zou het geheel dan worden? Ik moet nl een lijst van 82 items vergelijken of die in een andere lijst van 3600+ items terugkomt. Zo ja, dan moeten die uit de grote lijst van 3600+ items verwijderd worden (in z'n geheel).

Kan je mij dit laten weten?

[ Voor 6% gewijzigd door Tallguy op 05-05-2011 13:44 ]

specs | 3360wP met SE3000


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Als het max 1x voorkomt dan maakt het niet uit, dan kan je na een hit stoppen binnen de loop. Als een regel vaker kan voorkomen in sheet2 dan gewoon de for richting omdraaien (aftellen naar 1 in sheet2). Kan ook wel van boven naar beneden maar dan moet je er aan denken de tellers niet op te hogen na verwijderen: alleen teller aanpassen als je niet verwijderd.

Doe het maar eens in je hoofd of op papier bij zeg 2 resp. 6 rijen.

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


  • Tallguy
  • Registratie: Augustus 2000
  • Niet online

Tallguy

There is no place like 127.0.0

Topicstarter
Een naam komt maar 1x voor op de compare lijst (het gaat nl alleen maar om namen). Als ene naam op de compare list staat (sheet 2) dan moet die naam op sheet1 verwijderd worden incl de regel waar die naam op staat.

Zou dan een
iListCount = Sheets("sheet2").Range("A100:A1").Rows.Count

genoeg zijn?

specs | 3360wP met SE3000


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Klinkt flauwer dan het bedoeld is: wat zou dat moeten doen / wat staat daar? :)

Nee dus. Je wilt gewoon de rij verwijderen en de loop beeindigen, lijkt genoeg. Maar ga ajb niets 'in productie' verwijderen als je niet helder is wat er precies gebeurt en hebt getest.

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

Pagina: 1