HERBERS Excel-Forum - das Archiv

Thema: Inhalte mehrere Zellen | Herbers Excel-Forum

Inhalte mehrere Zellen
christian

Hallo !
Ich möchte Inhalte aus mehreren Zellen in einer Zelle zusammenfassen aber Dopplungen vermeiden.
Das Ganze sollte wie folgt aussehen:
In A1 soll alles was in A2 , A3, A4, A5 steht zusammengefasst werden. Die Inhalte in den Zellen A2-A5 sind durch ein Semikolon getrennt.
In A2 steht z.b.: SU EN NA 41; SU EN NA 42; SI EN 5;
In A3 steht z.B.: SU EN NA 41; SU EN NA 42; SI EN 7;
In A4 steht z.B.: SI EN 7; SI EN 5; GN EN 56;
Jetzt sollte in A1 nur folgendes stehen : SU EN NA 41; SU EN NA 42; SI EN 5; SI EN 7; GN EN 56;
(hinter dem letzte Wert auch ein Semikolon)
Mit =a2&a3&a4 alleine klappt das nicht ...
Wer weiß Rat ?
Viele Grüße
Christian

Werte ohne Redundanzen - VBA-Lösung
NoNet

Hallo Christian,
nur per Formeln/Funktionen lässt sich das nicht 100%ig lösen (an alle Kritiker : Iteration halte ich hier für zu unsicher !), aber per VBA ist das kein Problem. kopiere das folgende Makro in ein allgemeines Modul (z.B. "Modul1") im VBA-Editor :
Sub WerteOhneRedundanzen() Dim lngZ As Long, rngZelle As Range, strWerte For Each rngZelle In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row) strWerte = Split(rngZelle.Value, ";") For lngZ = LBound(strWerte) To UBound(strWerte) If InStr([A1], Trim(strWerte(lngZ) & ";")) = 0 Then [A1] = [A1] & Trim(strWerte(lngZ)) & "; " End If Next Next End Sub Gruß, NoNet
AW: Inhalte mehrere Zellen
IngGi

Hallo Christian,
NoNet war schneller, ich stell meine Lösung aber trotzdem noch hier rein, da ich das Ganze als benutzerdefinierte Funktion konzipiert habe, so dass du per Formel darauf zugreifen kannst. Kopiere den VBA-Code in ein allgemeines Modul. Dazu gehst du mit Alt+F11 in den VBA-Editor und fügst über Einfügen | Modul ein neues Modul ein.
 A
1 SU EN NA 41; SU EN NA 42; SI EN 5; SI EN 7; GN EN 56;
2 SU EN NA 41; SU EN NA 42; SI EN 5;
3 SU EN NA 41; SU EN NA 42; SI EN 7;
4 SI EN 7; SI EN 5; GN EN 56;

Formeln der Tabelle
ZelleFormel
A1=aggregat(A2:A4)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Private Function Aggregat(rngBereich As Range) As String

Dim rng As Range
Dim strAusgabe As String
Dim vntArr As Variant
Dim intElement As Integer

For Each rng In rngBereich
  vntArr = Split(rng, ";")
  Redim Preserve vntArr(Ubound(vntArr) - 1)
  For intElement = 0 To Ubound(vntArr)
    If InStr(1, strAusgabe, vntArr(intElement)) = 0 Then
      If Left(vntArr(intElement), 1) <> " " Then
        strAusgabe = strAusgabe & " "
      End If
      strAusgabe = strAusgabe & vntArr(intElement) & ";"
    End If
  Next 'intElement 
  
Next 'rng 

Aggregat = strAusgabe

End Function
Code eingefügt mit VBA in HTML 2.0.0.3
Gruß Ingolf
AW: Inhalte mehrere Zellen
christian

Hallo Ingolf, NoNet
DANKE ! Klappt super !
Viele Grüße
Christian