Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1448to1452
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

Liste ohne Duplikate aus Matrix,Zuordnung Elemente

Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 09:21:58
PeterPan
Hallo an alle Excel-Experten,
bisher hat mir dieses Forum schon sehr oft weitergeholfen, da ich bisherige Problemstellungen und entsprechende Lösungen hier mindestens in Teilen wiedergefunden habe. Vielen Dank dafür an die vielen Freiwilligen und Experten!
Doch jetzt ist es soweit, ich komme nicht mehr weiter. Ich habe folgende Aufgabenstellung / Herausforderung:
In einer Matrix (Spalte A: Liste aller „Bauteile“ ohne Duplikate; Zeile 1: Liste/Überschriften „Intervalle“ von 1 bis X ohne Duplikate) befinden sich Zellen, die leer sind oder aber mit Text gefüllt („Tätigkeitsbeschreibungen“). Die Zeichenlänge in den Zellen kann größer 256 sein. Der Text kann sich in verschiedenen Zellen der Matrix wiederholen (mit Duplikaten).
a) Ich benötige eine Auflistung aller Tätigkeitsbeschreibungen ohne Duplikate.
=WENN(ZEILE()>SUMME(N(A$1:E$6<>""));"";INDEX(A:E;REST(KKLEINSTE(WENN(A$1:E$6<>""; ZEILE($1:$6)+SPALTE(A:E)*999);ZEILE());999);KÜRZEN(KKLEINSTE(WENN(A$1:E$6<>"";ZEILE($1:$6) +SPALTE(A:E)*999);ZEILE())/999)))
Die dargestellte Formel liefert mir allerdings Duplikate. Außerdem muss die Matrix in A1 beginnen (d.h. Überschrift „Intervalle“ bzw. Spalte „Bauteile“ ist nicht möglich).
b) Jeder Tätigkeitsbeschreibung, die ja mehrfach vorkommen kann, in der erzeugten Liste sollen genau die Bauteile aus Spalte A, die in einer der Spalten die Tätigkeitsbeschreibung beinhaltet, daneben als Aufzählung dargestellt werden.
Zur Veranschaulichung habe ich eine Exceldatei beigefügt.
https://www.herber.de/bbs/user/100518.xlsx
Sollte die Aufgabe deutlich geworden sein, wäre ich für Unterstützung sehr dankbar! Ich bin gespannt.
Grüße
PeterPan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 09:52:53
ChrisL
Hi Peter
Eine VBA Lösung:
Sub t()
Dim rng As Range, Zelle As Range
Dim letzteZeile As Long, FindZeile As Long
Set rng = Range("A1:E5")
Columns("G:H").ClearContents
For Each Zelle In rng.Cells
If Not IsEmpty(Zelle) Then
letzteZeile = Range("G65536").End(xlUp).Row + 1
If WorksheetFunction.CountIf(Columns(7), Zelle) = 0 Then
If IsEmpty(Range("G1")) Then letzteZeile = 1
Cells(letzteZeile, 7) = Zelle
Cells(letzteZeile, 8) = Cells(Zelle.Row, 6)
Else
FindZeile = Application.Match(Zelle, Columns(7), 0)
Cells(FindZeile, 8) = Cells(FindZeile, 8) & ", " & Cells(Zelle.Row, 6)
End If
End If
Next Zelle
End Sub

cu
Chris

Anzeige
AW: Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 11:46:16
PeterPan
Hallo Chris,
wow, chapeau! Sehr schnell und passt auf die beigefügte Datei. Ich ziehe meinen Hut, tausend Dank! Ich sollte meine VBA-Kenntnisse vertiefen...
Ich versuche dies jetzt auf die "richtige" Datei anzuwenden und melde mich noch einmal.
Gruß
Peter

AW: Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 12:07:42
PeterPan
Hallo Chris,
leider ist mein Versuch gescheitert, da ich den veränderten Matrixbereich im Makro wohl falsch erweitert habe. Ich habe die "richtige" Datei einmal hochgeladen.
https://www.herber.de/bbs/user/100523.xlsm
Was habe ich falsch gemacht?
Danke vorab für die super Unterstützung!
Gruß
PeterPan

Anzeige
AW: Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 12:53:18
ChrisL
Hi Peter
Etwa so...
Sub t()
Dim rng As Range, Zelle As Range
Dim letzteZeile As Long, FindZeile As Long
Set rng = Range("D2:AJ500")
Range("AL2:AM65536").ClearContents
For Each Zelle In rng.Cells
If Not IsEmpty(Zelle) Then
letzteZeile = Range("AL65536").End(xlUp).Row + 1
If WorksheetFunction.CountIf(Columns(38), Zelle) = 0 Then
Cells(letzteZeile, 38) = Zelle
Cells(letzteZeile, 39) = Cells(Zelle.Row, 1)
Else
FindZeile = Application.Match(Zelle, Columns(38), 0)
Cells(FindZeile, 39) = Cells(FindZeile, 39) & ", " & Cells(Zelle.Row, 1)
End If
End If
Next Zelle
End Sub

cu
Chris

Anzeige
AW: Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 13:18:57
PeterPan
Hallo Chris,
danke, ich habe es soeben ausprobiert.
Kann es sein, dass in Spalte AL doch noch Duplikate auftreten bzw. diese nicht die Bauteile zusammenfassen? Ich habe Dir dies einmal farbig hervorgehoben.
https://www.herber.de/bbs/user/100527.xlsm
Bei genauerer Betrachtung wäre diese Darstellung sogar besser. D.h. nicht alle Bauteile zu einer Tätigkeit in Spalte AM hintereinander auflisten, sondern für jedes Bauteil eine neue Zeile. z.B. so:
Spalte AL Spalte AM
Tätigkeit 1 Bauteil 1
Tätigkeit 1 Bauteil 2
Tätigkeit 1 Bauteil 3
Tätigkeit 2 Bauteil 1
Tätigkeit 2 Bauteil 4
etc.
Gruß
PeterPan

Anzeige
AW: Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 13:49:33
Rusi
Hallo,
schreibt in ein neues Blatt.
Sub aaa()
Dim vArr, arrTmp, i As Long, j As Integer, k As Integer, objDaten As Object, oDaten, arrOut()
vArr = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 36)
Set objDaten = CreateObject("Scripting.dictionary")
Const sDelim As String = "|"
objDaten("Bauteil" & sDelim & "Tätigkeit") = 0
For i = 1 To UBound(vArr)
For j = 4 To UBound(vArr, 2)
If Len(Trim(vArr(i, j))) Then
arrTmp = Split(vArr(i, j), vbLf)
For k = 0 To UBound(arrTmp)
objDaten(vArr(i, 1) & sDelim & arrTmp(k)) = 0
Next k
End If
Next
Next
ReDim arrOut(1 To objDaten.Count, 1 To 2)
i = 0
For Each oDaten In objDaten
arrTmp = Split(oDaten, sDelim)
If Len(arrTmp(1)) Then
i = i + 1
arrOut(i, 1) = arrTmp(0)
arrOut(i, 2) = arrTmp(1)
End If
Next
With Worksheets.Add
.Cells(1, 1).Resize(i, 2) = arrOut
.Columns.AutoFit
End With
End Sub
Gruß
Rudi

Anzeige
besser Rusi als Rosi owT
01.10.2015 14:28:23
Rudi

AW: Liste ohne Duplikate aus Matrix,Zuordnung Elemente
01.10.2015 14:33:30
PeterPan
Hallo Rudi,
perfekt, geht nicht besser! An dieser Stelle Dir und Chris noch einmal ausdrücklich danke!!!
In meinem nächsten Leben versuche ich dann den Code zu verstehen... ;-)
Gruß
Peter Pan

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige