Excel: .csv bevat lege waarden

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
Mijn vraag
Ik ben bezig met een macro om een export van applicatie A "geschikt" te maken voor de import van applicatie B. Het gaat om het samenvoegen en verplaatsen van een een paar kolommen.
De export van A kan qua hoeveelheid regels variëren. Ik schat in dat het er maximaal 500 zullen zijn. Voor het samenvoegen heb ik in de macro opgenomen in kolom D: "=A&B&C". Dit voor regels 1 t/m 500. En vervolgens D gekopieerd naar E met alleen waarden. A, B en C en D verwijderd zodat alleen E overblijft met de samengevoegde kolommen.
Als ik dit test in mijn Excelsheet met een export van applicatie A gaat het goed: als deze bijvoorbeeld 130 regels heeft, resulteert dit in 130 regels voor kolom E, waar netjes de gegevens van (de verwijderde) A, B, en C in staat.
Echter als ik exporteer naar csv, dan zie ik daar onder de laatste "echte" regel, nog een heleboel regels met dit:
; ; ;;;
; ; ;;;
; ; ;;;
; ; ;;;
Met andere woorden: hij maakt blanco regels aan met alleen de separator, t/m regel 500.
Dat wil ik niet, hij moet natuurlijk na 130 stoppen, omdat het bronbestand ook maar 130 regels bevat.

Als ik op CTRL+End klik in Excel, gaat hij inderdaad naar regel 500.Dus op de een of de andere manier is er nog ergens data.

Relevante software en hardware die ik gebruik
Excel

Wat ik al gevonden of geprobeerd heb
Gegoogled. Ben er al een uur mee bezig. Het verwijderen van deze regels (dus in het voorbeeld regels 131 t/m 500) helpt niet.
Het verwijderen van de cellen ook niet.

Ik snap het niet, want er staat geen data in deze cellen.

[ Voor 6% gewijzigd door tbenschop2 op 11-11-2019 11:08 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Wintervacht
  • Registratie: December 2016
  • Laatst online: 07-08 10:04

Wintervacht

☉ ‿ ⚆

Je maakt een script wat voor regels 1 t/m 500 een resultaat uitspuugt, logisch dus dat je dan ook 500 resultaten krijgt, als er niks in een cel staat krijg je een leeg resultaat. Herschrijf het script dat die stopt na de laatste regel met een waarde erin.

Weet een beetje van veel dingen en veel van een paar dingen.


Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
@Wintervacht
Zoiets dacht ik al.

Dan is de vraag... Hoe? :) Ik heb de macro gewoon opgenomen, ik kan geen macro's programmeren.

En kan ik niet voorkomen dat een lege cel toch een resultaat oplevert?

[ Voor 20% gewijzigd door tbenschop2 op 11-11-2019 11:15 ]


Acties:
  • 0 Henk 'm!

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Je hebt geen macro nodig om cellen samen te voegen, kan ook met een formule.

kolom D zal iets moeten gaan worden als:
=(trim(trim(a) + " " + trim(b) + " " + trim(c))

En weg zijn de spaties

Zelf geen Exel meer op m'n laptop, maar zoek maar op Google naar "trim"

Ey!! Macarena \o/


Acties:
  • 0 Henk 'm!

  • Wintervacht
  • Registratie: December 2016
  • Laatst online: 07-08 10:04

Wintervacht

☉ ‿ ⚆

tbenschop2 schreef op maandag 11 november 2019 @ 11:10:
@Wintervacht
Zoiets dacht ik al.

Dan is de vraag... Hoe? :)
En kan ik niet voorkomen dat een lege cel toch een resultaat oplevert?
Je script posten zou een begin zijn, geen idee wat het nu precies doet.

Een optie is om een while of for loop te maken, al weet ik niet hoe dat moet met Excel, ben niet thuis in die scripting taal.
Iets in de richting van (pseudo-code):
code:
1
2
3
4
while (Veldwaarde !== null) {
    D: "=A&B&C";
   next;
}

Weet een beetje van veel dingen en veel van een paar dingen.


Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
@Wintervacht
Bedankt, ik ben bang dat het dan wat te complex gaat worden. Ik heb de macro gewoon opgenomen, ben geen programmeur (nou ja een heel klein beetje zou wel lukken).

Dit is het automatisch gegenereerde script:
Sub Converteer()
'
' Converteer Macro
'
' Sneltoets: Ctrl+q
'
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D2").Select
ActiveCell.FormulaR1C1 = "=RC[-3]&"" ""&RC[-2]&"" ""&RC[-1]"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D501"), Type:=xlFillDefault
Range("D2:D501").Select
ActiveWindow.ScrollRow = 1
Columns("D:D").Select
Selection.Copy
Columns("E:E").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:D").Select
Range("D1").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Columns("E:G").Select
Selection.Delete Shift:=xlToLeft
Range("I1").Select
Selection.Copy
Columns("L:L").Select
Columns("I:I").Select
Application.CutCopyMode = False
Selection.Copy
Columns("L:L").Select
Selection.Insert Shift:=xlToRight
Columns("F:I").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Selection.Delete Shift:=xlUp
End Sub
Selection.AutoFill Destination:=Range("D2:D501"), Type:=xlFillDefault
...is de boosdoener.

Acties:
  • 0 Henk 'm!

  • Wintervacht
  • Registratie: December 2016
  • Laatst online: 07-08 10:04

Wintervacht

☉ ‿ ⚆

Probeer die regel eens te vervangen voor:
code:
1
Range("D1:I" & Range("D1").End(xlDown).Row)

Geen idee of dat werkt maar volgens de interwebs selecteer je zo een kolom tot de eerste lege cell.

Weet een beetje van veel dingen en veel van een paar dingen.


Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
Wintervacht schreef op maandag 11 november 2019 @ 11:31:
Probeer die regel eens te vervangen voor:
code:
1
Range("D1:I" & Range("D1").End(xlDown).Row)

Geen idee of dat werkt maar volgens de interwebs selecteer je zo een kolom tot de eerste lege cell.
Helaas, dat gaat niet goed.

"Compileerfout: ongeldig gebruik van een eigenschap"

Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
Ik heb het als volgt opgelost:
Als je op het rechterhoekje van een cel dubbelkklikt, wordt de waarde naar beneden gekopieerd t/m de laatste rij waar nog waarden in staan. Problem solved.
Pagina: 1