Excel で H、He、Li、Be などの化学元素を原子番号で並べ替える

Excel で H、He、Li、Be などの化学元素を原子番号で並べ替える

サンプル、分析番号、テスト方法などの列と、重要な分析された化学元素を含む長い表があります。まずサンプルで表を並べ替え、次に化学元素で並べ替えたいと思います。元素記号は、原子番号の昇順、つまり H < He < Li < Be < B < C < N などから Pb までとなります。これは Excel で実行できますか?

答え1

データを原子番号で並べ替えます。以下は、Wikipedia からデータを返すクエリです。

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"

データ > データの取得 > その他のソースから > 空のクエリを使用し、Power Query エディターが開いたら、詳細エディターを開いて、上記のクエリを詳細エディター ウィンドウに貼り付けることができます。[閉じて読み込む] をクリックすると、データがワークブックの新しいシートに戻されます。その後、次のいずれかを実行できます。

  1. データに原子番号を追加し、その列で並べ替えるには、これを使用しますXLOOKUP。もう少し複雑で強力な機能が必要な場合は、
  2. 両方のデータセットを PowerPivot データ モデルに読み込み、要素名で結合を作成し、要素列の並べ替えプロパティを原子番号を使用するように設定します。これを行うと、Power Pivot データ モデルから作成されたすべてのピボット テーブルで要素が原子番号で並べ替えられます。

余談ですが、そのクエリを Power Query に読み込む場合は、「名前」列を選択して、次のように [変換] > [データ型の作成] オプションを使用することもできます。

ここに画像の説明を入力してください

これにより、次のような興味深いことが可能になります。

ここに画像の説明を入力してください

答え2

はい、可能です。例えば、これがある場合。

ここに画像の説明を入力してください

並べ替えたい列をクリックし、Excelのホームタブから並べ替えとフィルターツールを使用して、以下のように最小から最大に並べ替えることができます。

ここに画像の説明を入力してください

このメッセージが表示されたら、選択範囲を展開して並べ替えをクリックします。

ここに画像の説明を入力してください

答え3

(1)Excel VBAカスタム関数ATOMICNUMBER()を作成する

Alt+を押してF11Visual Basic Editor を開き (Mac ではFN+ ALT+を押しますF11)、[挿入] > [モジュール] をクリックします。

次のコードをコピーして新しいモジュールに貼り付けます。

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

Visual Basic エディターを閉じます。

(2)ヘルパー列を追加する

要素記号の横に新しい列を挿入します。

記入してください=ATOMICNUMBER(要素シンボルを含む隣接セル)

(3)並べ替え

すべてのデータを選択します。

メニュー データ > 並べ替え...

まずサンプル順に並べ替え、次に原子番号順に並べ替えます。

関連情報