Wie kann ich eine Formel erstellen, die die Anzahl der Duplikate zählt, den Wert in einer Zelle meiner Wahl zurückgibt und dann die Duplikate löscht?

Wie kann ich eine Formel erstellen, die die Anzahl der Duplikate zählt, den Wert in einer Zelle meiner Wahl zurückgibt und dann die Duplikate löscht?

Ich habe eine Liste, die nach dem Sortieren so aussieht:

grobe Liste

Ich brauche eine Formel, die die Anzahl der Einträge ermittelt und alle Duplikate löscht. Normalerweise zähle ich die Anzahl einfach mit den Augen oder markiere die identischen Einträge und protokolliere die berechnete „Anzahl“ unten in der Tabelle. Dann gehe ich alles noch einmal durch und lösche alle Duplikate, was ein ziemlich mühsamer Prozess ist, und ich bin fest davon überzeugt, dass es dafür einen einfacheren Weg gibt.

Ich habe versucht, mit der Filterfunktion Einträge anzuzeigen, die keine Nummer in der angrenzenden Spalte haben, aber wenn ich die Duplikate entfernen möchte, werden die Einträge nach oben verschoben, sodass die Zahlen, die ich bereits von Hand eingegeben habe, nicht übereinstimmen. Ehrlich gesagt habe ich das Gefühl, dass es eine Möglichkeit gibt, Excel die Häufigkeit jedes Eintrags zählen und aufzeichnen zu lassen (ohne ihn vorher sortieren zu müssen), aber ich bin nicht gut in logischen Formeln und die Suchvorgänge, die ich im World Wide Web durchgeführt habe, haben zu verwandten Abfragen geführt, helfen mir aber nicht wirklich dabei, herauszufinden, wie das geht.

Derzeit verwende ich eine Microsoft 365-Version von Excel.

Letztendlich möchte ich, dass die Liste folgendermaßen aussieht:

Liste fertig

aber mit weniger Aufwand.

Wer noch mehr Details möchte, sollte weiterlesen, um sich ein Gesamtbild zu verschaffen. Als jemand, der sich für eine gesunde Ernährung interessiert, verfolge ich meinen Konsum bis auf die Mikronährstoffe, um sicherzustellen, dass ich ausreichende Mengen zu mir nehme und keine empfohlenen Grenzwerte überschreite. Einmal pro Woche prüfe ich diese Daten und identifiziere Nährstoffe, von denen ich nicht genug bekomme. Ich habe eine Art Haupttabelle, in der die Lebensmittel aufgelistet sind, die am reichsten an verschiedenen Nährstoffen sind. Sie sieht folgendermaßen aus:

Liste der Nährstoffe und der daran reichsten Lebensmittel

Wie Sie sehen, erscheinen bestimmte Lebensmittel auf mehreren Listen. Da ich an einem Tag nur eine bestimmte Menge essen kann, möchte ich mich auf die Lebensmittel konzentrieren, die mir das meiste für mein Geld bieten, weil sie auf mehreren Listen erscheinen. Normalerweise kopiere und füge ich einfach die Spalten, für die Mängel festgestellt wurden, in eine einzelne Spalte ein und sortiere sie dann alphabetisch, um eine Anzahl zu erhalten. Ich füge dieses Detail hinzu, weil ich das Gefühl habe, dass ein echter Superuser von Excel sich nicht einmal mit dem umständlichen Kopieren und Einfügen herumschlagen müsste, das ich mache, und die Zahlen einfach aus dieser Haupttabelle der Lebensmittel nach Nährstoffen ziehen könnte.

Vielen Dank im Voraus an alle, die mir helfen können, Excel etwas effizienter zu nutzen.

Antwort1

