
Ich habe eine Liste, die nach dem Sortieren so aussieht:
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:
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):
Sie können Ihre Liste beispielsweise in eine Excel-Tabelle einfügen Table1
und diese Liste als bezeichnen Table1[List]
.
In Spalten C
erhalten D
Sie 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 F
und gezeigt sortieren G
.
Formel in F2
:=SORT(HSTACK(C2#,D2#),2,-1)
Antwort2
Wenn Sie über die folgenden Daten verfügen und MS365
diese 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 istgroup
,aggregate
dasssort
sie den von uns angegebenen Feldern entspricht. Die besagte Funktion ist jedoch in, daher funktioniert sie nicht und wird als FehlerOffice-Insiders
angezeigt, 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 wirdUNIQUE()
die Funktion verwendet, um eindeutige Werte zurückzugeben, und zuletzt wirdMMULT()
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 mitUNIQUE()
undMMULT()
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:
- 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:A16
Sie möglicherweise nach Ihren Wünschen ändern müssen. Das Folgende muss nicht ausgefüllt werden, da es sonst überlaufen würde. WoL2
wird die Formel von oben zurückgegeben, indemTOCOL()
undUNIQUE()
=COUNTIFS(A3:J16,L2#)
Wenn Sie immer noch zögern, den obigen Anweisungen zu folgen, können Sie POWER QUERY
Folgendes verwenden: ist ab verfügbar Excel 2010+
für , verfügbar in Windows Excel 2010+
undExcel 365 (Windows or Mac)
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 List
diese Formel einfach in einer beliebigen leeren Zelle, wobei List
der Name der Zelle steht Table
:
=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)