• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Vraag over ecxel ALS functie

Status
Niet open voor verdere reacties.

martijn072

Gebruiker
Lid geworden
23 apr 2008
Berichten
41
Ik heb een probleem bij Excel. Het is de bedoeling dat ik d.m.v de ALS functie met excel van een lijst met artikelcodes een aantal dubblen artikelcodes laat verdwijnen. Het is zo dat de dubbelen artikelcodes wel een apparte omschrijving hebben. Ik wil dat de 2e artikelcode blijft staan want die heb ik nodig, en dat de eerste artikelcode plus omschrijving er uit wordt gehaald.

Ik laat hieronder zien welke codes ik bedoel:



Je ziet hier dat cel A239 en A240 de zelfde artikelcode hebben maar een andere omschrijving het is dus de bedoeling dat cel A240 blijft staan want die heb ik nodig en dat cel A239 weg wordt gehaald want die is niet nodig, dit is het zelfde voor cel A249 en A250, en voor nog een paar 100 artikelen want er zijn intotaal meer dan 60000 artikelen en daar staan een hoop dubbellen artikelnummers in waarvan ik telkens alleen de 2e nodig heb.dit zou ik willen doen met de ALS functie maar ik zou niet weten hoe en welke formule ik dar voor nodig heb. Ik hoop dat er iemand is die mij kan helpn, alvast bedankt.
 
Laatst bewerkt:
martijn072,

Kijk hier eens.
Of het met een formule kan weet ik niet.
 
Als je zeker weet dat de dubbelen altijd onder elkaar staan en altijd de eerste regel wil weggooien werkt het volgende ook:
Code:
Sub verwijderen()
Dim c As Range
Dim laatsteregel As Integer

laatsteregel = Sheets(1).Range("A65536").End(xlUp).Row

    For Each c In Sheets(1).Range("A2:A" & laatsteregel)
        If c.Value = Range("A" & c.Row + 1).Value Then
            Range(c.Row & ":" & c.Row).Delete Shift:=xlUp
        End If
    Next c

End Sub
 
Hey Demeter,

Alvast beankt voor het meedenken maar ik ben niet super handig met excel dus ik snap niet helemaal wat je bedoel met de code die je heb laten zien, daarom snap ik niet helemaal hoe ik het moet invoeren om tot het juiste reultaat te komen.
 
Laatst bewerkt:
Martijn,

Stukje code is geschreven in VBA.Dit is een programmeer taal welke je kan gebruiken op de achtergrond van iedere office applicatie.

Weet niet of je ooit met de macro recorder hebt gewerkt?
Deze geeft namelijk dezelfde code weer.
Zie hier voor meer uitleg macros:eerste hoofdstuk doorlezen en je weet de strekking.
http://www.dur.ac.uk/resources/its/info/guides/39Excel2003Macros.pdf

Zo ben ik ook dit wereldje ingerolt :).

Nu terug naar je vraag:
Druk op alt+F11
Nu wordt je VB-editor geopent.
Aan de linkerkant zie je je document staan emt al je tabbladen aan de rechterkant nog niks of een wit veld.
klik met je rechter muisknop op een van de tabbladen van je document en kies: invoegen / module
Nu zie je rechts een wit veld.
Plak hier de volgende code:
Code:
Sub verwijderen()
Dim c As Range
'declareer parameter laatsteregel als getal
Dim laatsteregel As Integer

'verversen scherm uitzetten
Application.ScreenUpdating = False

'hier bepalen we de laatste gevulde regel op je werkblad in kolom A
'sheets(1) is je eerste sheet in je werkboek, wijzig deze naar de naam van tabblad
laatsteregel = Sheets(1).Range("A65536").End(xlUp).Row

    'nu gaan we door in gevulde cellen van je 1e tabblad in kolom A zoeken of deze aan de volgende voorwaarde voldoet
    'sheets(1) is je eerste sheet in je werkboek, wijzig deze naar de naam van tabblad
    For Each c In Sheets(1).Range("A2:A" & laatsteregel)
        'vb voor cel A2: als de waarde in cel A2 gelijk is aan de waarde in cel A3 dan de volgende regel anders ga naar de volgende cel
        If c.Value = Sheets(1).Range("A" & c.Row + 1).Value Then
            'A2 is dus het zelfde als A3: delete de gehele regel 2
            Sheets(1).Range(c.Row & ":" & c.Row).Delete Shift:=xlUp
        End If
    'ga naar de volgende cel
    Next c

'verversen scherm weer aanzetten
Application.ScreenUpdating = True

End Sub

we gaan er wel van uit met deze code dat al je dubbelen al onder elkaar staan en dat altijd de eerse weggegooit dient te worden.

Succes.

ps
Bij vragen weet je ons te vinden.
 
Laatst bewerkt:
Demeter,

Het enigge wat ik nu nog niet helemaal begrijp is of ik die die code gewoon helemaal letterlijk kan kopiëren en wat ik moet doen als ik die in dat scherm heb ikgevoerd.

Groetjes Martijn.
 
Martijn,

Kopieer de hele code en sluit je VB-editor.
Selecteer in Excel je juiste werkmap en de juiste sheet.
druk op alt+f8
Nu komt er een scherm naar boven welke al je ingevoerde macros laat zien.
In jou geval is dit er een en die heet: verwijderen
Selecteer deze macro en druk op de knop uitvoeren.

Als het goed is krijg je geen melding te zien en zijn al je dubbelen verwijderd.

Nog een tip:
Sla wel eerst je document onder een andere naam op zodat je bij problemen niet alles kwijt ben. :)

Succes
 
Laatst bewerkt:
Demeter,

Alvast erg bedank voor je hulp maar als ik precies de stappen uitvoer die jij zeg, komt er nadat ik op uitvoeren heb geklikt de volgende foutmelding:



Als ik dan op fout opsporen klik komt dit er te staan:

 
Laatst bewerkt:
Wigi en Demeter heel erg bedankt voor de hulp mijn probleem is hiermee opgelost!

Vriendelijke groeten,
Martijn:)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan