Excelで周期表を作成する2つの簡単な方法|数式自動化とインタラクティブ機能まで完全解説
Excelを使えば、化学の学習や資料作成に役立つ周期表を簡単に作成できます。この記事では、手動で作成する方法とVBAマクロを活用したインタラクティブな周期表を作成する方法の2つを、具体的な手順とともに詳しく解説します。
方法1:手動で周期表を作成する
1.1. 特性テーブルにデータを入力する
周期表の各元素には、それぞれ固有の特性(プロパティ)があります。これらの特性は、元素が示すさまざまな性質・傾向・関係性を表すものであり、主なものは以下の通りです。
元素記号:各元素には、その化学元素を表す1〜2文字の略語である固有の記号が割り当てられています。
原子番号:原子番号は、その元素の原子核に含まれる陽子の数を指します。これはすべての元素にとって固有の値です。
原子量:原子量は、特定の元素の原子の重さ(質量)を表します。原子内の陽子・中性子・電子の質量が含まれ、原子質量単位(amu)で測定されます。
元素の分類:元素の分類とは、特性や特徴に基づいて元素をカテゴリごとに分類することです。これにより、各元素の一般的な性質を理解しやすくなります。
ここでは、118個すべての元素の特性を表形式でまとめたデータを使用します。この特性テーブルは、周期表を作成するうえで不可欠なデータとなります。

1.2. 周期表のフォーマットを作成する
- 列には1〜18の族番号を入力します。
- 行には1〜7の周期番号を入力します。
- 各元素の記号を、族番号と周期番号に対応した適切なセルに入力します。
- 必要に応じて表の書式を調整しましょう。行の高さや列の幅を変更したり、フォントサイズ・色・セルの枠線を工夫したりすると、視覚的に分かりやすく美しい表になります。

1.3. Excelの数式で周期表を自動化する
次に、数式を使って元素の情報を自動的に表示できるようにしましょう。
- 任意の元素名をセルD5に入力します。
- D5:E5の範囲を中央揃えで結合(Merge & Center)します。

- K4:M4の範囲を結合して中央揃えにし、フォントサイズを16に設定します。

- K5:M7の範囲を結合して中央揃えにし、フォントサイズを48に設定します。

- K8:M8の範囲を結合して中央揃えにし、フォントサイズを20に設定します。

- K9:M9の範囲を結合して中央揃えにし、フォントサイズを16に設定します。

- IFERROR関数とVLOOKUP関数を組み合わせた数式を挿入します。
セルK4に入力する数式:
=IFERROR(VLOOKUP($D$5, Properties!$B$5:$F$123,2,FALSE), "")
セルK5に入力する数式:
=IFERROR(VLOOKUP($D$5, Properties!$B$5:$F$123,1,FALSE), "")
セルK8に入力する数式:
=IFERROR(VLOOKUP($D$5, Properties!$B$5:$F$123,3,FALSE), "")
セルK9に入力する数式:
=IFERROR(VLOOKUP($D$5, Properties!$B$5:$F$123,4,FALSE), "")

数式の解説
- VLOOKUP($D$5, Properties!$B$5:$F$123,2,FALSE)
VLOOKUP関数は、「Properties」ワークシートのB5:F123範囲の中からセルD5の値を検索します。一致する値が見つかった場合、指定した範囲の2列目(2)の値を返します。FALSEは完全一致を意味します。
結果:1
- IFERROR(VLOOKUP($D$5, Properties!$B$5:$F$123,2,FALSE), "")
IFERROR関数は、VLOOKUP関数の結果を返します。エラーが発生した場合は空文字列("")を返します。
結果:1
- これにより、セルK4に原子番号、セルK5に元素記号、セルK8に元素名、セルK9に原子量が表示されます。

- セルD5の元素記号を変更すると、K4:K9の範囲にその元素の特性が自動的に表示されます。

方法2:インタラクティブな周期表を作成する
2.1. インタラクティブな表形式を作成する
- 前の方法と同じ要領で周期表のフォーマットを作成します。
- Propertiesワークシートの特性テーブルには、合計10種類の元素分類が記録されています。これらの元素タイプをD5:D14の範囲に入力します。

2.2. 元素タイプごとに色を割り当てる
- ブックからVBAマクロエディターを起動します。VBAコードの書き方がわからない場合は、ExcelでVBAコードを記述する方法を解説した記事を参考にしてください。
- 以下のコードをVBAマクロエディターに貼り付けます。
- 実行(Run)ボタンまたはF5キーを押してコードを実行します。

Sub Property_Color()
'変数の宣言
Dim myRng As Range
'変数の設定
Set myRng = ActiveSheet.Range("F5:F14")
'セルごとに異なる色を設定
myRng.Cells(1).Interior.ColorIndex = 10
myRng.Cells(2).Interior.ColorIndex = 24
myRng.Cells(3).Interior.ColorIndex = 8
myRng.Cells(4).Interior.ColorIndex = 27
myRng.Cells(5).Interior.ColorIndex = 17
myRng.Cells(6).Interior.ColorIndex = 14
myRng.Cells(7).Interior.ColorIndex = 15
myRng.Cells(8).Interior.ColorIndex = 22
myRng.Cells(9).Interior.ColorIndex = 36
myRng.Cells(10).Interior.ColorIndex = 4
End Sub
- 実行すると、F5:F14の範囲にある各元素タイプに異なる色が割り当てられます。

VBAコードの解説
myRng.Cells(1).Interior.ColorIndex = 10
myRng.Cells(2).Interior.ColorIndex = 24
myRng.Cells(3).Interior.ColorIndex = 8
myRng.Cells(4).Interior.ColorIndex = 27
myRng.Cells(5).Interior.ColorIndex = 17
myRng.Cells(6).Interior.ColorIndex = 14
myRng.Cells(7).Interior.ColorIndex = 15
myRng.Cells(8).Interior.ColorIndex = 22
myRng.Cells(9).Interior.ColorIndex = 36
myRng.Cells(10).Interior.ColorIndex = 4
この部分のコードでは、myRng範囲の各セルに対して、それぞれ異なる色(ColorIndex)を割り当てています。
2.3. 元素タイプに基づいて周期表に色を付ける
- 以下のコードを新しいモジュールに貼り付けます。
- 実行(Run)ボタンまたはF5キーを押してコードを実行します。

Sub Periodic_Table()
'変数の宣言
Dim PropertyRng As Range
Dim ElementRng As Range
Dim TableRng As Range
Dim Property As String
Dim ColIndex As Integer
'変数の設定
Set PropertyRng = Sheets("Properties").Range("B5:F122")
Set ElementRng = ActiveSheet.Range("D5:F14")
Set TableRng = ActiveSheet.Range("D18:U27")
'特性テーブルの各セルをループ処理
For i = 1 To TableRng.Cells.Count
Property = "No Property"
'元素の特性を検索
For j = 1 To PropertyRng.Rows.Count
If TableRng.Cells(i) = PropertyRng.Cells(j, 1) Then
Property = PropertyRng.Cells(j, 5)
End If
Next j
'元素の特性に応じてセルの色を変更
For k = 1 To ElementRng.Rows.Count
If Property = ElementRng.Cells(k, 1) Then
ColIndex = ElementRng.Cells(k, 3).Interior.ColorIndex
TableRng.Cells(i).Interior.ColorIndex = ColIndex
End If
Next k
Next i
End Sub
- 実行すると、周期表の各元素が、その元素タイプに割り当てられた色で自動的に塗り分けられます。

