「調(キー)」を表示する最初のステップ
これまでの記事で、このシステムの根底に流れる「哲学」を学び、その膨大な和音体系を格納するための「音階データベース」と「入力データベース」の設計図を完成させました。
↓↓↓最初の記事です。まだの方は是非↓↓↓
あえてOFFSET関数で調を導出する
さて、今回からはいよいよ、その設計図に命を吹き込む「数式」の構築に着手します。
その最初のステップは、「どの調の和音なのか」をExcelに正確に認識させること。
具体的には、入力した「調号数」と「m(短調)フラグ」から、対応するドイツ式の「キー名」と「調タイプ(dur/moll)」を自動で表示させる仕組みです。
しかし、ここで一つ重要な点をお伝えします。
一般的なExcelの実務では、このような参照処理にはVLOOKUPやINDEX/MATCH、あるいは最新のXLOOKUP関数が使われるのが常識です。
ですが、今回はあえてOFFSET関数を使用します。
なぜなら、OFFSET関数はその強力さにもかかわらず、使い方が今一つ分からない、その真価が伝わっていない、という声を多く聞くからです。
今回の記事を通して、OFFSET関数の強力な活用例とその背景にある設計思想を深く理解し、あなたのExcelスキルを次のレベルへと飛躍させましょう。
この調の自動導出こそが、今後の複雑なコードネーム生成の「最初のスイッチ」となるのです。

STEP1:OFFSET関数を活かす!調を導出する「参照テーブル」を準備する
OFFSET関数を最大限に活用するためには、その関数が「動きやすい」ように、参照元となるテーブルを戦略的に設計することが重要です。
「調号数」と「キー名」の関係
「調号マッピング表」の構造と作成
まず、Excelに「調号数」と「ドイツ式のキー名」の対応関係を認識させるための「調号マッピング表」を用意します。
OFFSET関数は、この表を“基準”にして動きます。
新しいシート(例: DB_調マップ)を作成し、そのA1セルから、以下の構造でデータを手入力してください。
A列 B列 C列
調号数 dur moll
-10 ces
-9 ges
-8 des
-7 Ces as
-6 Ges es
-5 Des b
-4 As f
-3 Es c
-2 B g
-1 F d
0 C a
1 G e
2 D h
3 A fis
4 E cis
5 H gis
6 Fis dis
7 Cis ais

[重要なこだわり①] なぜ表の並び順が「逆さま」なのか?〜数式の簡潔性を追求する設計思想〜
お気づきでしょうか。
この表は、一般的な五度圏の図などとは異なり、わざと「調号数」が小さい(フラットが多い)調から始まり、下に行くほど大きい(シャープが多い)調になるように配置しています。
これは、後のOFFSET関数の「行オフセット」という引数に、データベースに入力する調号数の値を、計算処理なしでそのまま使えるように設計したものです。
数式の複雑さを軽減するために、参照元となるデータの構造を最適化するという発想。
これこそが、Excelの数式を極めて簡潔かつ美しくし、計算効率を向上させる場合があるという、データ設計の重要な哲学なのです。
「名前の定義」で数式を美しく、分かりやすく
[重要なこだわり②] なぜセルに「名前」を付けるのか?
次に、DB_調マップシートのB12セル(C durを表すCが入力されているセル)に「調C」という名前を定義します。
なぜこの一手間をかけるのでしょうか?
もちろん、=DB_調マップ!B12
のように直接セル番地を指定することも可能です。
しかし、別のシートを参照する数式は =Sheet1!A1
のようになり、長く直感的ではありません。
それだけでなく、数式の意図が分かりづらく、後の修正も面倒になることがあります。
そこで、セルに「調C」のような意味のある名前を付けることで、=OFFSET(調C, ...)
のように数式が簡潔かつ直感的になり、可読性とメンテナンス性が格段に向上します。
これは実務でも大いに役立つ、非常に洗練されたテクニックです。

STEP2:入力フォームの「調」列を設計する!
参照テーブルの準備が整いました。
次に、メインのデータベースシートで、調を指定するための入力部分を整えます。
山本式和音番号データベースへの入力
DB_山本式和音シートに「調」の情報を入力する場所を確保
以前の記事で作成したDB_山本式和音シート(メインの入力データベース)のA列とB列に、以下の列見出しが入力されていることを確認してください。
A列:調号数(手入力)
B列:m(手入力。短調の場合のみ「m」を入力)

このA列とB列に入力した値が、これから作成する数式を動かす「最初の入力」となります。
STEP3:Excelに関数を入力!調号数から「キー名」と「調タイプ」を自動導出!
全ての準備は整いました。
いよいよ、メインデータベースに数式を入力し、調の自動導出システムを完成させます。
OFFSET関数で「キー名」を自動表示
DB_山本式和音シートのC2セル(キー名を表示する最初のセル)に、
以下の数式を入力します。
=OFFSET(調C, A2, N(B2=”m”))
この数式を一つずつ分解して、そのロジックを解説します。
OFFSET(基準, 行数, 列数): 指定した「基準」のセルから、指定した「行数」と「列数」だけ移動した先にあるセルの値を返す、非常に強力な関数です。

調C: OFFSET関数の「基準」です。先ほど名前を定義したDB_調マップシートのB12セル(Cが入力されているセル)を指しています。
A2: OFFSET関数の「行数」引数です。
A2セルに入力された調号数(例: 1)に基づいて、基準セル調Cから何行下に移動するかを決定します。ここで、STEP1で「調号マッピング表」の並びを工夫したことが活きてきます。
調号数と行の移動数が一致するため、複雑な計算なしに、このA2セルの値をそのままオフセット値として使用できるのです。
N(B2=”m”): OFFSET関数の「列数」引数です。
B2セルに [m](短調フラグ)が入力されていれば、
条件式 B2="m"
は TRUE となり、N関数は TRUE を 1 に変換します。
空白(長調)であれば、条件式はFALSEとなり、N関数は0を返します。
これにより、参照表の「dur」列(基準から0列移動)と「moll」列(基準から1列移動)を、フラグ一つで正確に切り替えることができるのです。
入力が完了したら、C2セルのフィルハンドルをドラッグし、数式を下の行へオートフィルでコピーしてください。
A列とB列の値に応じて、C列に正しいキー名が自動で表示されるはずです。

IF関数で「調タイプ」を自動表示
次に、 DB_山本式和音 シートの D2 セル ( 調タイプ を表示する最初のセル)に、以下の数式を入力します。
=IF(B2=”m”,”moll”,”dur”)
これは IF 関数を使った、非常にシンプルな条件分岐です。
B2 セルが “m” と等しければ “moll” を、そうでなければ “dur” を表示します。
ここで注目すべきは、 “moll” や “dur” といった文字列を、別のセルを参照せずに直接 “” で数式内に記述している 点です。
Excelの初心者を卒業したあたりで、あらゆるものをセル参照にしたがる傾向がありますが、このように変更の可能性が低い固定の文字列は、直接記述する方が数式の意図が明確になり可読性が格段に高まる場合があります。
これもまた、実務において非常に有効な判断基準となります。

まとめ:調の自動導出システム完成
今回の記事では、山本式和音番号のシステムにおいて、入力された調号数とmフラグから、
対応するドイツ式キー名と調タイプを自動で導出する、最初の自動化システムを構築しました。
OFFSET関数と「名前の定義」というExcelの強力な機能を活用することで、調を正確に表示できるようになったのです。
これで、最も重要な「調の表示」ができるようになりました。
次回の記事では、いよいよ、和音の各要素(度数や種類など)から構成音を導出し、最終的なコードネームを生成する、さらに複雑で面白い数式の構築に着手します。
お楽しみに。ここからが本番です!