Microsoft Excel

Herbers Excel/VBA-Archiv

Inhalte mehrere Zellen | Herbers Excel-Forum


Betrifft: Inhalte mehrere Zellen von: christian
Geschrieben am: 26.11.2009 17:26:30

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

  

Betrifft: Werte ohne Redundanzen - VBA-Lösung von: NoNet
Geschrieben am: 26.11.2009 17:51:53

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


  

Betrifft: AW: Inhalte mehrere Zellen von: IngGi
Geschrieben am: 26.11.2009 18:08:55

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


  

Betrifft: AW: Inhalte mehrere Zellen von: christian
Geschrieben am: 26.11.2009 19:32:52

Hallo Ingolf, NoNet

DANKE ! Klappt super !

Viele Grüße

Christian


Beiträge aus den Excel-Beispielen zum Thema "Inhalte mehrere Zellen "