本記事では、Excel 2021を使用して検証および画像の作成を行っています。
関数だけで作る音階表
「Excelで音楽理論の表を作る…?なんだか難しそうだし、一つずつ手で入力した方が速くない…?」
そう思ったあなた、その気持ち、よーく分かります!
確かに、音楽とExcel、一見すると、全く別の世界の住人に見えますよね。
でも、ちょっと待ってください!
この二つが交わる点にこそ、知的好奇心を最高に刺激する、面白くて奥深い「暇つぶし」が眠っているんです。
今回のテーマは、Excelの関数だけを使って、音楽の全ての調(キー)の「音階表」を、ほぼ自動で生成するという、壮大な挑戦です。
このような表を作成します。

そして、その過程で登場するのが…これです!
=INDIRECT(INDEX(INDIRECT(…)))
この一見、呪文のような数式を、私たちはこれから完全に解き明かしていきます。

今回の目的は、単に表を作ることではありません!
数式を工夫するだけでなく、「参照される側のデータ構造を工夫する」ことで、いかに複雑な処理をシンプルに、そして美しく実現できるか、その思考プロセスを体験することです!
この関数パズルを通して、あなたのExcelスキルが、また一つ、新たな次元の扉を開けるかもしれませんよ。
サンプルファイルを用意しています。ご自由にダウンロードどうぞ。(onkai.xlsx 25KB)
STEP1:設計思想 – なぜ「五度圏」の並びを使うのか?
効率的な自動化を実現するためには、その土台となる「データ構造の設計」が極めて重要です。
今回は、音楽理論の「五度圏」という概念を利用して、Excelに最適化されたデータを作成します。
音楽理論の基本「五度圏」とは?
「五度圏(サークル・オブ・フィフス)」と聞くと、難しく感じるかもしれませんね。
でも、ご安心ください。非常にシンプルな規則です。
これは、ある音から完全5度上の音へ、そしてまたその音から完全5度上の音へ…と、音をぐるっと円のように並べたものです。

面白いことに、この順番で調を並べていくと、調号のシャープ(♯)が規則的に1つずつ増えていく、という性質があるのです。
逆に、完全5度下(または完全4度上)に並べると、フラット(♭)が1つずつ増えていきます。
なぜC,D,E順ではダメなのか?
「理屈は分かったけど、やっぱり普通にC,D,E,F,G…の順番の方が、人間には分かりやすいのでは?」
その通り!人間にとっては、その方が直感的です。
しかし、Excelに「自動生成」させることを考えると、話は変わってきます。
もしC,D,E…の順で音階を作ると、例えばG dur(ト長調)の音階を作った後、次にA dur(イ長調)の音階を作ろうとしても、両者の音の変化の関係性が複雑で、単純な数式で変換できません。
一方で、五度圏の並びを使えば、隣り合う調の関係は常に「シャープが1つ増える/減る」か「フラットが1つ増える/減る」という、極めてシンプルな規則性で繋がります。
この規則性を利用することで、Excelは全ての調の音階を、一つの連続したロジックで効率的に生成できるのです。
STEP2:準備① – 横一列の「マスター音階」を数式で錬成する
それでは、実際にExcelで作業を始めましょう。
まずは、全ての音階の元となる「マスター音階」を、横一列に作成します。
基準となる7音の入力
まず、Excelシートの適当な行(例えば2行目)に、基準となる7つの音を、五度圏の順で入力します。
F C G D A E B

左右に長いデータになるので、W列から始めるとうまく収まります。
数式で無限に音を拡張!
次に、この7音を元に、シャープ系とフラット系の音を数式で自動生成していきます。
例えば、シャープ系の音は、元の音に”♯“という文字を連結するだけです。
先ほど入力したBの右隣のセルに、以下の数式を入力してみましょう。
(例:AC2セルにBが入力されている場合、その7つ左のW2セルを参照)
=W2&”♯”
この数式を右方向にオートフィルでコピーすれば、F♯, C♯, G♯… と、シャープ系の音が自動で生成されます。

