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

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige