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

Unikatliste aus mehreren Sheets

Unikatliste aus mehreren Sheets
11.06.2023 10:22:14
Herbert_Grom

Hallo,

gibt es eine Formel, mit der ich aus den 3 Sheets (T1-T3, jew. Spalte A) eine Unikatliste erzeugen kann, die sich, falls in irgendeinem Sheet ein Artikel hinzugefügt wird, automatisch erweitert?

https://www.herber.de/bbs/user/159535.xlsx

Servus

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unikatliste aus mehreren Sheets
11.06.2023 11:21:38
RPP63
Moin!
Ginge mit Power Query.
Aber da das Ganze ja automatisch erfolgen soll:
=LET(
    T_1; 'T1'!A2:A1000;
    T_2; 'T2'!A2:A1000;
    T_3; 'T3'!A2:A1000;
    ges; EINDEUTIG(VSTAPELN(T_1; T_2; T_3));
    SORTIEREN(FILTER(ges; ges > ""))
)
Gruß Ralf


AW: Unikatliste aus mehreren Sheets
11.06.2023 11:50:25
Luschi
Hallo Herbert,

hier die passende Power-Query dazu: https://www.herber.de/bbs/user/159536.xlsx

Die Forderung 'automatische Aktualisierung' für immer würde ich nicht so streng auslegen, denn jeder, der mit Daten arbeitet, muß wissen was er tut und sich vergewissern, daß seine angezeigten Daten die Realität wiederspiegeln:
- Berechnungsotionen in Excel auf 'Automatisch'
- Pivot-Tabellen aktualisieren mit Alt+F5
- PQ-Abfragen aktualisieren mit Strg+Alt+F5
- Diagramme aktualisieren mit Alt+F5
- altualisieren von einer Offline-Cubedatei
- aktualisieren von Daten im Datenmodell in Power Pivot
- aktualiseren von Daten in 3D-Karten
- aktualiseren von Daten in Excel-Services

Gruß von Luschi
aus klein-Paris


Anzeige
AW: Unikatliste aus mehreren Sheets
11.06.2023 12:03:41
Herbert_Grom
Hallo Luschi altes Haus,

schön, mal wieder was von dir zu lesen! Du hast mit all deinen Anmerkungen recht. Das Teil ist jedoch für meine Schwiegertochter und da bin ich immer greifbar. Außerdem ist sie sehr intelligent und ich werde ihr das gut erklären. Vielen Dank.

Schönen Gruß nach "Klein-Paris"!

Servus


AW: Unikatliste aus mehreren Sheets
11.06.2023 12:00:07
Herbert_Grom
Hallo Ralf,

vielen Dank, die Formel ist einfach genial!!! Es funzt bestens! Ich bin wirklich begeistert! Nochmals vielen Dank!

Servus


Anzeige
AW: Unikatliste aus mehreren Sheets
11.06.2023 13:26:23
Daniel
Noch ne Möglichkeit:

=EINDEUTIG(TEXTTEILEN(TEXTVERKETTEN(";";1;'T1'!A:A)&";"&TEXTVERKETTEN(";";1;'T2'!A:A)&"; "&TEXTVERKETTEN(";";1;'T3'!A:A);"!";";")) 
Hiermit könnte man die Listen auch über mehrere Spalten erstellen.

Gruß Daniel


AW: Unikatliste aus mehreren Sheets
11.06.2023 13:32:41
Herbert_Grom
Hallo Daniel,

auch dir vielen Dank für deine tolle Formel. Die wird zwar etwas länger, dafür kann ich sie besser verstehen als die von Ralf (Sorry!).

Servus


AW: Unikatliste aus mehreren Sheets
11.06.2023 13:50:19
snb
In VBA:

Sub M_snb()
  For Each it In Sheets
    it.Columns(1).AdvancedFilter 2, , Sheets(1).Cells(Rows.Count, 8).End(xlUp).Offset(1), True
  Next
  With Sheets(1).Columns(8)
     .SpecialCells(2).AdvancedFilter 2, , Sheets(1).Cells(1, 9), True
     .ClearContents
  End With
End Sub


Anzeige
AW: Unikatliste aus mehreren Sheets
11.06.2023 17:35:32
Herbert_Grom
Hallo snb,

vielen Dank für deinen Code, werde ich mir bunkern.

Servus


AW: Unikatliste aus mehreren Sheets
12.06.2023 17:27:33
Herbert_Grom
Hallo snb (oder jemand anderes),

jetzt habe ich noch eine Bitte: Kannst du mir bitte sagen, wie ich das Ganze in ein Array einlesen und dann in A4 des aktiven Sheets ausgeben kann, damit ich das nicht erst in das Sheet schreiben muss?

Vielen Dank im Voraus


AW: Unikatliste aus mehreren Sheets
12.06.2023 17:34:54
Herbert_Grom
Sorry, ich habe noch die Bereiche vergessen, denn du hast mir auch die Überschriften mitgenommen: Der Auslesebereich in den Sheets ist jeweils A4:A44. Danke.


AW: Unikatliste aus mehreren Sheets
12.06.2023 17:48:57
Daniel
HI
die Methode von SNB muss die Überschrift mitnehmen, das lässt sich nicht vermeiden.
allerdings sollten die Überschriften beim letzten Spezialfilter verschwinden, wenn sie auf jedem Blatt gleich sind.
Allerdings ist die Methode von SNB sehr antiquiert (die nimmt man, wenn der Code auf Excel 2003 und älter laufen soll)
wenns nicht per Formel sondern per VBA sein soll, würde ich einfach alle Bereiche untereinander kopieren und dann das Duplikate - Entfernen ausführen:
in der Rumpfversion so:

for i = 1 to 3
    Sheets("T" & i).Range("A4:A44").Copy
    Sheets("Gesamt").Cells(Rows.Count, 1).End(xlup).Offset(1, 0).PasteSpecial xlpasteall
next
Sheets("Gesamt").Columns(1).RemoveDuplicates 1, xlno
Gruß Daniel


Anzeige
AW: Unikatliste aus mehreren Sheets
12.06.2023 17:55:16
Herbert_Grom
Hallo Daniel,

vielen Dank für deinen Vorschlag, doch wollte ich die Liste ja nicht erst ins Sheet schreiben, sondern in einem Array sammeln und dabei die doppelten rausfiltern. Hast du da evtl. auch eine Idee?

Servus


AW: Unikatliste aus mehreren Sheets
12.06.2023 18:11:59
Daniel
ja kann man auch machen.
einfach alle Werte nacheinander einem Dictionary hinzufügen und dann die Key-Auflistung als Array verwenden.
ein Dictionary ist vergleichbar einem eindimensionalen Array, bei dem du allerdings jeden beliebigen Text als Index verwenden kannst.
da jeder Index nur einmal vorkommen kann, bekommt so auf einfache weise Duplikatfreie Listen.

aber du wolltest ja eine Formel haben, und da muss man davon ausgehen, dass du auch das Ergebnis dann in der Tabelle haben willst und nicht im Array.

es sollte aber möglich sein, Formelergebnisse in eine Variable zu schreiben, mit hilfe von:

X = Evaluate("Formel in Englischer Schreibweise mit A1-Addressen")
Gruß Daniel


Anzeige
AW: Unikatliste aus mehreren Sheets
13.06.2023 08:59:32
Herbert_Grom
Hallo Daniel,

sorry, aber ich krieg das nicht hin, die Bereiche der 3 Sheets in ein Array einzulesen und dann nur die Unikate davon auszugeben, oder die Unikate der 3 Sheets in ein Array einzulesen. Kannst du mir bitte da noch helfen (oder jemand anderes)?

Servus


AW: Unikatliste aus mehreren Sheets
13.06.2023 13:59:22
Herbert_Grom
Sorry, habe den Haken für offen vergessen!

Servus


AW: Unikatliste aus mehreren Sheets
13.06.2023 14:11:04
Daniel
was hast du denn probiert?
Gruß Daniel


AW: Unikatliste aus mehreren Sheets
13.06.2023 14:20:40
Herbert_Grom
Hallo Daniel,

gerade habe ich es geschafft und es funzt. Die "Function" habe ich beim Googlen gerade noch gefunden.

Sub ArrayFuellen()
   Dim arrWerte(), ArrZutaten() As String, lLastRow&
   Dim lTab&     '* Tabellenzähler
   Dim lZaehler& '* Zähler für Array-Datenzeilen
   Im lRow&      '* Zeilenzähler in den Törtchen-Sheets
   
   '* letzte Zeile in den Törtchen-Sheets
      lLastRow = Tab03.Cells(Rows.Count, "C").End(xlUp).Row - 7
   
   Application.ScreenUpdating = False
   
   '* alle Sheets durchlaufen
      For lTab = 3 To Worksheets.Count
         With Worksheets(lTab)
            For lRow = 4 To lLastRow
               If .Cells(lRow, 2) = "" Then GoTo next_tab
                  lZaehler = lZaehler + 1
                  ReDim Preserve arrWerte(lZaehler)
                  arrWerte(lZaehler) = .Cells(lRow, 2)
            Next lRow
            lRow = 1
         End With
next_tab:
      Next lTab
   
   '* vorhandene Zutatenliste löschen
      Range("A4:A" & lRow + 1).ClearContents
   
   '* Function starten
      ArrZutaten = ArrayDuplikateEntfernen(arrWerte)
   
   '* Zutaten-Array in Tabelle eintragen
      lRow = UBound(ArrZutaten)
      Range("A4:A" & lRow + 3) = Application.Transpose(ArrZutaten)
      Range("A4:A" & lRow + 3).Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlNo
End Sub


Function ArrayDuplikateEntfernen(MeinArray As Variant) As Variant
   Dim nErste&, nLetzte&, i&, Element$, arrTemp() As String, Coll As New Collection

   'Erste und letzte Array-Position ermitteln
   nErste = LBound(MeinArray)
   nLetzte = UBound(MeinArray)
   ReDim arrTemp(nErste To nLetzte)

   'Array in String umwandeln
   For i = nErste To nLetzte
       arrTemp(i) = CStr(MeinArray(i))
   Next i
   
   'Temporäre Sammlung auffüllen
   On Error Resume Next
   For i = nErste To nLetzte
       Coll.Add arrTemp(i), arrTemp(i)
   Next i
   Err.Clear
   On Error GoTo 0

   'Größe des Arrays ändern
   nLetzte = Coll.Count + nErste - 1
   ReDim arrTemp(nErste To nLetzte)
   
   'Array auffüllen
   For i = nErste To nLetzte
       arrTemp(i) = Coll(i - nErste + 1)
   Next i
   
   'Array ausgeben
   ArrayDuplikateEntfernen = arrTemp
End Function
Vielen Dank

Servus


Anzeige
AW: Unikatliste aus mehreren Sheets
13.06.2023 14:20:53
Daniel
Hi
als Makro auch für ältere Excelversionen würde das so aussehen:

Dim X
Dim sh
Dim dic
Dim arr1dim
Dim arr2dim

Set dic = CreateObject("scripting.dictionary")
For Each sh In Sheets(Array("T1", "T2", "T3"))
    For Each X In Range(sh.Cells(2, 1), sh.Cells(Rows.Count, 1).End(xlUp)).Value
        If X > "" Then dic(X) = 0
    Next
Next

arr1dim = dic.keys 'Ergebnis in eindimensionalen Array (entspricht einer Zeile mit vielen Spalten) Basis 0
arr2dim = WorksheetFunction.Transpose(dic.keys) 'Ergebnis in zweidimensionalen Array in einer Spalte und vielen Zeilen Basis 1


Anzeige
Unikate in Array
13.06.2023 14:28:42
Rudi Maintaire
Hallo Herbert einfach so:
Sub HG()
  Dim objZU As Object, arrZU, i As Long
  Dim wks As Worksheet
  
  Set objZU = CreateObject("scripting.dictionary")
  objZU("Zutaten") = 0 'die Überschrift
  
  For Each wks In Worksheets(Array("t1", "t2", "t3"))
    With wks
      arrZU = Intersect(.Cells(1, 1).CurrentRegion, .Cells(1, 1).CurrentRegion.Offset(1))
      For i = 1 To UBound(arrZU)
        objZU(arrZU(i, 1)) = 0
      Next i
    End With
  Next wks
  
  'Zutaten in Array
  arrZU = Application.Transpose(objZU.keys)
  
  'Zutaten in Blatt
  With Sheets("gesamt-unikatliste")
    .Columns(1).ClearContents
    .Cells(1, 1).Resize(UBound(arrZU)) = arrZU
  End With
  
End Sub
;-)

Gruß
Rudi


Anzeige
AW: Unikate in Array
13.06.2023 14:47:16
Herbert_Grom
Hallo Rudi,

vielen Dank, deine Lösung funzt perfekt und ist auch noch super kurz!

Ich sende dir noch eine eMail.

Servus


AW: Unikatliste aus mehreren Sheets
13.06.2023 14:42:16
Daniel
HI
noch ne Variante für VBA mit einfachen Anfängermethoden (Text und Instr)

Dim X
Dim sh As Worksheet
Dim txt As String
Dim arr1dim
Dim arr2dim

For Each sh In Sheets(Array("T1", "T2", "T3"))
    For Each X In Range(sh.Cells(2, 1), sh.Cells(Rows.Count, 1).End(xlUp)).Value
        If X > "" Then _
            If InStr(txt & "|", "|" & X & "|") = 0 Then txt = txt & "|" & X
    Next
Next

arr1dim = Split(Mid(txt, 2), "|")
arr2dim = WorksheetFunction.Transpose(arr1dim)
Gruß Daniel


Anzeige
AW: Unikatliste aus mehreren Sheets
13.06.2023 14:46:05
Herbert_Grom
Hallo Daniel,

vielen Dank, deine Lösung funzt perfekt und ist auch noch super kurz!

Servus

P.S.: Rudis Lösung funzt ebenfalls perfekt und ist auch noch sehr kurz. Nun habe ich die Qual der Wahl. ;o)=)


AW: Unikatliste aus mehreren Sheets
13.06.2023 14:51:44
Daniel
Die Lösung von Rudi hast du von mir auch bekommen und zwar etwas früher.
Warum gibts da keinen Dank für?


AW: Unikatliste aus mehreren Sheets
13.06.2023 14:54:20
Herbert_Grom
Hallo Daniel,

vor 5 Minuten habe ich mich dafür bei dir bedankt (s.u.). Aber ich weiß, dass die eMail-Benachrichtigung manchmal etwas länger dauert.

https://www.herber.de/forum/messages/1933684.html

Servus und noch mal vielen Dank.


AW: Unikatliste aus mehreren Sheets
13.06.2023 15:00:20
Daniel
die meinte ich nicht, sondern diese:

https://www.herber.de/forum/messages/1933677.html

in meiner ersten Lösung nutze ich wie Rudi das Dictionary-Objekt (was eigentlich schon fortgeschrittene Programmiertechnik ist) und in der zweiten dann einen einfachen Textstring, in dem man ebenfalls die Werte sammeln kann und der es ebenfalls ermöglicht zu prüfen, ob ein Wert bereits vorhanden ist um Duplikate zu vermeiden.

Gruß Daniel


AW: Unikatliste aus mehreren Sheets
13.06.2023 15:03:33
Herbert_Grom
Hallo Daniel,

https://www.herber.de/forum/messages/1933684.html

hier habe ich mich bei dir bedankt und zwar genau für diese Lösung, die du jetzt noch einmal gepostet hast. Da haben wir ein wenig aneinander vorbei gequatscht. Dank dir.

Servus


AW: Unikatliste aus mehreren Sheets
13.06.2023 15:18:31
Daniel
ja für die
aber nicht für die andere.
es sind zwei Lösungen, die zwar sehr ähnlich aussehen, aber doch unterschiedlich sind.
und die erste ist das gleiche, was Rudi dann später gepostet hat.
Gruß Daniel


AW: Unikatliste aus mehreren Sheets
13.06.2023 15:28:26
Herbert_Grom
Hallo Daniel,

deine erste Version ist ja die beste, die nehme ich nun auch. Vielen Dank.

Servus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige