Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
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

VBA Mehrere Zellen in eine Zelle übertr.

VBA Mehrere Zellen in eine Zelle übertr.
17.10.2021 16:41:37
Angela
Hallo zusammen,
in der folgenden Tabelle https://www.herber.de/bbs/user/148656.xlsm habe ich die Ausgangssituation und das Ergbnis dargestellt. Da die Anzahl der Positionen in Spalte A variiren kann, wollte ich dieses Problem mit VBA lösen und schaffe es nicht.
Texte, die hinter einer Zelle stehen in der das gleiche steht, sollen in einer anderen Tabelle in einer Zelle hintereinandergeschrieben werden.
Hat jemand hierzu eine Lösung?
Gruß
Angela

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Mehrere Zellen in eine Zelle übertr.
17.10.2021 17:59:36
Nepumuk
Hallo Angela,
teste mal:

Option Explicit
Public Sub TextJoin()
Dim lngRow As Long
Dim vntItem As Variant
Dim objDictionary As Object
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
With objDictionary
For lngRow = 13 To Cells(Rows.Count, 1).End(xlUp).Row
If .Exists(Key:=Cells(lngRow, 1).Text) Then
.Item(Key:=Cells(lngRow, 1).Text) = .Item(Key:=Cells(lngRow, 1).Text) & " " & Cells(lngRow, 2).Text
Else
Call .Add(Key:=Cells(lngRow, 1).Text, Item:=Cells(lngRow, 2).Text)
End If
Next
lngRow = 13
For Each vntItem In .Keys
Cells(lngRow, 4).Value = vntItem
Cells(lngRow, 5).Value = .Item(Key:=vntItem)
lngRow = lngRow + 1
Next
End With
Set objDictionary = Nothing
End Sub
Gruß
Nepumuk
Anzeige
AW: VBA Mehrere Zellen in eine Zelle übertr.
17.10.2021 21:06:01
Angela
Hallo Nepumuk,
vielen Dank für die schnelle Antwort. Ich habe es jetzt einmal getestet, habe es auch im Lokalfenster verfolgt, aber irgendwie kommt nicht das gewünschte Ergebnis, bzw. in der Exceltabelle funktioniert nichts. Ich habe jetzt unter Tabelle 2 einmal die Ausgangssituation hineinkopiert und das Makro gestartet, aber eine Ergebnistabelle so wie in Tabelle 1 habe ich nicht. Stehe aber auch noch ziemlich am Anfang mit der VBA Programmierung und mache vielleicht auch etwas falsch.
Hier einmal nur zu Info, wie ich es versucht hatte zu programmieren, was nicht funktioniert, zumindest dann nicht mehr bei der 2. Variation in Tabelle 1.
Mein Code:

Sub SeiteHZ()
Dim i As Long
Worksheets("Tabelle2").Activate
Range("A2").Select
For i = 1 To 7
If ActiveCell.Value = "" And ActiveCell.Offset(-1, 0) = "" Then
ActiveCell.Offset(-2, 1).Value = ActiveCell.Offset(-2, 1).Value & " " & ActiveCell.Offset(0, 1).Value
ElseIf ActiveCell.Value  "" Then
ActiveCell.Offset(0, 0).Value = ActiveCell.Offset(0, 0)
Else
ActiveCell.Offset(-1, 1).Value = ActiveCell.Offset(-1, 1).Value & " " & ActiveCell.Offset(0, 1).Value
End If
ActiveCell.Offset(1, 0).Select
Next i
End Sub
Und hier nochmal der Link:
https://www.herber.de/bbs/user/148658.xlsm
Vielen Dank!
Angela
Anzeige
AW: VBA Mehrere Zellen in eine Zelle übertr.
17.10.2021 21:22:43
ralf_b
damit dein Beispiel in Tabelle 2 funktioniert solltest du lngRow = 1 setzen. der Bereich dort beginnt nicht ab Zeile 13
AW: VBA Mehrere Zellen in eine Zelle übertr.
17.10.2021 22:28:21
Angela
Hallo ralf_b,
ah, stimmt. Jetzt passiert auch was, liefert leider auch nicht das gewünschte Ergebnis...
https://www.herber.de/bbs/user/148659.xlsm
Trotzdem danke und Gruß
Angela
AW: VBA Mehrere Zellen in eine Zelle übertr.
18.10.2021 07:14:20
ralf_b
der jetzige Stand, entspricht nicht der ursprünglichen Vorgabe. Aber das weist du ja selbst. Nepumuk's Lösung ist nicht für eine lückenhafte Wertespalte geschrieben.
versuchs mal damit.

Public Sub TextJoin()
Dim lngRow As Long
Dim vntItem As Variant
Dim objDictionary As Object
Dim lmerken As Long
Dim bstop As Boolean
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
With objDictionary
For lngRow = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(lngRow, 1).Text = "" Then
If bstop = False Then bstop = True: lmerken = lngRow - 1
Else
bstop = False
lmerken = lngRow
End If
If .Exists(Key:=Cells(lmerken, 1).Text) Then
.Item(Key:=Cells(lmerken, 1).Text) = .Item(Key:=Cells(lmerken, 1).Text) & " " & Cells(lngRow, 2).Text
Else
Call .Add(Key:=Cells(lmerken, 1).Text, Item:=Cells(lngRow, 2).Text)
End If
Next
lngRow = 1
For Each vntItem In .Keys
Cells(lngRow, 4).Value = vntItem
Cells(lngRow, 5).Value = .Item(Key:=vntItem)
lngRow = lngRow + 1
Next
End With
Set objDictionary = Nothing
End Sub

Anzeige
AW: VBA Mehrere Zellen in eine Zelle übertr.
18.10.2021 08:14:11
Angela
Hallo ralf_b, hallo Nepumuk,
ja sorry, bin in den Vorgaben etwas gesprungen, weil ich mich mit dem Thema schon was länger beschäftige und verschiedene Varianten ausprobiert hatte.
Es funktioniert mit Deinem Code ralf_b und wenn ich die Spalte A mit den Positionen auffülle, natürlich auch mit Deinem Code Nepumuk.
Ich danke euch sehr, ihr habt meinen Tag gerettet :-)
Gruß
Angela

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige