Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mehrere Werte in einer Zelle (mit Zeilenumbruch) untereinander ausgeben
#11
Moin

Mit Power Query sind es nur ein paar Schritte.
Code:
let
    Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Spalte1", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Spalte1"),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Spalte1", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Spalte1.1", "Spalte1.2"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Spalte1.1", type text}, {"Spalte1.2", Int64.Type}})
in
    #"Changed Type1"
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • YungKafa
Antworten Top
#12
In VBA nur 1:


Code:
Sub M_snb()
   sn = Split(Join(Application.Transpose(Cells(4, 1).CurrentRegion), vbLf), vbLf)
   ReDim sp(UBound(sn), 1)
   
   For j = 0 To UBound(sn)
      st = Split(sn(j), ":")
      sp(j, 0) = st(0)
      sp(j, 1) = st(1)
   Next
   
   Cells(30, 1).Resize(UBound(sp) + 1, 2) = sp
End Sub

Oder:

Code:
Sub M_snb()
   sn = Split(Join(Application.Transpose(Cells(4, 1).CurrentRegion), vbLf), vbLf)
   Cells(30, 1).Resize(UBound(sn) + 1) = Application.Transpose(sn)
   Cells(30, 1).CurrentRegion.TextToColumns , , , , 0, 0, 0, 0, -1, ":"
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • YungKafa
Antworten Top
#13
Hallo YungKafa,

hier mein VBA-Vorschlag mit eingebautem Schritt 2:
Sub TransponierenSpezial_V2()
 Dim rngB As Range
 Dim varQ As Variant, varZ As Variant
 Dim varTs As Variant, varTz As Variant
 Dim i As Long, j As Long
 
 Set rngB = Worksheets("Tabelle1").Range("A4") 'Zelle mit dem ersten Datensatz
 
 varQ = Range(rngB, rngB.End(xlDown)).Resize(, 2).Value
 ReDim varZ(1 To 2, 0 To 0)
 For i = 1 To UBound(varQ)
   varTz = Split(varQ(i, 1), Chr(10))
   ReDim Preserve varZ(1 To 2, 1 To UBound(varZ, 2) + UBound(varTz) + 1)
   For j = 0 To UBound(varTz)
     varTs = Split(varTz(j), ":")
     varZ(1, UBound(varZ, 2) - UBound(varTz) + j) = varTs(0)
     If UBound(varTs) = 0 Then
       varZ(2, UBound(varZ, 2) - UBound(varTz) + j) = varQ(i, 2)
     Else
       varZ(2, UBound(varZ, 2) - UBound(varTz) + j) = varTs(1)
     End If
   Next j
 Next i
 rngB.Resize(UBound(varZ, 2), UBound(varZ, 1)).Value = Application.Transpose(varZ)
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • YungKafa
Antworten Top
#14
Hallo Günter,

(26.02.2019, 09:24)WillWissen schrieb: Moin,

deiner Beispieltabelle nach kommt Text in Spalten infrage. Wieso lädtst du nicht eine Beispieltabelle wie ich es in #2 geschrieben habe, hoch???
Wenn du von "sehr vielen Daten bearbeiten" schreibst, dürfte das Beispiel nicht unbedingt hilfreich sein.

es wäre für alle Beteiligten viel entspannter, Du würdest Dich einfach zurückhalten , wenn Du es nicht blickst. Wink

Gruß Uwe
Antworten Top
#15
(26.02.2019, 13:01)snb schrieb: In VBA nur 1...
Hallo, geschrieben hast du definitiv mehr...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#16
(26.02.2019, 13:05)Kuwer schrieb: Hallo YungKafa,

hier mein VBA-Vorschlag mit eingebautem Schritt 2:
Sub TransponierenSpezial_V2()
 Dim rngB As Range
 Dim varQ As Variant, varZ As Variant
 Dim varTs As Variant, varTz As Variant
 Dim i As Long, j As Long
 
 Set rngB = Worksheets("Tabelle1").Range("A4") 'Zelle mit dem ersten Datensatz
 
 varQ = Range(rngB, rngB.End(xlDown)).Resize(, 2).Value
 ReDim varZ(1 To 2, 0 To 0)
 For i = 1 To UBound(varQ)
   varTz = Split(varQ(i, 1), Chr(10))
   ReDim Preserve varZ(1 To 2, 1 To UBound(varZ, 2) + UBound(varTz) + 1)
   For j = 0 To UBound(varTz)
     varTs = Split(varTz(j), ":")
     varZ(1, UBound(varZ, 2) - UBound(varTz) + j) = varTs(0)
     If UBound(varTs) = 0 Then
       varZ(2, UBound(varZ, 2) - UBound(varTz) + j) = varQ(i, 2)
     Else
       varZ(2, UBound(varZ, 2) - UBound(varTz) + j) = varTs(1)
     End If
   Next j
 Next i
 rngB.Resize(UBound(varZ, 2), UBound(varZ, 1)).Value = Application.Transpose(varZ)
End Sub
Gruß Uwe

Wahnsinn! Danke für Eure großartige Unterstützung. Ich habe jetzt alle Vorschläge getestet und alle führen zu dem gewünschten Ergebnis. Ich werde es jetzt mit meinen Originaldaten versuchen!
Antworten Top
#17
Dann hat sich deine PN wohl erledigt.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#18
Ich brauche doch nochmal Eure Hilfe.

Die von euch vorgeschlagenen Codes erfüllen definitiv meine Anforderung aus dem ersten Post.

Jedoch enthält meine Tabelle noch weitere Informationen, die - in der Ausgangssituation - nur einmal vorkommen. Wenn die Datensätze aus der Ausgangssituation jetzt getrennt werden, möchte ich, dass diese übrigen Informationen kopiert werden, sodass jeder neue Datensatz, diese Informationen ebenfalls enthält.

Beispielv2 ist im Anhang.

An die VBA Profis: Es wäre nett von Euch, wenn ihr in Euren Codes Kommentare an den Stellen einfügen könntet (hier schon mal danke an Uwe), die ich später anpassen muss, um Euren Code an meine Originaldatei anzupassen. Ich bin leider kompletter Laie und verstehe die Codes nicht.

Danke!


Angehängte Dateien
.xlsx   Beispielv2.xlsx (Größe: 8,33 KB / Downloads: 6)
Antworten Top
#19
Hallo... Detlef's (shift-del) Idee passt auch hier... keine Anpassung nötig...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#20
Hallo YungKafa

Keine Ahnung warum du mir immer PNs schreibt. Dies ist ein öffentliches Forum.

Daten markieren.
STRG-A und OK.
Daten abrufen aus Tabelle.
Ansicht -> Erweiterter Editor.
Den bisherigen Code löschen und meinen Code einfügen.
Code:
let
    Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Spalte1", Splitter.SplitTextByDelimiter("#(lf)", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Spalte1"),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Spalte1", Splitter.SplitTextByDelimiter(":", QuoteStyle.Csv), {"Spalte1.1", "Spalte1.2"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Spalte1.1", type text}, {"Spalte1.2", Int64.Type}, {"Spalte2", type text}, {"Spalte3", type text}, {"Spalte4", type text}})
in
    #"Changed Type2"
Schließen und laden in Tabelle/Bestehendes Arbeitsblatt/$H$10.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • YungKafa
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste