Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehrere Datenreihen untereinander

Mehrere Datenreihen untereinander
09.03.2019 16:06:29
Nik
Hallo zusammen,
Ich habe ein Problem und hoffe das mir einer von euch weiterhelfen kann.
Ich habe in Spalte A B und C Werte untereinander stehen. Die Anzahl wie viele untereinander stehen ist variabel.
Jetzt brauche ich diese Werte dieser drei Spalten in Spalte D untereinander und auch nur einmal vorkommend. Leider habe ich keine Ahnung wie ich das umsetze.
Vielen Dank an alle schon mal im Vorhinein :)
MfG
Nik
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Datenreihen untereinander
09.03.2019 18:03:56
Sepp
Hallo Nik,
Modul Modul1
Option Explicit 
 
Enum SORT_ORDER 
  Sort_Unsorted = 0 
  Sort_Ascending = 1 
  Sort_Descending = -1 
End Enum 
 
Sub oneColumn() 
Dim varIn As Variant, varOut As Variant, lngLast As Long 
 
With Sheets("Tabelle1") 'Tabellenname anpassen! 
  lngLast = lastCell("A:C") 
  varIn = .Range("A1:C" & CStr(lngLast)) 
  varOut = toArrayUnique(varIn, Sort_Unsorted) 
  .Range("D1").Resize(Ubound(varOut, 1), 1) = Application.Transpose(varOut) 
End With 
End Sub 
 
Private Function toArrayUnique(ByRef Field As Variant, Optional SortOrder As SORT_ORDER = Sort_Ascending) As Variant 
  Dim objArrayList As Object, varItem As Variant 
  Dim lngR As Long, lngC As Long 
 
  On Error GoTo ErrExit 
 
  Set objArrayList = CreateObject("System.Collections.Arraylist") 
 
  With objArrayList 
    For lngR = Lbound(Field, 1) To Ubound(Field, 1) 
      For lngC = Lbound(Field, 2) To Ubound(Field, 2) 
        varItem = Trim(Field(lngR, lngC)) 
        If Len(varItem) And Not .Contains(varItem) Then .Add varItem 
      Next 
    Next 
    If SortOrder <> Sort_Unsorted Then .Sort 
    If SortOrder < Sort_Unsorted Then .Reverse 
    toArrayUnique = .toArray 
  End With 
 
  Exit Function 
ErrExit: 
  toArrayUnique = -1 
End Function 
 
Private Function lastCell(ByVal RangeAddress As String, Optional ByVal lastRow As Boolean = True) As Long 
  Dim varLast As Variant 
 
  If lastRow Then 
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",ROW(" & RangeAddress & ")))") 
  Else 
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",COLUMN(" & RangeAddress & ")))") 
  End If 
 
  If IsError(varLast) Then 
    lastCell = -1 
  Else 
    lastCell = varLast 
  End If 
End Function 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Mehrere Datenreihen untereinander
09.03.2019 18:55:06
Nik
Hallo Sepp!
Danke für deine Hilfe. Werde den Code morgen sofort austesten!
MfG
Nik
kleine Korrektur!
09.03.2019 18:14:17
Sepp
Hallo nochmal.
Modul Modul1
Option Explicit 
 
Enum SORT_ORDER 
  Sort_Unsorted = 0 
  Sort_Ascending = 1 
  Sort_Descending = -1 
End Enum 
 
Sub oneColumn() 
  Dim varIn As Variant, varOut As Variant, lngLast As Long 
 
  With Sheets("Tabelle1") 'Tabellenname anpassen! 
    lngLast = lastCell("A:C") 
    varIn = .Range("A1:C" & CStr(lngLast)) 
    varOut = Application.Transpose(toArrayUnique(varIn, Sort_Ascending)) 
    .Range("D:D") = "" 
    .Range("D1").Resize(Ubound(varOut, 1), 1) = varOut 
  End With 
End Sub 
 
Private Function toArrayUnique(ByRef Field As Variant, Optional SortOrder As SORT_ORDER = Sort_Ascending) As Variant 
  Dim objArrayList As Object, varItem As Variant 
  Dim lngR As Long, lngC As Long 
 
  On Error GoTo ErrExit 
 
  Set objArrayList = CreateObject("System.Collections.Arraylist") 
 
  With objArrayList 
    For lngR = Lbound(Field, 1) To Ubound(Field, 1) 
      For lngC = Lbound(Field, 2) To Ubound(Field, 2) 
        varItem = Trim(Field(lngR, lngC)) 
        If Len(varItem) And Not .Contains(varItem) Then .Add varItem 
      Next 
    Next 
    If SortOrder <> Sort_Unsorted Then .Sort 
    If SortOrder < Sort_Unsorted Then .Reverse 
    toArrayUnique = .toArray 
  End With 
 
  Exit Function 
ErrExit: 
  toArrayUnique = -1 
End Function 
 
Private Function lastCell(ByVal RangeAddress As String, Optional ByVal lastRow As Boolean = True) As Long 
  Dim varLast As Variant 
 
  If lastRow Then 
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",ROW(" & RangeAddress & ")))") 
  Else 
    varLast = Evaluate("MAX(IF(" & RangeAddress & "<>"""",COLUMN(" & RangeAddress & ")))") 
  End If 
 
  If IsError(varLast) Then 
    lastCell = -1 
  Else 
    lastCell = varLast 
  End If 
End Function 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Mehrere Datenreihen untereinander
09.03.2019 23:40:16
Günther
Moin,
nichts gegen VBA ...
Ich mache so etwas inzwischen mit "ohne VBA, ohne Formeln" -> Power Query.
Gruß
Günther
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige