Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1168to1172
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Konvertierung von Daten

Konvertierung von Daten
Daten
Hallo zusammen,
ich erzeuge mit einem mobilen Datenerfassungsgerät Zahlenkolonnen folgender Struktur:
I722610003
I048970146051940001
E0202000
I080202830255090001
E0202000
I722612007
I040082404010100001
E0202500
Die erste Art der Daten sind Regaldaten und beginnen immer mit "I7", die zweite Art sind EAN, immer beginnend mit "I0" und die dritte Art der Rabatt, immer beginnend mit "E02".
Die EAN und die Rabatte müssten unter den Regaldaten solange subsummiert werden, bis sie sich ändern. Dabei sollen den Regaldaten die ersten beiden Stellen, also das I7
den EAN die ersten beiden Stellen - also "I0" - und die letzten 4 Stellen - immer 0001 - und
den Rabattdaten die ersten beiden Stellen -also das "E02" - abgeschnitten und in eine Zahl mit zwei Nachkommastellen konvertiert werden. Aus "E0202550" würde bspw. "25,50" werden.
Ist so etwas mit VBA möglich?
Liebe Grüße
Alina
Ich hab eine Beispieldatei hochgeladen, wo ihr euch genauer anschauen könnt, was ich meine
https://www.herber.de/bbs/user/70926.xlsx

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Konvertierung von Daten
05.08.2010 20:08:20
Daten
Hallo Alina,
die Datei konnte ich leider nicht öffnen, da ich eine ältere Excel-Version benutze. Daher bin ich mir nicht sicher, ob ich die Frage richtig verstanden habe. Nehmen wir an, die Daten stehen in Spalte A beginnend ab Zeile 1. Dann in B1 folgende Formel und nach unten kopieren:
=WENN(LINKS(A1;2)="I0";TEIL(A1;3;LÄNGE(A1)-6);WENN(LINKS(A1;1)="E";TEIL(A1;4;LÄNGE(A1)-3)/100;A1))
Beginnt der Eintrag in der Spalte A mit
- I0 so werden die ersten beiden und die letzten 4 Zeichen eliminiert
- E so werden die ersten drei Zeichen eliminiert und der Rest in eine Zahl mit 2 Nachkommastellen umgewandelt
- I7 wird der Zellinhalt unverändert übertragen.
Lade doch ggf. mal die Datei in Excel97-Format hoch.
Gruß
Martin
Anzeige
AW: Konvertierung von Daten
05.08.2010 20:43:47
Daten
Hallo Alina,
ich habe gerade gesehen, dass bei I7 die ersten beiden Stellen eliminiert werden sollen. Hier die korrigierte Formel:
=WENN(LINKS(A1;2)="I0";TEIL(A1;3;LÄNGE(A1)-6);WENN(LINKS(A1;1)="E";TEIL(A1;4;LÄNGE(A1)-3)/100; RECHTS(A1;LÄNGE(A1)-2)))
Gruß
Martin
AW: Konvertierung von Daten
05.08.2010 20:23:18
Daten
Hallo,
ohne Fehlerüberprüfung, versuch es mal hiermit.
Die Ausgabe habe ich auf Tabelle2.Range("E1") gestellt, müsstest Du noch anpassen.
Option Explicit
Option Compare Text

Sub test()
Dim ArrData, ArrAusgabe()
Dim A&, B&, C&

With Tabelle1
    ArrData = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
End With
Redim Preserve ArrAusgabe(1 To Ubound(ArrData), 1 To 3)

C = 1

For A = 1 To Ubound(ArrData)
    ArrData(A, 1) = Trim$(ArrData(A, 1))
    If Left$(ArrData(A, 1), 2) = "i7" Then
        ArrAusgabe(C, 1) = Right(ArrData(A, 1), Len(ArrData(A, 1)) - 2) * 1
    ElseIf Left$(ArrData(A, 1), 2) = "e0" Then
        ArrAusgabe(C, 3) = Right(ArrData(A, 1), 4) / 100
        C = C + 1
    ElseIf Left$(ArrData(A, 1), 2) = "i0" Then
        ArrAusgabe(C, 2) = Mid(Left$(ArrData(A, 1), Len(ArrData(A, 1)) - 4), 3, 10 ^ 9) * 1
    End If

Next A

With Tabelle2.Range("E1").Resize(Ubound(ArrAusgabe), Ubound(ArrAusgabe, 2))
    .Columns(1).NumberFormat = "0"
    .Columns(2).NumberFormat = "0"
    .Columns(3).NumberFormat = "0.00"
    .Cells = ArrAusgabe
End With

End Sub
Hier noch die Beispiel Datei.
https://www.herber.de/bbs/user/70928.xlsm
Datei muss als *.xlsm gespeichert werden, *.xlsx hat kein VBA.
Gruß Tino
Anzeige
AW: Konvertierung von Daten
06.08.2010 01:42:37
Daten
Hallo Alina,
hier noch eine Makrovariante.
Die Regalnummer wird in jede Zeile geschrieben, könte man aber einfach anpassen.
Gruß
Franz
Sub Daten_umgruppieren()
Dim Zeile As Long, ZeileLetzte As Long, ZeileData As Long
Dim wksScann As Worksheet, wksData As Worksheet
Dim sEAN$, sRabatt$, sRegal$
Set wksScann = Worksheets("Tabelle1") 'Tabelle mit eingelesenene Daten
Set wksData = Worksheets("Tabelle2") 'Ausgabetabelle
'Ausgabe-Tabellenblatt vorbereiten
With wksData
.UsedRange.ClearContents
ZeileData = 1
.Cells(ZeileData, 1) = "Regal"
.Cells(ZeileData, 2) = "EAN"
.Cells(ZeileData, 3) = "Rabatt"
.Columns(1).NumberFormat = "@"
.Columns(2).NumberFormat = "@"
.Columns(3).NumberFormat = "0.00"
End With
'Daten ins Ausgabeblatt übertragen
With wksScann
ZeileLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
Zeile = 1
NextRegal:
Do Until Left(.Cells(Zeile, 1).Value, 2) = "I7"
If Left(.Cells(Zeile, 1).Value, 2) = "I0" Then sEAN = Mid(.Cells(Zeile, 1), 3, 13)
Zeile = Zeile + 1
If Left(.Cells(Zeile, 1).Value, 3) = "E02" Then sRabatt = Mid(.Cells(Zeile, 1), 4)
Zeile = Zeile + 1
ZeileData = ZeileData + 1
With wksData
.Cells(ZeileData, 1) = sRegal
.Cells(ZeileData, 2) = sEAN
.Cells(ZeileData, 3) = CDbl(sRabatt) / 100
End With
If Zeile >= ZeileLetzte Then GoTo Beenden
Loop
sRegal = Mid(.Cells(Zeile, 1), 3)
Zeile = Zeile + 1
GoTo NextRegal
End With
Beenden:
End Sub

Anzeige
AW: Konvertierung von Daten
06.08.2010 14:53:39
Daten
Boah, da ward ihr aber fleißig!! Vielen Dank dafür, ich gebe euch Feedback, sobald ich es ausprobiert hab. DANKE!
LG
Alina

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige