Sortieren Sie chemische Elemente wie H, He, Li, Be nach Ordnungszahl in Excel

Sortieren Sie chemische Elemente wie H, He, Li, Be nach Ordnungszahl in Excel

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:

  1. Verwenden Sie XLOOKUPdiese 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,
  2. 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:

Bildbeschreibung hier eingeben

Damit können Sie interessante Dinge tun, wie beispielsweise:

Bildbeschreibung hier eingeben

Antwort2

Ja, das ist möglich. Wenn Sie beispielsweise dies haben.

Bildbeschreibung hier eingeben

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.

Bildbeschreibung hier eingeben

Wenn diese Meldung erscheint, stellen Sie sicher, dass sie aktiviert ist. Erweitern Sie die Auswahl und klicken Sie auf Sortieren

Bildbeschreibung hier eingeben

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.

verwandte Informationen