VBAコードの解説
For i = 1 To TableRng.Cells.Count
Property = "No Property"
For j = 1 To PropertyRng.Rows.Count
If TableRng.Cells(i) = PropertyRng.Cells(j, 1) Then
Property = PropertyRng.Cells(j, 5)
End If
Next j
- この部分では、2つのネストされたループがTableRng範囲とPropertyRng範囲を順に処理します。TableRng範囲の各ループ処理のたびに、変数Propertyが「No Property」という値で初期化されます。内側のループは、TableRng範囲の現在のセルの値がPropertyRng範囲の1列目のいずれかの値と一致するかどうかを確認し、一致した場合はPropertyRng範囲の5列目の対応する値でProperty変数を更新します。内側のループは一致を探し続け、最後に見つかった一致の値でProperty変数を更新します。内側のループが完了すると、外側のループはTableRng範囲の次のセルに移動して同じ処理を繰り返します。結果として、Property変数には、TableRng範囲の各セルに対応する最後の一致エントリーの特性値、または一致が見つからなかった場合は「No Property」が格納されます。
For k = 1 To ElementRng.Rows.Count
If Property = ElementRng.Cells(k, 1) Then
ColIndex = ElementRng.Cells(k, 3).Interior.ColorIndex
TableRng.Cells(i).Interior.ColorIndex = ColIndex
End If
Next k
Next i
- この部分のコードでは、2つのネストされたループによって、TableRng範囲の各セルに関連付けられた特性と、ElementRng範囲内の元素タイプとの照合を行います。一致が見つかった場合、ElementRng範囲から取得したカラーインデックス(ColIndex)に基づいて、TableRng範囲の該当セルが着色されます。この処理がTableRng範囲のすべてのセルに対して繰り返され、元素タイプに応じた色分けが完成します。
2.4. インタラクティブな周期表を完成させる
- 以下のコードを「Interactive Periodic Table」ワークシートのシートモジュールに貼り付けます。
- コードを保存します。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
'変数の宣言
Dim Atom As Variant
Dim PropertyRng As Range
Dim WS As Worksheet
'変数の設定
Atom = Selection.Value
Set PropertyRng = Sheets("Properties").Range("B5:F122")
Set WS = ActiveSheet
'選択されているのが1つのセルのみであることを確認
If Selection.Cells.Count > 1 Then
MsgBox "周期表から1つのセルだけを選択してください"
Exit Sub
End If
'元素の特性を検索
For i = 1 To PropertyRng.Rows.Count
If Atom = PropertyRng.Cells(i, 1) Then
WS.Range("S4") = PropertyRng.Cells(i, 2)
WS.Range("S6") = Atom
WS.Range("S11") = PropertyRng.Cells(i, 3)
WS.Range("S13") = PropertyRng.Cells(i, 4)
WS.Range("S4:S13").Interior.ColorIndex = Selection.Interior.ColorIndex
End If
'特性が見つからない場合
If Atom = "" Or IsNumeric(Atom) Then
WS.Range("S4:S13") = ""
WS.Range("S4:S13").Interior.ColorIndex = 2
End If
Next i
End Sub
- 「Interactive Periodic Table」ワークシートの周期表内のセルをクリックすると、そのセルの元素の特性が表示されます。ただし、複数のセルを選択すると警告ダイアログボックスが表示されます。
VBAコードの解説
If Selection.Cells.Count > 1 Then
MsgBox "周期表から1つのセルだけを選択してください"
Exit Sub
End If
- この部分のコードは、現在選択されているセルの数をチェックします。選択されたセルの数が1を超える場合、MsgBoxでユーザーに警告メッセージを表示し、Exit Subコマンドでサブルーチンを終了して、以降のコードが実行されないようにします。
For i = 1 To PropertyRng.Rows.Count
If Atom = PropertyRng.Cells(i, 1) Then
WS.Range("S4") = PropertyRng.Cells(i, 2)
WS.Range("S6") = Atom
WS.Range("S11") = PropertyRng.Cells(i, 3)
WS.Range("S13") = PropertyRng.Cells(i, 4)
WS.Range("S4:S13").Interior.ColorIndex = Selection.Interior.ColorIndex
End If
- この部分のコードは、PropertyRng範囲の各行を順に処理し、選択されたセルの値(Atom)と各行の1列目の値との一致を探します。一致が見つかった場合、PropertyRng範囲の一部の特性がワークシートに表示されます。具体的には、一致した行の2列目・3列目・4列目のデータがS4:S13の範囲に配置されます。さらに、S4:S13の範囲の背景色が、選択されたセルの背景色と同じになるよう設定されます。
If Atom = "" Or IsNumeric(Atom) Then
WS.Range("S4:S13") = ""
WS.Range("S4:S13").Interior.ColorIndex = 2
End If
Next i
- 選択されたセルが空の場合、または数値が含まれている場合は、S4:S13の範囲がクリアされ、背景色が白になります。
注意点
Excelで周期表を作成する際には、以下の点に注意しましょう。
- VLOOKUP関数の参照範囲を正しく指定するようにしてください。
- 元素タイプごとに異なる色を使用しましょう。
- 特性テーブル内のデータが正確であることを必ず確認してください。
よくある質問
1. 周期表における典型元素(代表元素)とは何ですか?
典型元素とは、周期表の1族、2族、および13族〜18族に属する元素のことです。これらの元素は幅広い化学的性質を示し、多くの化学反応に関与します。
2. 希ガスの重要性は何ですか?
18族に属する各元素は希ガスと呼ばれます。希ガスは化学的に不活性であり、安定した電子配置を持つため、化学反応にほとんど参加しません。
3. 同位体とは何ですか?
同位体は、原子核に含まれる陽子の数は同じですが、中性子の数が異なる元素です。そのため、同じ元素のわずかに重い、または軽いバージョンと言えます。
練習用ワークブックのダウンロード
記事を読み進めながら操作を試せるよう、練習用ワークブックをダウンロードできます。
無料の高度なExcel演習問題と解答を入手しよう!
-
Outlookエラー0x8004060cを解消!送受信できなくなったときの対処法5選
Microsoft Outlookでエラーコード0x8004060cが表示され、Outlookクライアントからメールの送受信がまったくできなくなることがあります。原因はPSTファイルです。PSTファイルのサイズが、OfficeやOutlookが処理できる上限を超えてしまったために発生します。PSTファイルの最大容量は20GBです。同じPSTファイルを共有するメールアカウントを多数設定している場合にも、このエラーが発生しやすくなります。この記事では、送受信操作中に発生するOutlookエラー0x8004060cの解決方法を順番に解説します。 送受信操作中に発生するOutlookエラー0x8004
-
Outlookでスペルチェックと文法チェックの設定をカスタマイズする方法
「スペルと文法チェック」は、文章の誤りを修正するための非常に便利な機能です。Word、Excel、PowerPoint、Publisher、そしてOutlookなど、すべてのMicrosoft Officeアプリケーションで利用でき、文書内のスペルミスや不適切な表現を簡単に修正できます。 エラーが検出されたときに表示される修正候補の種類は、以下のとおりです。 スペルミスがある場合は、赤い波線で表示されます。 文法エラーがある場合は、青い二重下線で表示されます。 表現の改善が必要な場合は、紫の下線で表示されます。 Outlookでスペル・文法チェックの設定をカスタマイズする手順 1. Out