• 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.

Rijen verwijdering waarin kolom A waarde 0 geeft

Status
Niet open voor verdere reacties.

Jonathan1982

Gebruiker
Lid geworden
25 dec 2010
Berichten
56
Ik weet niet of de vraag nu al te begrijpen is, maar ik zoek een manier om automatisch (bijvoorbeeld via macro) alle rijen te verwijderen waar in de eerste cel de waarde 0 wordt gegeven.

Ik heb namelijk heel kolom A vermenigvuldigd met een cel met waarde 1, zodat die hele kolom omgezet werd naar een getal ipv tekst. Maar nu geeft de rest van kolom A waarde 0 aan, al die rijen wil ik dus weg hebben. (anders werkt het programma waarin ik de excel sheet wil importeren niet)

Uiteraard kan ik de laatste rij selecteren en sctrl-****-pijl omlaag indrukken, maar ik wil dat het automatisch gebeurd en dus ook automatisch de eerste rij in de serie die 0 aangeeft gepakt wordt.
 
Jonathan,

hoe vaak moet dit gebeuren?

Als het eenmalig is kun je dat snel doen mbv Autofilter, te vinden onder Data
 
ten eerste moet het vaak gebeuren en ten tweede wil ik dat het automatisch gebeurd, zodat andere er niet bij na hoeven te denken, alleen macro aanklikken.
 
Post dan svp eens een voorbeeldbestandje (hoeft geen echte data te bevatten, maar moet wel de indeling van je bestand hebben).
 
Jonathan,

zo zou het kunnen:

Code:
Sub weg0()
[a1].Select
    For w = [a2].CurrentRegion.Rows.Count - 1 To 1 Step -1
    If ActiveCell.Offset(w).Value = 0 Then ActiveCell.Offset(w).EntireRow.Delete
    Next w
End Sub
 
Jonathan1982,

Hier vind je de oplossing.

Dat is wel wat ik zoek, maar bij mijn bestandje werkt ie niet....

En volgens mij komt dat omdat er te veel nullen staan. Kan m namelijk ook niet toevoegen.

Ik denk dat ik mijn probleem dan misschien beter anders kan formuleren (en de oorzaak dat die nullen er staan aanpakken)

Ik heb namelijk in een bereik net gegevens in kolom A een aantal getallen die als tekst worden weergegegeven. Ik heb toen een macro gemaakt waarin ik een cel aanmaak met het getal 1 en deze speciaal kopieer naar heel kolom A en daarmee vermenigvuldig. Wellicht is er een manier om alleen te vermenigvuldigen met de cellen in kolom A waarin waardes voorkomen.

Deze macro zit er in op dit moment:

Sub tekstnaargetal()

ActiveCell.FormulaR1C1 = "1"
Range("E93").Select
Selection.Copy
Columns("A:A").Select
Range("A81").Activate
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=True, Transpose:=False
End Sub

Zoals je zit, zit skip blanks er al in, maar dat voegt kennelijk niets toe..
 
Jonathan1982,

Kun je het bestandje even hier plaatsen, ik snap niet dat hij het niet doet.
Over 1,5 uur heb ik weer even tijd moet nu weg.
 
Jonathan1982,

Kun je het bestandje even hier plaatsen, ik snap niet dat hij het niet doet.
Over 1,5 uur heb ik weer even tijd moet nu weg.

Ik kan het bestandje niet uploaden, om dezelfde reden als dat hij het niet doet denk ik, hij gebruikt namelijk te veel regels (lees: alle regels)

Als je de macro die ik zelf gepost heb toevoegd en de macro die je zelf hebt en dan eerst die van mij uitvoerd, zal je waarschijnlijk ook merken dat hij het niet doet. Die van Heije werkt op zich wel, maar de computer is daar ERG lang mee bezig..

Vandaar dat ik dus een andere insteek probeer en die nullen überhaupt niet krijg.

Ik zie dat mijn macro van tekst omzetten niet klopt, deze is klopt wel:

Sub tekstnaargetaltwee()
'

Range("I13").Select
ActiveCell.FormulaR1C1 = "1"
Range("I13").Select
Selection.Copy
Columns("A:A").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
Range("I13").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
 
Laatst bewerkt:
Jonathan1982,

Zo doet hij het wel maar duurd inderdaad erg lang.
Tevens heb ik bij de code van je zelf het Select weggehaald, dat is niet nodig.

Code:
Sub rtJonathan1982()
  Range("I13") = "1"
  Range("I13").Copy
    Columns("A:A").PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
    SkipBlanks:=False, Transpose:=False
  Range("I13").ClearContents    
Application.CutCopyMode = False
  Verwijder0
End sub

Sub Verwijder0()
  For I = Range("A1048576").End(xlUp).Row To 1 Step -1
    If Range("A" & I) = 0 Then
      Rows(I).EntireRow.Delete
    End If
  Next
End Sub
 
Laatst bewerkt:
Deze macro zit er in op dit moment:

Sub tekstnaargetal()

ActiveCell.FormulaR1C1 = "1"
Range("E93").Select
Selection.Copy
Columns("A:A").Select hier gaat het mis; je selecteert de hele kolom!
Range("A81").Activate
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=True, Transpose:=False
End Sub

Zoals je zit, zit skip blanks er al in, maar dat voegt kennelijk niets toe..

Als je ipv de hele kolom alleen het gebied selecteert waar iets staat in kolom A.
Dat kan door in je macro iets op te nemen als wat ik in post #6 heb gebruikt:
bv:
vervgebied = range("A1:A" & [a1].currentregion.rows.count)
 
Haije,

Kan je in die macro aangeven wat ik moet veranderen om alleen het gebied te selecteren waar iets in staat? Of het gewoon in de macro zelf aangeven?
 
Jonathan,

dan wordt het bv:
Code:
Sub rtJonathan1982()
  Range("I13") = "1"
  Range("I13").Copy
  Range("A1:A" & [a1].CurrentRegion.Rows.Count).PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
  Range("I13").ClearContents
    Application.CutCopyMode = False
    [a1].Select
    For w = [a1].CurrentRegion.Rows.Count - 1 To 1 Step -1
    If ActiveCell.Offset(w).Value = 0 Then ActiveCell.Offset(w).EntireRow.Delete
    Next w
End Sub

zie ook de bijlage

LET OP: alles zit nu in één macro!

Als dit niet voldoet, dan graag (een deel van) je bestand posten.
Je zegt het bestand niet te kunnen posten, omdat het te groot is.
Als je alleen de regels 1 t/m 200 laat staan en de rest verwijderd zou het dan wel lukken? Zo ja, dan graag posten..
 

Bijlagen

Dit is niet helemaal handig. Als ik namelijk niet hele rijen de cellen omzet van tekst naar getal, heb ik het ook niet nodig dat de rijen met een 0 in kolom A verwijderd worden.

Heb het bestandje bijgevoegd. Wat de macro's doen is:

1 kolommen verwijderen die ik niet nodig heb
2 lege rijen verwijderen
3 ID's omzetten naar juiste format (tekst scheiden en verwijderen)
4 kolommen met cellen met cijfers, maar opgeslagen als tekst, omzetten naar getallen (aanvulling: deze actie voor kolommen A, B en F)5 kolommen toevoegen en eigenschappen aanpassen.
6 alle rijen met 0 in kolom A verwijderen.

Wat ik dus wil is dat stap 4 alleen gebeurd voor de rijen waar al waardes in staan (dat ie die dus automatisch pakt. Als ik standaar rij 2 tot 100 pak, en ik voeg er een keer meer toe, dan pakt ie die niet mee) En stap 6 komt dan te vervallen.

Kan je er wat mee?

Bekijk bijlage test macro omvormer.xls
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan