389 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo, ich benötige Eure Hilfe.

Immer wenn in Spalte J ab Zeile 3 bis 65000 ein Eintrag (ist mein Datensatz), was
drin ist, muss der Inhalt zerlegt werden. Und zwar in die Felder davor! Spalten A bis
F. Außerdem muss das „M1“ in Spalte A immer generiert werden, wenn Spalte J
was drin steht.

Beispiel Daten aus J: A0HNA11CQ001


Spalten
A = "M1 ausgeben wenn J gefüllt! " M1
B = „erstes Zeichen aus J“ A
C = „zweites Zeichen aus J“ 0
D = „drittes bis fünftes Zeichen aus J“ HNA
E = „sechstes und siebtes Zeichen aus J“ 11
F = „achtes bis zwölftes Zeichen aus J“ CQ001

Ich brauche ne hilfe, wie ich das als VBA Script umsetze.

Vielen Dank für Eure Hilfe und Antworten.

J. Behrens

5 Antworten

0 Punkte
Beantwortet von
Hallo J. Behrens .-)

Wie gewünscht!

Gruss Nighty

Sub StringTeilung()
Dim Zelle As Long
Dim SpalteJ As Variant, DatenAF As Variant
Lzeile = Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Lspalte = Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Column
SpalteJ = Range("J1:J" & Lzeile)
DatenAF = Range("A1:F" & Lzeile)
For Zelle = 2 To UBound(SpalteJ)
If SpalteJ(Zelle, 1) <> "" Then
If Len(SpalteJ(Zelle, 1)) > 11 Then
DatenAF(Zelle, 1) = "M1"
DatenAF(Zelle, 2) = Mid(SpalteJ(Zelle, 1), 1, 1)
DatenAF(Zelle, 3) = Mid(SpalteJ(Zelle, 1), 2, 1)
DatenAF(Zelle, 4) = Mid(SpalteJ(Zelle, 1), 3, 3)
DatenAF(Zelle, 5) = Mid(SpalteJ(Zelle, 1), 6, 2)
DatenAF(Zelle, 6) = Mid(SpalteJ(Zelle, 1), 8, 5)
End If
End If
Next Zelle
Range("A1:F" & Lzeile) = DatenAF
End Sub
0 Punkte
Beantwortet von
Hallo Commuity .-)

ops ... wie immer,Flüchtigkeitsfehler korrigiert!

Gruss Nighty

Sub StringTeilung()
Dim Zelle As Long, Lzeile As Long
Dim SpalteJ As Variant, DatenAF As Variant
Lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
SpalteJ = Range("J1:J" & Lzeile)
DatenAF = Range("A1:F" & Lzeile)
For Zelle = 2 To UBound(SpalteJ)
If SpalteJ(Zelle, 1) <> "" Then
If Len(SpalteJ(Zelle, 1)) > 11 Then
DatenAF(Zelle, 1) = "M1"
DatenAF(Zelle, 2) = Mid(SpalteJ(Zelle, 1), 1, 1)
DatenAF(Zelle, 3) = Mid(SpalteJ(Zelle, 1), 2, 1)
DatenAF(Zelle, 4) = Mid(SpalteJ(Zelle, 1), 3, 3)
DatenAF(Zelle, 5) = Mid(SpalteJ(Zelle, 1), 6, 2)
DatenAF(Zelle, 6) = Mid(SpalteJ(Zelle, 1), 8, 5)
End If
End If
Next Zelle
Range("A1:F" & Lzeile) = DatenAF
End Sub
0 Punkte
Beantwortet von
Hallo Community ^^

Heute ist nicht mein Tag ,hab ich den Eindruck !
Die letzten 2 Zeilen vom vorigen Posting ,waren recht aufdringlich *g*,löschen

Gruss Nighty


[*][sup]Admininfo: *Threadedit* Siehe Auftrag ausgeführt ;-)[/sup]
0 Punkte
Beantwortet von
Hallo Nighty,

Dein Script hat Super funktioniert. Ich habe gleich das zweite genommen.

Sogar die Daten in Spalte E (zweistellig 06 z.B. hat) er gleich richtig mit
übernommen!

Super gemacht vielen Dank ! ! !

Gruß J. Behrens
0 Punkte
Beantwortet von
Ich korrigiere meine Nachricht. Sorry Nighty

Nachdem ich mal die Formatierung gelöscht habe, und das Script von
Nighty, neu ausgeführt habe ist aufgefallen das die möglichen 06 oder 00 in
Spalte E nicht zweistellig angezeigt und in die Felder kopiert werden.

Gibt es eine einfache Lösung 00 oder 06 auch genau so ins Feld
eingetragen zu bekommen und auch als Daten so ausgeben zu können?

Gruß J.Behrens
...