alexiot
Goto Top

Excel - Spaltenabschnitte in einzelne Zellen fügen - vba

Hallo zusammen,

zunächst erkläre ich Ihnen den Aufbau meiner Tabelle:

Im Tabellenblatt1:
A1 Servername.............B Serverowner
A2 Servername1............B2
A3 Servername2............B3
A4 Servername3.............B4
A5 ....


Im Tabellenblatt2:
SpalteA........................Spalte B
Servername1...............Owner zu Server1
Servername1´..............Owner zu Server1
Servername1...............Owner zu Server1
Servername1´..............Owner zu Server1
Servername1...............Owner zu Server1
Servername1´..............Owner zu Server1
Servername1...............Owner zu Server1
Servername1´..............Owner zu Server1
LeereZelle...................Leere Zelle
Servername2..............Owner zu Server2
Servername2..............Owner zu Server2
Leere Zelle.................Leere Zelle
Servername3..............Owner zu Server3
Servername3..............Owner zu Server3
Servername3..............Owner zu Server3


Hintergrundwissen:
Jeder Server besitzt verschiedenviele Serverowner!


Frage: Ich hätte gerne per vba, das alle Serverowner aus Tabellenblatt2 vom Servername1 in die Zelle B2 in Tabellenblatt1 eingefügt werden,
genauso mit den Serverownern 2, 3 usw....
Ansatz: Den Job hätte ich mir so vorgestellt, das er sagt: Ich beginne in Tabellenblatt2 kopiere alles in Spalte B bis eine Leere-Zelle kommt & füge dies dann in Zelle B2 in Tabellenblatt1,
dann gehe ich weiter und kopiere von der Leeren-Zelle bis zur nächsten Leeren-Zelle alles in die Zelle B3 in Tabellenblatt1.

Danke für eure Hilfe!!

Content-Key: 266510

Url: https://administrator.de/contentid/266510

Printed on: April 19, 2024 at 17:04 o'clock

Mitglied: 114757
Solution 114757 Mar 17, 2015, updated at Jul 30, 2015 at 14:04:08 (UTC)
Goto Top
Hallo AlexIOT,
genau das gewünschte gabs hier schon mal (inkl. Code)
Excel Zeilen in eine Zeile anzeigen

Gruß jodel
Member: AlexIOT
AlexIOT Mar 17, 2015 at 09:24:07 (UTC)
Goto Top
Vielen Dank Jodel32!

Mithilfe der Vorlage aus der Antwort konnte ich meine persönliche Lösung bilden:

Sub MergeDuplicates1()

i = 1
Do While i < 200
Dim ws As Worksheet, rngStart As Range, rngEnd As Range, rngCurrent As Range
' Erstes Tabellenblatt referenzieren
Set ws = Worksheets(3)
'Startzelle der Daten festlegen
Set rngStart = ws.Cells(i, "A")
' Zelllendbereich ermitteln
Set rngEnd = rngStart.End(xlDown).Offset(0, 1)

' Bereich zuerst nach Nummern sortieren
ws.Range(rngStart, rngEnd).Sort ws.Cells(i, "B")

'So lange zusammenfassen bis auf eine Zelle keinen Inhalt hat
Set rngCurrent = rngStart
While rngCurrent.Value <> ""
If rngCurrent.Value = rngCurrent.Offset(1, 0).Value Then
rngCurrent.Offset(0, 1).Value = rngCurrent.Offset(0, 1).Value & ", " & rngCurrent.Offset(1, 1).Text
rngCurrent.Offset(1, 0).EntireRow.Delete
Else
Set rngCurrent = rngCurrent.Offset(1, 0)
rngCurrent.EntireRow.Delete
GoTo Raus
End If
Wend
Raus:
i = i + 1
Loop


End Sub
Member: colinardo
Solution colinardo Mar 17, 2015, updated at Jul 30, 2015 at 14:04:12 (UTC)
Goto Top
Hallo AlexIOT, Willkommen auf Administrator.de!
Und hier für deinen Fall mit zwei Sheets noch eine etwas passendere Variante als Ergänzung:
Sub MergeCells()
    Dim ws1 As Worksheet, ws2 As Worksheet, cell As Range, c As Range, rngSearch As Range
    Set ws1 = Sheets(1)
    Set ws2 = Sheets(2)
    Set rngSearch = ws2.Range("A:A")  
    With ws1
        For Each cell In .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)  
            If cell.Value <> "" Then  
                Set c = rngSearch.Find(cell.Value, LookIn:=xlValues, Lookat:=xlWhole)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                        If cell.Offset(0, 1).Value <> "" Then  
                            cell.Offset(0, 1).Value = cell.Offset(0, 1).Value & ", " & c.Offset(0, 1).Value  
                        Else
                            cell.Offset(0, 1).Value = c.Offset(0, 1).Value
                        End If
                        Set c = rngSearch.FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> firstAddress
                End If
            End If
        Next
    End With
End Sub
Grüße Uwe

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.
Member: AlexIOT
AlexIOT Mar 18, 2015 at 12:12:02 (UTC)
Goto Top
Auch für deinen Lösungsvorschlag ein großes Dankeschön Uwe.

MFG - Alex