Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zelleninhalt auf mehrere Zeilen verteilen





Frage

Hallo, ich bin auf der Suche nach einem Makro, mit dem ich folgendes Problem lösen kann: So ist meine Tabelle grundsätzlich aufgebaut: Zelle A1 = 10 Zelle B1 = 8000..8002|8020|8050..8060|8100 Zelle A2 = 20 Zelle B2 = 4000..4020|4050|4060 Die Punkte (..) bedeuten von bis und der Strich (|) bedeutet UND . Ich hätte gerne, dass jede Zahl in der B-Spalte in einer neuen Zeile abgebildet wird, d.h. Spalte A Spalte B 10 8000 10 8001 10 8002 10 8020 ..... 10 8100 20 4000 20 4001 ..... 20 4060 Kann man so etwas mit einem Makro abbilden ? Da ich blutiger Anfänger bin , habe ich gedacht, ich frage einfach mal nach. Im vorraus schon besten Dank für Eure Hilfe. Blacky$$$

Antwort 1 von Saarbauer

Hallo,

wäre über ein Makro machbar, aber dazu sind noch einige Ergänzungen erforderlich.

Der genau Aufbau der Daten in Spalte B

1. immer 4 Stellen ?
2. wie getrennt oder auch nicht?
3 Anzahl der Werte bekannt oder variabel?
4. Daten in anderes Tabellenblatt oder das gleiche?


Gruß

Helmut

Antwort 2 von Blacky___

Hallo Helmut,

vielen Dank für Deine schnelle Antwort.

Ich versuche jetzt mal Deine Fragen zu beantworten:

1. immer 4 Stellen ?

Ja, die Zahlen haben immer 4 Stellen.

2. wie getrennt oder auch nicht?

Ich verstehe nicht ganz, was Du damit meinst.
Die Trennung der einzelnen Blöcke (8000..8002 ist für mich ein Block) erfolgt immer durch das "|"-Zeichen. Meinst Du das?

3 Anzahl der Werte bekannt oder variabel?

Die Werte stehen in der Regel 50 Zeilen und die Zahlen liegen zwischen 1000 und 9999.

4. Daten in anderes Tabellenblatt oder das gleiche?

Die Daten sollen in ein neues Tabellenblatt geschrieben werden.

Ich hoffe, dass damit Deine Fragen ausreichend geklärt sind.

Viele Grüße

Rainer

Antwort 3 von Saarbauer

Hallo,

im großen und ganzen alles beantwortet bis Frage 2

ich meinte, ob in einem Block immer gleichviel Zahlen stehen oder unterschiedlich

so gemeint

8000|8001|8002|8003
2000|2001|2002|2003
(hier immer 4 Zahlen)
oder so

8000|8001|8002|8003
2000|2001|2002|2003 |2004

Gruß

Helmut

Antwort 4 von Saarbauer

Hallo,

mein Lösungsvorschlag


Sub Aufteilen()
LetzteZeile = Range("Tabelle1!A65536").End(xlUp).Row
Sheets("Tabelle2").Select
k = 1
For i = 1 To LetzteZeile
Zahl_a = Range("Tabelle1!A" & i).Value
Länge_Zahl = Len(Range("Tabelle1!B" & i).Value)
Zahl_b = Range("Tabelle1!b" & i).Value
For j = 4 To Länge_Zahl Step 5
Range("A" & k).Value = Range("Tabelle1!A" & i).Value
x = j - 3
Range("B" & k).Value = Mid(Zahl_b, x, 4)
k = k + 1
Next j
Next i
End Sub


müsste funktionieren

Gruß

Helmut

Antwort 5 von Blacky___

Hallo Helmut,

wow, das geht aber schnell bei Dir.

Leider funzt die ganze Sache noch nicht wirklich.

Ich glaube, dass Du was übersehen hast.

Es stehen nicht nur Zahlenblöcke in Spalte B sondern auch Von-Bis-Anweisungen.

Beispiel: 8000..8002|8020 d.h.

8000
8001
8002
8020 gehören dazu.

Das macht die Sache glaube ich etwas komplizierter, oder?

Gruß
Rainer

Antwort 6 von Saarbauer

Hallo,

in dem Fall würde ich mir die Tabelle gern ansehen. Übersehen kann ich nicht direkt sagen, falscxh interpretiert, daher meine Fragen in AW1.

Im Pager findest du miel Mailadresse sende mir mal die Datei oder ein passendes Beispiel

Gruß

Helmut

Antwort 7 von Saarbauer

Hallo,

wenn deine Daten so ausshen wie in der Anfrage, dann müsste es hiermit gehen

Sub Aufteilen()
LetzteZeile = Range("Tabelle1!A65536").End(xlUp).Row
Sheets("Tabelle2").Select
k = 1
For i = 1 To LetzteZeile
Zahl_a = Range("Tabelle1!A" & i).Value
Länge_Zahl = Len(Range("Tabelle1!B" & i).Value)
Zahl_b = Range("Tabelle1!b" & i).Value
For j = 4 To Länge_Zahl Step 5
If Mid(Zahl_b, j + 1, 2) = ".." Then
W1 = Mid(Zahl_b, j - 3, 4)
W2 = Mid(Zahl_b, j + 3, 4)
For l = W1 To W2
Range("A" & k).Value = Range("Tabelle1!A" & i).Value
Range("B" & k).Value = l
k = k + 1
Next l
j = j + 6
Else
Range("A" & k).Value = Range("Tabelle1!A" & i).Value
Range("B" & k).Value = Mid(Zahl_b, j - 3, 4)
k = k + 1
End If
Next j
Next i
End Sub

Gruß

Helmut

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: