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

0 vervangen d.m.v. macro

Status
Niet open voor verdere reacties.

rickb1977

Gebruiker
Lid geworden
2 dec 2015
Berichten
53
Voor mijn werk heb ik een bestand waarin in cellen die leeg mogen zijn telkens een 0 staat en in plaats van komma's punten gebruikt worden.
Dit bestand is een export uit een ander softwarepakket en dit schijnt niet anders ingesteld te kunnen worden.

Nu kan ik met 'zoeken en vervangen' de punten door komma's vervangen en de nullen vervangen door een lege cel.
Dit probeer ik nu in een macro te zetten alleen lukt wel met de punten/komma's maar niet met de nullen.
De nullen wil ik vervangen met de optie "identieke celinhoud' zodat er geen nullen wegvallen bij getallen waar de nul een onderdeel van is.

Helaas lukt het mij en ik zie ik oorzaak niet. Hieronder de code in tevens een voorbeeldbestand.

Alvast bedankt voor het meedenken.


Code:
Sub Vervangen()
'
' Vervangen Macro
'

'
    Range("A5:Y5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    For Each xcell In Selection
    xcell.Value = xcell.Value * 1
          Next xcell
    Range("A5").Select
End Sub
Bekijk bijlage Voorbeeld vervanging.xlsx
 
Deze doet volgens mij wat je wilt:
Code:
    ActiveCell.CurrentRegion.Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    For Each xcell In Selection
          Next xcell
    Range("A5").Select
 
Code:
Sub M_snb()
    Blad1.Cells.Replace ".", ",", 2
    Blad1.Cells.Replace 0, "", 1
    Blad1.UsedRange.Value = Blad1.UsedRange.Value
End Sub
 
of zo:
Code:
Sub SjonR()
With Cells(1).CurrentRegion
    .Replace ".", ",", 2
    .Replace 0, "", 1
End With
For Each cl In UsedRange
    If cl.Value <> "" Then cl.Value = cl.Value * 1
Next cl
End Sub
 
Elke export is te maken zoals jij wil. Als het om welke reden dan ook niet mogelijk is dan kan je het waarschijnlijk op de juiste manier importeren. In welke vorm krijg je het export bestand aangeleverd? 0 is een waarde waarom wil je hier een 'lege' cel van maken?
 
Laatst bewerkt:
@OctaFish: jouw oplossing werkt deels. De punten en nullen worden vervangen alleen worden bijvoorbeeld in kolom A de nullen in 2018 ook verwijderd. Daar komt dan dus 218 te staan.
Verder worden de getallen als TEKST weergegeven.

@snb: wanneer ik jouw code gebruik lijkt er helemaal niets te gebeuren. Mogelijk doe ik iets fout.

@SjonR: het eerste deel werkt goed. (de vervanging). Bij "For Each cl In UsedRange" krijg ik de melding "Fout 13 tijdens uitvoering. Typen komen niet met elkaar overeen"

@VenA: De export wordt aangeleverd als TXT. Wanneer ik het bestand (na de nodige bewerkingen) wil importeren geeft het programma waarin het geïmporteerd wordt foutmeldingen bij die 0(en).
Ik kan daar natuurlijk over gaan discussiëren met de partij die de TXT aanlevert of met de partij die het geïmporteerde bestand ontvangt. Ik dacht alleen dat ik het gemakkelijk kon oplossen door een macro. Vandaar mijn vraag.
 
Wanneer het in een module staat moet je verwijzen naar het blad, probeer eens:

Code:
For Each cl In Blad1.UsedRange
 
Je kunt ook het celformaat aanpassen naar 0;-0;;

Dan krijg je ook de nullen niet te zien
 
Allemaal heel erg bedankt voor het meedenken!

Na aandringen bij onze softwareleverancier bleek de export uiteindelijk toch aangepast te kunnen worden.
Het wordt nu netjes opgebouwd zonder nullen en met komma's in plaats van punten. Probleem opgelost.
 
En.... opgelost zoals het hoort: bij de bron.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan