30. juni 2014 - 08:32
Der er
2 kommentarer og
1 løsning
Modificering af csv fil
Hej Eksperter
Har en csv fil som viser følgende når jeg åbner den i excel:
"XXX","08901090123","IS81872309","8452,50","300122","DKK","","U","","","","","N","","","","","","","WF -4374 - KPMG ","","1293301","71","701510012967011 ","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","WF -4374 - KPMG"
Ovenfor er kun en række dem er der flere hundred/tusinder af i en fil.
Jeg vil gerne oprette en formel der gør følgende:
Hvis Felt 23 har værdi 71 skal Felt 20,22 og alle fra 25 være blanke altså værdi ""
Er der nogen der har en ide til dette?
Mvh
JayTono
Rem Version 4.1 - 20. juni 2014
Const inputFilNavn = "Finalfil.txt" 'kan ajf.
Const outputFilNavn = "Finalfil_red.csv" '-"-
Dim sti As String, linje As String, linjeRed As String, f As Integer
Dim tabel As Variant, feltNr As Integer, felt As Variant, ix As Integer, tabelRed(71) As Variant, flag71 As Boolean
Public Sub korrigerCSV()
On Error GoTo fejl
Rem hent aktuelle sti for systemFil - inputfil forventes også her
sti = ActiveWorkbook.Path
Open sti & "\" & inputFilNavn For Input As #1
Open sti & "\" & outputFilNavn For Output As #2
Rem indlæsInput
Do While Not EOF(1)
Line Input #1, linje
tabel = Split(linje, ",""")
Rem TEST AF FELTER (første felt = 0 i tabel)
Rem - erstat 000 med 0890
feltNr = 2
felt = tabel(feltNr - 1)
If Left(felt, 3) = "000" Then
tabel(feltNr - 1) = "0890" & Mid(felt, 4)
End If
Rem - fjern blanke
feltNr = 3
felt = tabel(feltNr - 1)
tabel(feltNr - 1) = Replace(felt, " ", "")
Rem - beløb med 2 dec
feltNr = 4
felt = tabel(feltNr - 1)
felt = Format(felt, "0,00")
tabel(feltNr - 1) = Replace(felt, ".", ",")
Rem - dato
feltNr = 5
felt = tabel(feltNr - 1)
tabel(feltNr - 1) = Format(felt, "0#######")
Rem - test = 71
feltNr = 23
If tabel(feltNr - 1) = "71""" Then
flag71 = True
tabel(22 - 1) = """"
tabel(20 - 1) = """"
For ix = 25 - 1 To UBound(tabel)
tabel(ix) = """"
Next ix
Else
flag71 = False
Rem - test = 04
If tabel(feltNr - 1) = "04""" Then
tabel(24 - 1) = tabel(22 - 1)
tabel(22 - 1) = """"
End If
End If
Rem - test længde = 15 ciff - hvis 71 i felt 23
feltNr = 24
felt = tabel(feltNr - 1)
If flag71 = True Then
While Len(felt) < 15
felt = "0" & felt
Wend
tabel(feltNr - 1) = felt
End If
Rem - max 72 felter
antalfelter = UBound(tabel) + 1
If antalfelter > 72 Then
For f = 0 To 71
tabelRed(f) = tabel(f)
Next f
linjeRed = Join(tabelRed, ",""")
Else
linjeRed = Join(tabel, ",""")
End If
Print #2, linjeRed
Loop
Close #1
Close #2
Exit Sub
fejl:
Close #1
Close #2
MsgBox "Fejl - prøv igen"
End Sub