[GastForen Programme Office Microsoft Office Excel: Zeilen in ein Feld transponieren möglich?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Office - Alles fürs Büro
Themen
Beiträge
Moderatoren
Letzter Beitrag

Excel: Zeilen in ein Feld transponieren möglich?

rohrfrei
Beiträge gesamt: 4492

22. Feb 2008, 11:57
Beitrag # 1 von 16
Bewertung:
(15848 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe eine Spalte, in der in untereinanderstehenden Zeilen mehrere Einträge vorhanden sind. Ich möchte diese Einträge alle in EINEM Feld zusammenfügen, voneinander mit einem Trennzeichen wie z.B. Semikolon getrennt.

Ich kenne die Transponieren-Funktion, aber die macht aus jeder Zeile eine extra Spalte. Ich will das aber alles in einer Spalte in ein Feld zusammenfassen.

Geht so etwas?

Gruß
X

Excel: Zeilen in ein Feld transponieren möglich?

Heike Burch
Beiträge gesamt: 1241

22. Feb 2008, 12:41
Beitrag # 2 von 16
Beitrag ID: #338394
Bewertung:
(15827 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ja das geht:

=VERKETTEN(A1;" trennzeichen ";A2;" trennzeichen ";A3)

A1 und A2 und A3 sind deine zellen

in den "" packst du Dein Trennzeichen, ich hab mal das Wort trennzeichen gepackt!

versuchs mal...


als Antwort auf: [#338376]

Excel: Zeilen in ein Feld transponieren möglich?

rohrfrei
Beiträge gesamt: 4492

22. Feb 2008, 13:36
Beitrag # 3 von 16
Beitrag ID: #338408
Bewertung:
(15812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ja, das ist schon mal ganz gut und funktioniert. Nur die Eingabe finde ich mühsam. Man muß ja praktisch jedes Feld von Hand eingeben und dann die Trennzeichen dazwischenpacken.

In meinem Fall stehen die Felder, die zusammengefasst werden sollen, alle direkt untereinander, also z.B. von B2 bis B10. Kann man sich in so einem Fall die Eingabe auch vereinfachen in dem man evtl. den "Quellbereich" einfach mit der Maus markiert? Das habe ich nicht geschafft, vielleicht gibt es dafür noch einen Trick?

Aber danke schon mal bis hierhin.

Gruß


als Antwort auf: [#338394]

Excel: Zeilen in ein Feld transponieren möglich?

ktedo
Beiträge gesamt: 253

22. Feb 2008, 14:06
Beitrag # 4 von 16
Beitrag ID: #338419
Bewertung:
(15801 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
nicht ganz..
einmal so eine Verkettung "programmiert", kann diese mittels Suchen+Ersetzen entweder innerhalb von Excel oder extern (Editor) schnell angepasst werden.

Noch eine Idee: Kann es sein, das das Ergebnis dieser Verkettung eine so genannte CSV ergeben soll. Excel bietet eine Exportfunktion, in der Zellen-Werte durch beliebige Trennzeichen ausgegeben werden. Das kann die Sache dann noch einmal erleichtern.

vielleicht hilfts ja, Thomas


als Antwort auf: [#338408]

Excel: Zeilen in ein Feld transponieren möglich?

Heike Burch
Beiträge gesamt: 1241

22. Feb 2008, 15:41
Beitrag # 5 von 16
Beitrag ID: #338443
Bewertung:
(15781 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ rohrfrei ] Hallo,

ja, das ist schon mal ganz gut und funktioniert. Nur die Eingabe finde ich mühsam. Man muß ja praktisch jedes Feld von Hand eingeben und dann die Trennzeichen dazwischenpacken.

In meinem Fall stehen die Felder, die zusammengefasst werden sollen, alle direkt untereinander, also z.B. von B2 bis B10. Kann man sich in so einem Fall die Eingabe auch vereinfachen in dem man evtl. den "Quellbereich" einfach mit der Maus markiert? Das habe ich nicht geschafft, vielleicht gibt es dafür noch einen Trick?

Aber danke schon mal bis hierhin.

Gruß


Naja,
du kannst (bei deiner aussage b1-B10 ja nicht gar so viele...) in ein feld schreiben

=verketten(

und dann per mausklick jedes feld anklicken

)

müsste doch gehen.

frage: was willst du damit tun?


als Antwort auf: [#338408]

Excel: Zeilen in ein Feld transponieren möglich?

rohrfrei
Beiträge gesamt: 4492

22. Feb 2008, 16:54
Beitrag # 6 von 16
Beitrag ID: #338463
Bewertung:
(15767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo nochmal,

@Heike Koch:
Zitat Naja,
du kannst (bei deiner aussage b1-B10 ja nicht gar so viele...) in ein feld schreiben

=verketten(

und dann per mausklick jedes feld anklicken

)

müsste doch gehen.

Ja, per Einzelklick geht es. Aber leider nicht per ziehen/einkreisen mit der Maus in einem Rutsch. Wenn man sich aber den Syntax für das Trennzeichen in die Zwischenablage kopiert und dann immer einzeln klickt-einfügt-klickt-einfügt usw., geht es. Ist ja immerhin schon mal eine Erleichterung und besser als ganz zu Fuß. Aber irgendwie noch nicht wirklich rationell. Und vor allem fehleranfällig, wenn man das als Mensch selber machen muß. Eigentlich wäre das eine super-Aufgabe für einen Computer, denn die können solche Routineaufgaben viel besser und schneller und vor allem auch fehlerfrei erledigen als wir.
Die Aufgabe ist im Moment noch überschaubar mit ca. 100 Einträgen pro Tabelle, kann aber recht schnell anwachsen auf über 1000 - und dann wird es zäh.

Zitat frage: was willst du damit tun?

Also ich bekomme von einem fremden Server aus einer Datenbank eine Excel-Tabelle. Die ist so, wie sie ist. Darauf habe ich keinen Einfluß. In dieser Tabelle stehen verschiedene Einträge untereinander, jeder schön für sich separiert und einzeln. Diese Daten muß ich in einen anderen Server in eine andere Datenbank überführen. Allerdings sollen bestimmte Einträge zu Gruppen zusammengefasst werden in ein bestimmtes Feld, aus dem die neue Datenbank dann die Daten in bestimmter Art und Weise verwurstet.
Als Anlage mal ein screenshot aus zwei Tabellen, die das bildlich zeigen. Zur Zeit gehe ich davon aus, daß die Einträge auch schön untereinander stehen, aber das kann ich leider noch nicht garantieren. Also irgendwie schreit das förmlich nach einer weitergehenden Automatisierung. Leider kann ich weder irgendwelche Makros noch Visual-irgendwas schreiben. Wäre daher für jede weitere Idee dankbar.


@ktedo:
Zitat einmal so eine Verkettung "programmiert", kann diese mittels Suchen+Ersetzen entweder innerhalb von Excel oder extern (Editor) schnell angepasst werden.

hast du da was bestimmtes vor Augen?

Zitat Noch eine Idee: Kann es sein, das das Ergebnis dieser Verkettung eine so genannte CSV ergeben soll. Excel bietet eine Exportfunktion, in der Zellen-Werte durch beliebige Trennzeichen ausgegeben werden. Das kann die Sache dann noch einmal erleichtern.

Ja, der Import in die neue Datenbank erfolgt per csv-Datei. Ich meine aber, daß mich das bei dieser Problemstellung nicht weiterbringt. Aber trotzdem danke für den Tip, da ich ja per csv auch ein Trennzeichen definieren muß. Das darf dann logischerweise nicht identisch sein mit dem Trennzeichen innerhalb des Feldes.

Danke für's mitdenken und Gruß


als Antwort auf: [#338443]
Anhang:
transponieren-special.gif (51.9 KB)

Excel: Zeilen in ein Feld transponieren möglich?

Henry
Beiträge gesamt: 966

29. Feb 2008, 14:24
Beitrag # 7 von 16
Beitrag ID: #339626
Bewertung:
(15709 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
hab mal versucht, das per VB-Script umzusetzen.
Beim Export der csv-Datei hat man 2 unterschiedliche Formatierungen zur Wahl [Ja/Nein].
Gruß,Henry
Code
Sub Artikeltabelle_transponieren() 
'jeweiligen Artikelbezeichnungen aus zweiter Spalte
'werden alle Nummerncodes aus erster Spalte zusortiert.
'neue Tabelle wird als csv-file gespeichert

sepa = ";" 'dieser Separator steht zwischen den codes
dateiname = ActiveWorkbook.FullName & "_transponiert.csv"
Dim daten$() 'dynamisches Array
ReDim daten$(100, 1)
r = 0 'reihe in vorhandener Tabelle
nr = 0 'neue reihe in transponierter Tabelle
Text = ""
With Worksheets(1)
Do
r = r + 1
If .Cells(r, 2).Value = Text Then
daten$(nr, 1) = daten$(nr, 1) & sepa & .Cells(r, 1).Value
Else
nr = nr + 1
Text = .Cells(r, 2).Value
daten$(nr, 0) = Text
daten$(nr, 1) = .Cells(r, 1).Value
End If
If nr = UBound(daten$) Then 'Zahl der Artikelbez erreicht Arraymax
ReDim Preserve daten$(nr + 100, 1) 'also Dimension erhöhen
End If
Loop Until IsEmpty(.Cells(r + 1, 2)) 'bis nächstes (Artikel-)Datenfeld leer
End With

antwort = MsgBox("Diese Tabelle hat " & r & " Reihen." & vbCr & "Die transponierte Tabelle hat " _
& nr & " Reihen." & vbCr & "Soll das csv-File im 'Excel-typischen' Format gespeichert werden?", 3)
If antwort = vbCancel Then
antwort = MsgBox("Die transponierte Tabelle wurde NICHT gespeichert!")
Else
Dateinummer = FreeFile
Open dateiname For Output As #Dateinummer
For i = 1 To nr
If antwort = vbNo Then 'normale csv
Write #Dateinummer, daten$(i, 0), daten$(i, 1)
Else 'spezielle csv = lässt sich direkt mit Excel öffnen
Print #Dateinummer, daten$(i, 0) & ";";
Write #Dateinummer, daten$(i, 1)
End If
Next i
Close #Dateinummer
antwort = MsgBox("Die transponierte Tabelle wurde als csv-File ins selbe Verzeichnis gespeichert.")
End If
End Sub



als Antwort auf: [#338463]

Excel: Zeilen in ein Feld transponieren möglich?

rohrfrei
Beiträge gesamt: 4492

12. Mär 2008, 22:17
Beitrag # 8 von 16
Beitrag ID: #341369
Bewertung:
(15558 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

sorry, das ich das erst jetzt beantworte, aber es ging einfach nicht früher.

Dummfrag: könntest du bitte nochmal eine VB-Script-Anleitung für Dummies dazuposten? Wo und wie füge ich das in Excel ein? Muß ich da dann irgendwelche Variablen auf meine Datei anpassen, z.B. Spaltennamen oder so?

Sorry, bräuchte an dieser Stelle echt ne Idiotenanleitung.

Gruß


als Antwort auf: [#339626]

Excel: Zeilen in ein Feld transponieren möglich?

Henry
Beiträge gesamt: 966

14. Mär 2008, 13:44
Beitrag # 9 von 16
Beitrag ID: #341707
Bewertung:
(15513 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
script = "Makro"
s. Excel Hilfe -> "Makro mit VB-Editor erstellen" (o.ä.)

o.g. Makro bearbeitet das 1.Arbeitsblatt und dort die Spalten 1+2

Gruß,Henry


als Antwort auf: [#341369]

Excel: Zeilen in ein Feld transponieren möglich?

rohrfrei
Beiträge gesamt: 4492

17. Mär 2008, 07:59
Beitrag # 10 von 16
Beitrag ID: #341873
Bewertung:
(15454 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
danke, das habe ich geschafft.
Also meinen höchsten Respekt. Vor so etwas ziehe ich mal meinen Hut. Das funktioniert recht gut, anhand des Beispiels, was ich im screenshot gepostet habe.

So weit ich festgestellt habe, werden "nur" Beiträge erfasst, die direkt untereinander stehen. Wenn später nochmal die Birnen kommen, dann werden die als separater Eintrag gehandelt. Das nur als Anmerkung nicht als Kritik. Das ist ja schon echt super so und auf jeden Fall besser als manuell.

Das Trennzeichen konnte ich identifizieren mit Hilfe des Anmerkungstextes.
Aber welche Parameter müsste man denn modifizieren, wenn man andere Spalten berücksichtigen möchte?

Gruß


als Antwort auf: [#341707]

Excel: Zeilen in ein Feld transponieren möglich?

Henry
Beiträge gesamt: 966

1. Apr 2008, 14:45
Beitrag # 11 von 16
Beitrag ID: #344059
Bewertung:
(15178 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Wenn später nochmal die Birnen kommen,...

Eigentlich sollte sowas ja in einer sauberen Datenbank nicht passieren??!
Falls doch, kannst du einfach in Excel nach der Artikelspalte neu sortieren!?

> wenn man andere Spalten berücksichtigen möchte?

Ich habe die beiden Spalten als Variablen rausgezogen:
Code
Sub Artikeltabelle_transponieren() 
'jeweiligen Artikelbezeichnungen aus zweiter Spalte
'werden alle Nummerncodes aus erster Spalte zusortiert.
'neue Tabelle wird als csv-file gespeichert

sp_artikel = 2 'Artikel in dieser Spalte
sp_code = 1 'codes in dieser Spalte
sepa = ";" 'dieser Separator steht zwischen den codes
dateiname = ActiveWorkbook.FullName & "_transponiert.csv"
ReDim daten$(100, 1) 'dynamisches Array
r = 0 'reihe in vorhandener Tabelle
nr = 0 'neue reihe in transponierter Tabelle
Text = ""
With Worksheets(1)
Do
r = r + 1
If .Cells(r, sp_artikel).Value = Text Then
daten$(nr, 1) = daten$(nr, 1) & sepa & .Cells(r, 1).Value
Else
nr = nr + 1
Text = .Cells(r, sp_artikel).Value
daten$(nr, 0) = Text
daten$(nr, 1) = .Cells(r, sp_code).Value
End If
If nr = UBound(daten$) Then 'Zahl der Artikelbez erreicht Arraymax
ReDim Preserve daten$(nr + 100, 1) 'also Dimension erhöhen
End If
Loop Until IsEmpty(.Cells(r + 1, sp_artikel)) 'bis nächstes (Artikel-)Datenfeld leer
End With

antwort = MsgBox("Diese Tabelle hat " & r & " Reihen." & vbCr & "Die transponierte Tabelle hat " _
& nr & " Reihen." & vbCr & "Soll das csv-File im 'Excel-typischen' Format gespeichert werden?", 3)
If antwort = vbCancel Then
antwort = MsgBox("Die transponierte Tabelle wurde NICHT gespeichert!")
Else
Dateinummer = FreeFile
Open dateiname For Output As #Dateinummer
For i = 1 To nr
If antwort = vbNo Then 'normale csv
Write #Dateinummer, daten$(i, 0), daten$(i, 1)
Else 'spezielle csv lässt sich direkt mit Excel öffnen
Print #Dateinummer, daten$(i, 0) & ";";
Write #Dateinummer, daten$(i, 1)
End If
Next i
Close #Dateinummer
antwort = MsgBox("Die transponierte Tabelle wurde als csv-File ins selbe Verzeichnis gespeichert.")
End If
End Sub



als Antwort auf: [#341873]

Excel: Zeilen in ein Feld transponieren möglich?

rohrfrei
Beiträge gesamt: 4492

1. Apr 2008, 22:03
Beitrag # 12 von 16
Beitrag ID: #344132
Bewertung:
(15145 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Zitat Eigentlich sollte sowas ja in einer sauberen Datenbank nicht passieren??!
Falls doch, kannst du einfach in Excel nach der Artikelspalte neu sortieren!?

klar, ist nicht spielentscheidend und sollte natürlich aus der Datenbank per default nicht passieren, es sei denn da hantiert noch jemand nachträglich rum - darauf habe ich leider keinen Einfluß. Aber dann könnte man sich immer noch in Excel selbst behelfen.

Zitat Ich habe die beiden Spalten als Variablen rausgezogen:

Danke, daß Du Dir nochmal die Zeit genommen hast, das zu überarbeiten. Aber kann es sein, daß das nur für die jeweils erste Zeile des Datensatzes funktioniert?

Als Anlage nochmal zwei screenshots:
1. Habe die beiden betreffenden Spalten einfach eine nach rechts geschoben, in dem ich ganz vorne eine Platzhalterspalte zum Testen eingefügt habe. Im Hintergrund sieht man das VBA-Script, welches ich in den beiden ersten Zeilen angepasst habe. Wäre das so überhaupt korrekt?
2. Dann ein screenshot des Ergebnisses in der csv-Datei. Man sieht, daß es mit dem ersten Eintrag eines jeden Artikels funktioniert, aber dann verwendet das Script die Einträge aus der ersten Spalte, was ja eigentlich nur ein Platzhalter ist.

Mache ich einen Denk- bzw. Anwendungsfehler oder könntest da das bitte nochmal prüfen? Wäre Dir echt dankbar.

Gruß


als Antwort auf: [#344059]
Anhang:
VBA_01.gif (171 KB)   VBA_02-result.gif (90.0 KB)

Excel: Zeilen in ein Feld transponieren möglich?

Henry
Beiträge gesamt: 966

2. Apr 2008, 12:17
Beitrag # 13 von 16
Beitrag ID: #344225
Bewertung:
(15080 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jepp, hab vergessen eine Konstante zu ersetzen (scheinbar erfordert Programmieren mehr Sorgfalt als Layouten ;-)
So sollte es klappen:
Code
Sub Artikeltabelle_transponieren() 
'jeweiligen Artikelbezeichnungen aus zweiter Spalte
'werden alle Nummerncodes aus erster Spalte zusortiert.
'neue Tabelle wird als csv-file gespeichert

sp_artikel = 2 'Artikel in dieser Spalte
sp_code = 1 'codes in dieser Spalte
sepa = ";" 'dieser Separator steht zwischen den codes
dateiname = ActiveWorkbook.FullName & "_transponiert.csv"
ReDim daten$(100, 1) 'dynamisches Array
r = 0 'reihe in vorhandener Tabelle
nr = 0 'neue reihe in transponierter Tabelle
Text = ""
With Worksheets(1)
Do
r = r + 1
If .Cells(r, sp_artikel).Value = Text Then
daten$(nr, 1) = daten$(nr, 1) & sepa & .Cells(r, sp_code).Value
Else
nr = nr + 1
Text = .Cells(r, sp_artikel).Value
daten$(nr, 0) = Text
daten$(nr, 1) = .Cells(r, sp_code).Value
End If
If nr = UBound(daten$) Then 'Zahl der Artikelbez erreicht Arraymax
ReDim Preserve daten$(nr + 100, 1) 'also Dimension erhöhen
End If
Loop Until IsEmpty(.Cells(r + 1, sp_artikel)) 'bis nächstes (Artikel-)Datenfeld leer
End With

antwort = MsgBox("Diese Tabelle hat " & r & " Reihen." & vbCr & "Die transponierte Tabelle hat " _
& nr & " Reihen." & vbCr & "Soll das csv-File im 'Excel-typischen' Format gespeichert werden?", 3)
If antwort = vbCancel Then
antwort = MsgBox("Die transponierte Tabelle wurde NICHT gespeichert!")
Else
Dateinummer = FreeFile
Open dateiname For Output As #Dateinummer
For i = 1 To nr
If antwort = vbNo Then 'normale csv
Write #Dateinummer, daten$(i, 0), daten$(i, 1)
Else 'spezielle csv lässt sich direkt mit Excel öffnen
Print #Dateinummer, daten$(i, 0) & ";";
Write #Dateinummer, daten$(i, 1)
End If
Next i
Close #Dateinummer
antwort = MsgBox("Die transponierte Tabelle wurde als csv-File ins selbe Verzeichnis gespeichert.")
End If
End Sub



als Antwort auf: [#344132]

Excel: Zeilen in ein Feld transponieren möglich?

rohrfrei
Beiträge gesamt: 4492

7. Apr 2008, 22:43
Beitrag # 14 von 16
Beitrag ID: #345143
Bewertung:
(14910 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Henry,

danke für die Überarbeitung des Scripts. Jetzt funzt es so, wie es sein soll, prima. Bedankt. Wenn ich darf, würde ich jetzt gerne den Schwierigkeitsgrad noch etwas anheben ;-)

Also das klappt wie bereits erwähnt schon sehr gut. Allerdings werden mit dem Script gegenwärtig tatsächlich "nur" die relevanten Spalten berücksichtigt und in eine neue Datei geschrieben. Man extrahiert also praktisch zwei Spalten aus der Ursprungstabelle. Dabei geht dann leider die Zuordnung zu den bisherigen Daten verloren. Momentan behelfe ich mir so, daß ich die wieder manuell in die Tabelle integriere und so den übrigen Daten zuordne. Evtl. kann man das ja auch noch weiter automatisieren ;-)

Mal wieder am Besten anhand des beigefügten screenshots erklärt:
Ich nehme mal wieder die Beispieldatei mit dem Obst. Bisher haben wir da ja nur die beiden Spalten "Code" und "Artikel" betrachtet. Aus meiner Tabelle, die ich aus der Datenbank angeliefert bekomme, sind aber noch zahlreiche andere Spalten enthalten. Ich habe da mal beispielhaft die Spalten "Importeur" und "Schadcode" hinzugefügt. Es sind aber in der Praxis tatsächlich noch mehr Spalten, bis zum Buchstaben AB - müssten also dann insges. 28 Spalten sein, wenn ich richtig gezählt habe.

Der Gag ist nun, daß praktisch alle Spalten für einen Artikel komplett identisch sind, eben bis auf den Code, nach dem transponiert werden muß. Frag lieber nicht was das für einen Sinn macht oder warum das so ist. Ich kann es halt auch nicht ändern, aber das ist so korrekt.

Nun wäre es also super, wenn das Script die restlichen Spalten nicht einfach ignorieren würde, sondern wenn die mit in die csv-Datei geschrieben würden. Dann bräuchte ich die nicht mehr manuell nachträglich zuordnen. Und da alle Einträge eines Artikels identisch sind, könnte man sich die Einträge aus der jeweils ersten Zeile eines Artikels herauspicken und mit in die csv-Datei schreiben - wenn das technisch möglich ist.

Ist das verständlich? Ist das lösbar per Script? Mein ewiger Dank sei Dir sicher.

Gruß

P.S.:
Wenn du dich an die Programmierung wagst, mußt du dann die exakte Position der Spalten "Artikel" und "Code" wissen oder kann das an beliebiger Stelle stehen und man passt das innerhalb des Scriptes an, so wie bisher auch? Das müsste ich sonst evtl. erst noch klären. Muß ja nicht alles doppelt gemacht werden.


als Antwort auf: [#344225]
Anhang:
obst1.gif (56.5 KB)

Excel: Zeilen in ein Feld transponieren möglich?

Henry
Beiträge gesamt: 966

25. Apr 2008, 15:58
Beitrag # 15 von 16
Beitrag ID: #348063
Bewertung:
(14527 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,
in DEM Falle (Daten sollen zu 100% erhalten bleiben, nur die ganzen überflüssigen Dubletten sollen raus) spare ich mir den CSV-Export und manipuliere das Excel-Arbeitsblatt direkt:
Code
Sub codes_in_je_eine_artikelreihe_transponieren() 
'alle Nummerncodes EIN-UND-DESSELBEN Artikels werden
'in EINE Zelle geschrieben und überflüssige Reihen gelöscht,
'transponierte Tabelle wird unter neuem Namen gespeichert

sepa = ";" 'dieser Separator steht zwischen den codes
sp_artikel = 3 'Artikelbez. in dieser Spalte
sp_code = 2 'codes in dieser Spalte
r = 1 'reihe
Text = ""
With Worksheets(1)
Do
If .Cells(r, sp_artikel).Value = Text Then
.Cells(r - 1, sp_code).Value = .Cells(r - 1, sp_code).Value & sepa & .Cells(r, sp_code).Value
.Rows(r).Delete
Else
Text = .Cells(r, sp_artikel).Value
r = r + 1
End If
Loop Until IsEmpty(.Cells(r, sp_artikel)) 'bis nächstes (Artikel-)Datenfeld leer
End With
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName & "_transponiert.xls"
End Sub



als Antwort auf: [#345143]
X