Mein Vorschlag betrifft nur den ersten Teil (sortierte Produktliste):
Essen
Sie können Ihre Liste beispielsweise in eine Excel-Tabelle einfügen Table1und diese Liste als bezeichnen Table1[List].
In Spalten Cerhalten DSie eine Liste von Unikaten mit ihren Anzahlen.
Formel in C2: =UNIQUE(Table1[List])
Formel in D2: =COUNTIF(Table1[List],C2#)
Als nächsten Schritt können Sie diese beiden Spalten wie in Spalten Fund gezeigt sortieren G.
Formel in F2:=SORT(HSTACK(C2#,D2#),2,-1)

Antwort2

Wenn Sie über die folgenden Daten verfügen und MS365diese verwenden, können Sie die folgenden Methoden anwenden:

Faser Kalzium Eisen Magnesium Zink Kupfer Mangan Jod Selen Fluorid
weiße Bohnen Milch angereicherte Cerealien Kürbiskerne Rindfleisch Krabbe Weizenkeime Ofenkartoffel Paranuss schwarzer Tee
Linsen Joghurt Weizenkleie-Flocken Mandeln Kürbiskerne Hummer Süßkartoffeln Milch Sonnenblumenkerne Garnele
Pintobohnen Parmesan Grütze Spinat Sonnenblumenkerne Shiitake-Pilze Blattkohl Garnele Thunfisch Rosinen
Kichererbsen schweizerisch Granola schwarze Bohnen Linsen weiße Knöpfe Erbsen Truthahn Lachs Himbeeren
Limabohnen Hüttenkäse Weizenschrot Lachs Truthahn tragbare Pinienkerne weiße Bohnen Hummer gekochte Haferflocken
Avocado Spinat Reiscreme Joghurt Eier cremefarben Haselnüsse Eier Garnele Bier
Kürbiskerne Blattkohl Rindfleisch Milch Shiitake-Pilze Süßkartoffeln Pecannüsse Schweinefilet Rotwein
Sesamsamen Rübengrün Hackfleisch Avocado Rübengrün Hafer Rindfleisch Apfelwein
Mandeln Brokkoli Rinderfilet Bananen Ofenkartoffel Limabohnen Lamm Grütze
Pistazien Schwarzäugige Erbsen Büffelfilet Spinat Kichererbsen Huhn Schwarze Bohnensuppe
Pecannüsse weiße Bohnen gemahlener Bison Sonnenblumenkerne weiße Bohnen Truthahn Ofenkartoffel
Sonnenblumenkerne Lachs Porterhouse-Burger Kürbiskerne Linsen weiße Bohnen Möhren
Eichelkürbis Eichelkürbis rindfleisch eintopf fleisch Paranuss Spinat Pintobohnen Spinat
Hubbard-Kürbis Hummer Schweinefilet Walnüsse Ananas Limabohnen Kantalupe

• Die Verwendungsfunktion ist nur GROUPBY()auf MS365--> anwendbar Office Insiders.

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     GROUPBY(_SingleCol,_SingleCol,ROWS,,0,-2))

Oder, Verwenden von BYROW()oderMMULT()

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     _Uniq, UNIQUE(_SingleCol),
     _Counts, MMULT(N(_Uniq=TOROW(_SingleCol)),SEQUENCE(ROWS(_SingleCol))^0),
     HSTACK(_Uniq,_Counts))

=LET(
     _Data, A3:J16,
     _SingleCol, TOCOL(_Data,1),
     _Uniq, UNIQUE(_SingleCol),
     _Counts, BYROW(_Uniq,LAMBDA(x,SUM(--(x=_SingleCol)))),
     HSTACK(_Uniq,_Counts))

  • Alle oben gezeigten Formeln ergeben die Anzahl der Zählungen für jeden einzelnen Datensatz.
  • Verwenden Sie TOCOL()die Funktion, um die Daten mehrerer Bereiche in ein einspaltiges Array umzuwandeln, wobei die Duplikate ausgeschlossen werden.
  • Methode 1--> Bei der ersten Methode wird GROUPBY()eine Funktion verwendet, die so konzipiert ist group, aggregatedass sortsie den von uns angegebenen Feldern entspricht. Die besagte Funktion ist jedoch in, daher funktioniert sie nicht und wird als Fehler Office-Insidersangezeigt, solange Sie die Option nicht aktiviert haben .#NAME!
  • Methode 2--> Beginnt auch mit der LET()Funktion, was das Lesen erleichtert und die Verwendung redundanter Bereiche/Formeln reduziert.
  • Wie bei der ersten Methode wird zuerst die TOCOL()Funktion angewendet, dann wird UNIQUE()die Funktion verwendet, um eindeutige Werte zurückzugeben, und zuletzt wird MMULT()die Funktion verwendet, um die Zählungen zurückzugeben, die das Matrixprodukt der beiden gegebenen Arrays sind.
  • Kombinieren Sie abschließend HSTACK()die beiden zurückgegebenen Arrays mit UNIQUE()und MMULT()der Funktion, um die gewünschte Ausgabe zurückzugeben.
  • Methode 3--> Beginnt mit den gleichen Schritten wie oben, außer dass eine BYROW()Funktion verwendet wird, um die übereinstimmenden Anzahlen der einzelnen Elemente zu erhalten.

Wenn Sie diese Methoden jedoch zu kompliziert finden, können Sie auch die einfachste Methode verwenden, die unten gezeigt wird:

Bildbeschreibung hier eingeben


  • Verwenden Sie zunächst die Funktion TOCOL()& UNIQUE(), um die verschiedenen Bereiche in einem Array zurückzugeben, wobei die leeren Bereiche und Duplikate ausgeschlossen werden. Und platzieren Sie sie in einer Zelle, sagen wir inL2

=UNIQUE(TOCOL(A3:J16,1))

  • Geben Sie abschließend die folgende Funktion ein, um die Zählungen abzurufen. Denken Sie daran, dass ich den Datenbereich übernommen habe, den A3:A16Sie möglicherweise nach Ihren Wünschen ändern müssen. Das Folgende muss nicht ausgefüllt werden, da es sonst überlaufen würde. Wo L2wird die Formel von oben zurückgegeben, indem TOCOL()undUNIQUE()

=COUNTIFS(A3:J16,L2#)

Wenn Sie immer noch zögern, den obigen Anweisungen zu folgen, können Sie POWER QUERYFolgendes verwenden: ist ab verfügbar Excel 2010+für , verfügbar in Windows Excel 2010+undExcel 365 (Windows or Mac)

Bildbeschreibung hier eingeben


Um Power Query zu verwenden, befolgen Sie die Schritte:

  • Konvertieren Sie zunächst die Quellbereiche in eine Tabelle und benennen Sie diese entsprechend. Für dieses Beispiel habe ich sie wie folgt benannt:Table1

  • Öffnen Sie als Nächstes eine leere Abfrage über Datadie Tabulatortaste --> Get & Transform Data--> Get Data--> From Other Sources-->Blank Query

  • Das obige lässt das Power QueryFenster öffnet sich, jetzt von HomeTab --> Advanced Editor--> Und fügen Sie das Folgende ein, M-Codeindem Sie alles entfernen, was Sie sehen, und drücken SieDone

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(Source, {}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Attribute"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Value"}, {{"Count", each Table.RowCount(_), Int64.Type}})
in
    #"Grouped Rows"

  • Zum Schluss importieren Sie es wieder nach Excel--> Klicken Sie auf Close & Loadoder Close & Load To-->. Der erste Klick erstellt ein New Sheetmit der erforderlichen Ausgabe, während der letzte Klick ein Fenster öffnet, in dem Sie gefragt werden, wo das Ergebnis abgelegt werden soll.

Hinweis: Die Formel kann keine Duplikate löschen, sondern extrahiert Werte, wenn sie unter bestimmten Bedingungen in eine Zelle eingefügt werden. Wie ich oben gezeigt habe. Sie benötigen im Grunde die Funktion UNIQUE(), TOCOL()& COUNTIF()oder COUNTIFS(), um die gewünschte Ausgabe zu erhalten


Platzieren Sie Rough Listdiese Formel einfach in einer beliebigen leeren Zelle, wobei Listder Name der Zelle steht Table:

Bildbeschreibung hier eingeben


=LET(
     _Uniq, UNIQUE(List),
     _Output, SORT(HSTACK(_Uniq, COUNTIF(List,_Uniq)),2,-1),
     VSTACK({"Nutrients","Counts"},_Output))

Einfacher geht es GROUPBY()ggf. mit Funktion:

=GROUPBY(List,List,ROWS,,0,-2)

verwandte Informationen