Ich habe eine lange Tabelle mit Spalten für Probe, Analysenummer, Testmethode usw. und, ganz wichtig, das chemische Element, das analysiert wurde. Ich möchte meine Tabelle zuerst nach Probe und dann nach chemischem Element sortieren. Die Elementsymbole sollten in aufsteigender Ordnungszahl angeordnet sein: H < He < Li < Be < B < C < N usw. bis hin zu Pb. Ist dies in Excel möglich?
Antwort1
Sortieren Sie die Daten nach der Ordnungszahl. Hier ist eine Abfrage, um einige Daten aus Wikipedia zurückzugeben:
let
Source = Web.Page(Web.Contents("https://en.wikipedia.org/wiki/List_of_elements_by_atomic_properties")),
Data0 = Source{0}[Data],
#"Changed Type" = Table.TransformColumnTypes(Data0,{{"Z", type text}, {"Name", type text}, {"Symbol", type text}, {"Average atomic mass", type text}, {"Electronegativity (Pauling)", type text}, {"First Ionization Energy (eV)", type text}, {"Radii (pm) Atomic", type text}, {"Radii (pm) Van der Waals", type text}, {"Radii (pm) Covalent", type text}, {"Valence electrons", type text}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([Z] <> "Z")),
#"Changed Type1" = Table.TransformColumnTypes(#"Filtered Rows",{{"Z", Int64.Type}, {"Valence electrons", Int64.Type}}),
#"Replaced Value" = Table.ReplaceValue(#"Changed Type1","—","",Replacer.ReplaceText,{"Radii (pm) Van der Waals"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","—","",Replacer.ReplaceText,{"Radii (pm) Covalent"}),
#"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","—","",Replacer.ReplaceText,{"Radii (pm) Atomic"}),
#"Changed Type2" = Table.TransformColumnTypes(#"Replaced Value2",{{"Radii (pm) Atomic", Int64.Type}, {"Radii (pm) Covalent", Int64.Type}, {"First Ionization Energy (eV)", type number}}),
#"Replaced Value3" = Table.ReplaceValue(#"Changed Type2","—","",Replacer.ReplaceText,{"Electronegativity (Pauling)"}),
#"Changed Type3" = Table.TransformColumnTypes(#"Replaced Value3",{{"Electronegativity (Pauling)", type number}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type3",{{"Z", "Atomic Number"}})
in
#"Renamed Columns"
Sie können Daten > Daten abrufen > Aus anderen Quellen > Leere Abfrage verwenden. Wenn dann der Power Query-Editor geöffnet wird, können Sie den erweiterten Editor öffnen und die obige Abfrage in das Fenster des erweiterten Editors einfügen. Wenn Sie auf „Schließen und laden“ klicken, werden die Daten wieder in ein neues Blatt in Ihrer Arbeitsmappe eingefügt. Sie können dann entweder:
- Verwenden Sie
XLOOKUP
diese Option, um die Ordnungszahl zu Ihren Daten hinzuzufügen und dann nach dieser Spalte zu sortieren. Wenn Sie es etwas komplizierter, aber leistungsfähiger haben möchten, - Laden Sie beide Datasets in das PowerPivot-Datenmodell, erstellen Sie einen Join für den Elementnamen und legen Sie dann die Sortiereigenschaften für die Elementspalte so fest, dass die Ordnungszahl verwendet wird. Wenn Sie dies tun, werden die Elemente in allen Pivot-Tabellen, die aus dem Power Pivot-Datenmodell erstellt werden, nach der Ordnungszahl sortiert.
Nur nebenbei: Wenn Sie diese Abfrage in Power Query laden, können Sie auch die Spalte „Name“ auswählen und dann die Option „Transformieren > Datentyp erstellen“ wie folgt verwenden:
Damit können Sie interessante Dinge tun, wie beispielsweise:
Antwort2
Ja, das ist möglich. Wenn Sie beispielsweise dies haben.
Sie können auf die Spalte klicken, die Sie sortieren möchten, und das Sortier- und Filtertool auf der Registerkarte „Start“ in Excel verwenden und sie wie unten gezeigt von klein nach groß sortieren.
Wenn diese Meldung erscheint, stellen Sie sicher, dass sie aktiviert ist. Erweitern Sie die Auswahl und klicken Sie auf Sortieren
Antwort3
(1) Erstellen Sie eine benutzerdefinierte Excel VBA-Funktion ATOMICNUMBER()
Drücken Sie Alt+, F11um den Visual Basic-Editor zu öffnen (drücken Sie auf dem Mac FN+ ALT+ F11), und klicken Sie dann auf Einfügen > Modul.
Kopieren Sie den folgenden Code und fügen Sie ihn in das neue Modul ein.
Function ATOMICNUMBER(arg1 as String) as Integer
elementSymbols = Array("foo", "H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne", "Na", "Mg", "Al", "Si", "P", "S", "Cl", "Ar", "K", "Ca", "Sc", "Ti", "V", "Cr", "Mn", "Fe", "Co", "Ni", "Cu", "Zn", "Ga", "Ge", "As", "Se", "Br", "Kr", "Rb", "Sr", "Y", "Zr", "Nb", "Mo", "Tc", "Ru", "Rh", "Pd", "Ag", "Cd", "In", "Sn", "Sb", "Te", "I", "Xe", "Cs", "Ba", "La", "Ce", "Pr", "Nd", "Pm", "Sm", "Eu", "Gd", "Tb", "Dy", "Ho", "Er", "Tm", "Yb", "Lu", "Hf", "Ta", "W", "Re", "Os", "Ir", "Pt", "Au", "Hg", "Tl", "Pb", "Bi", "Po", "At", "Rn", "Fr", "Ra", "Ac", "Th", "Pa", "U", "Np", "Pu", "Am", "Cm", "Bk", "Cf", "Es", "Fm", "Md", "No", "Lr", "Rf", "Db", "Sg", "Bh", "Hs", "Mt", "Ds", "Rg", "Cn", "Nh", "Fl", "Mc", "Lv", "Ts", "Og")
ATOMICNUMBER = 0
For i = 1 To UBound(elementSymbols)
If elementSymbols(i) = arg1 Then
ATOMICNUMBER = i
Exit For
End If
Next
End Function
Schließen Sie den Visual Basic-Editor.
(2) Hilfsspalte hinzufügen
Fügen Sie neben den Elementsymbolen eine neue Spalte ein.
Füllen Sie es mit=ATOMICNUMBER(
angrenzende Zelle mit Elementsymbol)
.
(3) Sortieren
Wählen Sie alle Daten aus.
Menü Daten > Sortieren...
Zuerst nach Probe und dann nach Ordnungszahl sortieren.