ダブルシャープ(x)、フラット(♭)、ダブルフラット(♭♭)も、同様のロジックで簡単に拡張できますね。

STEP3:準備② – 「個別音階表」と「ディレクトリ表」を構築する
横一列のマスター音階が完成したら、次はその部品を使って、立体的なデータベースを組み立てていきます。
以下のように、縦方向に音階が並ぶよう配置していきます。
表の一番上には、Bflat_ ,F_,Csharp_などと、調の名前をつけます。
また、短調はA_mのように最後に[m]をつけます。

縦方向に、C D E F G A B Cと並ぶように、コピーアンドペーストを繰り返します。
1. 33調の「個別音階表」を作成する
まず、マスター音階を元に、データベースの基礎データとなる、合計33調(長調15、短調18)それぞれの個別の音階表(2オクターブ分)を作成します。
短調の音階は、音楽理論に基づき「和声的短音階」で統一します。
なぜ、2オクターブ分も作るのか?
将来的に、この音階表を使用して和音の構成音を表示させるロジックを組むためです。
9thの和音の場合、根音と9度音は1オクターブ以上離れています。そのため、余裕を持って2オクターブ分作成します。
以下は、C dur(C メジャー)のドッペルドミナント9th(D9)の構成音を表示する数式。
1オクターブでは足りないことが分かりますね。

また、短調だけ18の調を扱う理由については、以下の記事で解説しています。
長調の表を完成させます。

続いて、短調の表も完成させます。

2. 司令塔となる「ディレクトリ表」を作成する
次に、後の数式に対する「司令塔」の役割を果たす、2種類の「ディレクトリ表」(長調用・短調用)を、同じシートの別の場所に作成します。
この表には、「どの調の、どの度数が、どの個別音階表を参照すべきか」という、重要な情報が定義されます。

【重要】短調のII度・III度を空白にする理由
ここで、短調のディレクトリ表を見ると、II度とIII度の列が空白になっていることに気づくでしょう。
和声的短音階に基づくと、短調のII度の和音は「減三和音」、III度の和音は「増三和音」になります。これらの和音が主和音になる調は存在しないので、空白にしています。
数値は調号を表しています。マイナスは♭、プラスは♯です。
AU列には[flat7_major]などの、Excelの名前の定義で使用可能な文字を使用します。
例えば、以下の数式などでAT列の数値を利用して一気に作る方法もあります。
あるいは15行しかないので手入力でも問題ありません。
=IFS(AT3>0,”sharp”&AT3&”_major”,AT3=0,”none_major”,AT3<0,”flat”&ABS(AT3)&”_major”,TRUE,”-“)

STEP4:準備③ – 「名前の定義」でExcelに関数を覚えさせる
こだわり③:なぜC_?互換性という名の「保険」
データベースの部品が揃ったら、それぞれに「名前」を付けていきます。
例えば、C durの個別音階表には[C_]、a mollには[A_m]といった名前を付けます。
「なぜ、わざわざCsharp_なんて、まわりくどい名前にするの?普通にC♯でいいじゃない?」
これは、将来的な互換性を最大限に考慮し、どんな環境でもこのシステムが安定して動作するための、非常に重要な「保険」なのです。
♯や♭といった特殊記号は、Excelのバージョンや、Excel以外の表計算ソフトでファイルを開いた際に、文字化けしたり、数式で正しく認識されなかったりするリスクを常に伴います。
意図的に、アルファベットと数字、そしてアンダースコア “_”だけで名前を構成しておくことで、そういったトラブルを未然に防ぎ、システムの堅牢性を高めている、というわけです。
プロの技!「選択範囲から作成」で一括命名
33個もの音階表、そしてディレクトリ表の各行、これら全てに一つずつ「名前の定義」を行うのは、大変な手間ですよね。
しかし、ご安心ください。Excelには、このような作業を一瞬で完了させる、非常に強力な機能「選択範囲から作成」が用意されています。
名前を付けたい範囲全体、つまり見出しを含んだ全てのデータを選択します。

リボンの「数式」タブ → 「定義された名前」グループの中にある「選択範囲から作成」をクリックします。
ダイアログボックスで、名前に使いたい見出しの位置(「上端行」や「左端列」)にのみチェックを入れ、「OK」をクリックします。
この場合は「上端行」を選択します。

たったこれだけで、Excelは見出しのテキストを、そのデータ範囲の名前として、一括で定義してくれます。これは覚えておくと、実務でものすごく役立つテクニックですよ!
STEP5:実践編 – 参照数式
さあ、全ての部品と準備が整いました!いよいよ、これらの部品を操る、2つの関数とその数式を紹介します。
主役の関数:INDEXとINDIRECT
INDEX関数は、指定した「範囲」の中から、「何行目の、何列目」にある値をピンポイントで取り出してくれる関数です。
INDIRECT関数は、”C_”のような単なる「文字列」を、Excelが認識できる「C_という名前のセル範囲」に変換してしまう、というユニークな特殊能力を持っています。

完成形:=INDIRECT(INDEX(INDIRECT(…)))
以下の画像のように、ローマ数字でIからVIまで入力しておきます。調や和音ではローマ数字表記が一般的です。

背景が黄色の部分に調の名前を入れると、その調に対するI調、II調、…、VI調と表示されるようにしたいのです。
最終的に、統合音階表のセルに入力する数式がこちらです。(※セル番地は実際のレイアウトに合わせて調整)
=INDIRECT(INDEX(INDIRECT($AU25),ARABIC(AV$24)))
それでは、この関数の三重奏が、どのように連携して美しいハーモニーを奏でるのか、内側から順に解き明かしていきましょう。
INDIRECT($AU25)
まず、一番内側のINDIRECT関数が、$AU25セルに入力された”none_major”という文字列を、Excelが認識できる「none_majorという名前のセル範囲」(ディレクトリ行)への参照に変換します。

INDEX(…, [列番号])
次に、INDEX関数が、前のステップで得られた「none_majorの範囲」の中から、指定された列番号(例: II度なら2番目の列)にある「個別音階表の名前(例: “D_m”という文字列)」を抜き出します。

INDIRECT(…) (外側)
最後に、外側のINDIRECT関数が、前のステップで得られた”D_m“という文字列を、再びExcelが認識できる「D_mという名前のセル範囲」(Dマイナーの実際の音階表)への参照に変換し、その値をセルに表示します。

まとめ:Excelに関数を「演奏」させる、データ設計の力
今回の記事では、INDIRECTとINDEXを三重に組み合わせることで、複雑な音楽の音階データを自動生成する、非常に高度なシステムを構築しました。
数式を支える、優れたデータ構造
この一見、複雑怪奇に見える数式が、実は極めて合理的に機能していることをご理解いただけたかと思います。
そして、その機能を実現させているのが、数式そのものの複雑さ以上に、背後にある「データ構造の設計」であることにも、お気づきいただけたのではないでしょうか。
- 5度圏で音を配列する、という音楽理論に基づいた工夫
- 将来の数式を簡単にするための、2オクターブ分のデータ確保
- 互換性を考慮した、♯ ♭ を使わない「名前の定義」
- 参照の「司令塔」となる、中間的なディレクトリ表の設置
これらの緻密な準備とデータ設計こそが、最終的な数式を簡潔に、そして強力に機能させるための、真の鍵なのです。
この考え方は、音楽だけでなく、あらゆる複雑なデータをExcelで扱う際に、あなたの大きな武器となるはずです。
あなたのExcelの「暇つぶし」が、また一つ、深い次元へと進んだことを、心から願っています。