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

Kolom waarin cellen met "00-01-1900" leeg maken

Status
Niet open voor verdere reacties.

EdjeVis

Gebruiker
Lid geworden
22 nov 2006
Berichten
99
Als ik mbv een ODBC-koppeling en MS Query gegevens binnenhaal in Excel, om ze daarna met een script verder te bewerken, krijg ik in de kolom "einddatum" voor een aantal regels de waarde "00-01-1900". Dit wordt veroorzaakt doordat in de database geen datum was ingevuld, deze wordt automatisch nu op "00-01-1900". Ik zoek me ondertussen kleurenblind naar de waarde die ik in moet vullen om deze cellen leeg te maken. Kan iemand me helpen?
 
Dacht ik ook, maar met de code
Code:
Columns("E:E").Replace What:="0", Replacement:=""
laat 'ie alles keurig staan.
Overigens excuses dat ik in eerste instantie niet volledig ben geweest. Na de import staat er "00-00-1900 00:00". In de code laat ik de format wijzigen middels
Code:
Columns("D:E").NumberFormat = "dd/mm/yyyy"
.
 
Hang eens het stukje bij uit het bestand waar er vervangen moet worden. Meer is niet nodig.
 
Zet een 0 in een cel, kopiëer die, selecteer kolom E. Doe Plakken Speciaal > Optellen.

Dan werkt:

Code:
Columns("E:E").Replace What:=0, Replacement:=""

Wigi
 
MOMENT, WACHT!

Alle 0 worden vervangen nu, 100 zou 1 worden.

Je moet met een Autofilter werken en filteren op 0. En dan verwijderen.
 
nulwaarden

waarom zou je het niet gewoon oplossen door naar extra - opties te gaan en daar nulwaarden uit te vinken?

groeten,

steven
 
Voor de verdere verwerking van dit soort data vind ik het prettiger als de betreffende cellen gewoon leeg zijn, omdat in de data-bron ook niets is ingevuld. Als ik de nulwaarde uitvink, zijn daarmee de cellen nog niet leeg, toch?

Wigi,
Hoe ga ik met dit autofilter om? Deze code zou toch gewoon moeten werken (alleen even om de juiste regels te selecteren)?
Code:
ActiveCell.AutoFilter
ActiveCell.AutoFilter Field:=5, Criteria1:="00-01-1900"

en anders deze :
Code:
ActiveCell.AutoFilter
ActiveCell.AutoFilter Field:=5, Criteria1:="0"

Maar gek genoeg laat 'ie in beide gevallen geen enkele regel meer zien.
Overigens : als ik op een cel ga staan in deze kolom, op F2 klik en daarna een ENTER geef, verschuif de inhoud van de cel van rechts uitgelijnd naar links uitgelijnd. Zou ik eerst nog iets met de opmaak van die hele kolom moeten doen of zo?
 
Maar gek genoeg laat 'ie in beide gevallen geen enkele regel meer zien.
Overigens : als ik op een cel ga staan in deze kolom, op F2 klik en daarna een ENTER geef, verschuif de inhoud van de cel van rechts uitgelijnd naar links uitgelijnd. Zou ik eerst nog iets met de opmaak van die hele kolom moeten doen of zo?

Bij de autofilter zal je hetzelfde probleem hebben als voorheen vermoed ik.

Heb je dit al gedaan:

Zet een 0 in een cel, kopiëer die, selecteer kolom E. Doe Plakken Speciaal > Optellen.

Wigi
 
En als je dat dan gedaan hebt, doe je maar Vervangen:

Code:
Columns(3).Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder:=xlByRows

LookAt:=xlWhole

is heel belangrijk: het vervangt enkel 0 en niet bv. de nullen in 100.

Wigi
 
:D
pfffff

Eindelijk!

Wigi, weer eens bedankt voor het meedenken en deze creatieve oplossing. Dit soort oplossingen probeer ik tegenwoordig te vermijden (voor zover ik al op deze oplossing gekomen was), omdat ze naar mijn gevoel in de "work-around" sfeer zitten ("Als 't niet kan zoals 't moet, dan moet 't maar zoals 't kan...."). Nu ik íéts meer van VBA-code begin te begrijpen, probeer ik het dus met zo min mogelijk regels en code zoals je me wel eerder hebt verschaft. In dit geval blijkt dat niet mogelijk en is het in ieder geval een werkende oplossing.
Uiteindelijk heb ik 'm dus maar zo gemaakt :
Code:
    Cells(1, 11).Value = 0
    Cells(1, 11).Copy
    Range(Cells(2, 4), Cells(ActiveCell.CurrentRegion.Rows.Count, 5)).PasteSpecial Operation:=xlAdd
    Application.CutCopyMode = False
    Columns("D:E").Replace What:="0", Replacement:="", LookAt:=xlWhole
    Columns("D:E").NumberFormat = "mm/dd/yyyy"
    Cells(1, 11).ClearContents
    Cells(1, 1).Select
 
Ik zou gaan voor:

Code:
    With Cells(1, 11)
         .Value = 0
         .Copy
     End With
    Range(Cells(2, 4), Cells(ActiveCell.CurrentRegion.Rows.Count, 5)).PasteSpecial xlAdd
    Application.CutCopyMode = False
    With Columns("D:E")
        .Replace What:="0", Replacement:="", LookAt:=xlWhole
        .NumberFormat = "mm/dd/yyyy"
    End With
    Cells(1, 11).ClearContents

Performanter en makkelijker in onderhoud.

Die ActiveCell doe je best ook nog weg tvv van een verwijzing.

Wigi
 
Je hebt gelijk, maar zoals aangegeven : ik zit nog volop in m'n "autodidactisch-traject"....
Goede tip, ik zal mezelf aanwennen er op deze manier mee te werken.

Nogmaals : thnx!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan