[excel] macro verwijderen dubbele rij

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

  • Mastruberik
  • Registratie: December 2002
  • Laatst online: 17-01-2022
Heb een probleem met excel. Heb al wat rond gezocht op google/tweakers en andere sites, maar waarschijnlijk gebruik ik de verkeerde woorden. Kon niet veel informatie vinden die ik kon gebruiken.

Heb een spreadsheet waar een 3 kolomen met gegevens in staan en nou wou ik proberen om met een macro de rijen te verwijderen die dubbel zijn.

Heb op dit forum wel iets gevonden en aangepast, maar heb niet enorm veel verstand van VB en weet niet hoe je het eigenlijk kan oplossen.

For i = 1 To 30
If ActiveSheet.Cells(i, 1).Value = ActiveSheet.Cells(i + 1, 1).Value Then
Rows(i).Delete
End If
Next i

Met dit script kijkt die 1 regel terug, dus als er 4 dubbele rijen zijn, dan haalt die er maar 1 weg. hoe kan ik "i+1" veranderen zodat het na de hele rij kijkt.

Weet iemand misschien ook nog goede tutorial sites voor macro`s?

  • The-MeLLeR
  • Registratie: Juni 2004
  • Laatst online: 27-02 11:20

The-MeLLeR

3l33t

Doordat hij b.v. de bovenste regel verwijderd schuiven de andere regels omhoog.

Het is zowieso handig om hem andersom te runnen

For i = 1 To 30
If ActiveSheet.Cells(31-i, 1).Value = ActiveSheet.Cells(30-i, 1).Value Then
Rows(31-i).Delete
End If
Next i

(ik heb het niet kunnen controleren maar ik denk dat het werkt....

  • Ruben314199
  • Registratie: Juli 2002
  • Laatst online: 06-04-2025
volgens mij moet het zo werken:

For i = 1 To 30
If ActiveSheet.Cells(i, 1).Value = ActiveSheet.Cells(i + 1, 1).Value Then
Rows(i).Delete
i = i - 1
End If
Next i

je zet de loop-var eentje terug, zodat je dezelfde regel nog een keer checkt.

btw: het is niet heel handig om een i als (loop)-variabele te gebruikten. Dit vanwege het kleine verschil tussen een i I en een 1. (l (L) is nog rampzaliger)

De gaafste watergekoelde pc ter wereld


  • Mastruberik
  • Registratie: December 2002
  • Laatst online: 17-01-2022
al bedankt voor de reacties. Werkt wel maar zit nog een foutje in de loop.

Maar kan die ook zonder loop? Met loop moet je een gegegeven geven waar die aan moet voldoen om te stoppen.

Kan dat ook variabel met excel, dat die automatisch het einde herkent en dat het zonder loop kan?

Met i is we logisch nog niet echt aangedacht eigenlijk, geld waarschijnlijk ook voor php en andere programeer talen.

[ Voor 19% gewijzigd door Mastruberik op 02-02-2005 19:02 ]


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 11:16
je bedoelt iets van
code:
1
2
3
4
5
i=1
do
<zoek hier uit of deze regel gelijk is aan de volgende>
i=i+1
loop until <regel is leeg>

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Mastruberik
  • Registratie: December 2002
  • Laatst online: 17-01-2022
Denk het wel.. Hij controleerd tot er een lege regel komt toch?

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 11:16
Mastruberik schreef op woensdag 02 februari 2005 @ 21:18:
Denk het wel.. Hij controleerd tot er een lege regel komt toch?
Mits je de pseudocode vervangt door echte code.

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • Vinzzz243
  • Registratie: Februari 2001
  • Laatst online: 22-01-2025
dubbele regels kun je ook autofilteren

Verwijderd

Vinzzz schreef op donderdag 03 februari 2005 @ 12:33:
dubbele regels kun je ook autofilteren
ja, en hoe dan?, dat was nou net de vraag :z

Verwijderd

Autofilter vindt je onder menu Data - Filter

In code:

code:
1
2
3
4
5
6
7
    Do Until ActiveCell.Value = vbNullString
        If ActiveCell.Offset(1, 0).Value = ActiveCell.Value Then
            Rows(ActiveCell.Offset(1, 0).Row).Delete
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop


Doe je ding :)
Pagina: 1