はじめに:Excelがコードネームを「完成」させる瞬間
山本式和音番号を巡る、長く、そして知的な探求の旅も、いよいよ一つの大きなクライマックスを迎えます。
↓↓↓最初の記事です。まだの方は是非↓↓↓
これまでの16回にわたる記事で、このシステムの根底に流れる「哲学」を解説し、膨大な「音階データベース」を準備し、そして和音を構成する無数の要素(ルート音、M, m, dim, aug, 7, 9, sus4, 括弧、変化記号、オンコードなど)を、Excelの各列に一つずつ導出する、精緻な論理体系を構築してきました。

和音の「役割」から「コードネーム」への最終変換
今回の目的は、これまでに導出した全てのパーツを、最終的に一つの美しいコードネームとして連結・完成させること。
具体的には、DB_山本式和音シートのAL列に、和音の最終的なコードネームを自動で表示させる仕組みを、完全に構築します。

この最終的なコードネーム生成こそが、山本式和音番号システムの「脳」が、その思考の結果を、私たちが理解できる「言葉」として具現化する瞬間です。
これまでの全ての努力が、この一つのセルに結実します。
さあ、壮大なプロジェクトの集大成を、その目でご覧ください。
今回の解説で使用するExcelファイルは、ダウンロードして適宜使用できます。学習用などにぜひご活用ください。
harmony017-2.xlsx (225KB)
STEP1:最終コードネーム生成の「司令塔」!IFS関数で表示を制御せよ!
まず、最終的なコードネームの表示を制御する、AL列の数式から解説します。
この数式は、データベース全体の表示ルールを司る、いわば「司令塔」の役割を果たします。
優先順位を明確にするIFS関数の力
AL列(コード)に記述する数式全体
DB_山本式和音シートのAL2セルに、以下の数式を入力します。
=IFS(M2=”x“,“”,AK2<>“”,AK2,TRUE,TEXTJOIN(“”,TRUE,Q2:AJ2))
この数式は、Excel 2019以降で導入されたIFS関数を司令塔として、複数の条件を優先順位の高い順に評価し、最終的なコードネームを決定する仕組みです。
IFS関数の条件グループの役割分担
IFS関数は、記述された条件を上から(左から)順番に評価し、最初にTRUEになった条件に対応する値を返して、その時点で処理を終了します。
これにより、IFの入れ子(ネスト)よりも遥かにシンプルに、明確な優先順位を設定できるのです。
この数式には、3つの優先順位が設定されています。
条件1(最優先):M2=”x”の場合の処理(「使用しない和音」の除外)
- 条件: M2=”x”
M列(予備1)に”x“(使用しない和音フラグ)が入力されているかを判定します。 - 対応する値: “” (空の文字列)
【解説】
データベース上で「使用しない」と明示的にマークされた和音(第5回記事で解説した選別哲学に基づく)は、最終的なコードネームを表示せず、空白にします。

これが最優先されることで、以降の条件(直接入力や自動生成)がどうであれ、不要な和音がコードネームとして出力されることを完全に防ぎます。
システムの設計思想が、最終表示にまで貫かれている証です。
条件2(第2優先):AK2<>””の場合の処理(「直接入力」の優先)
- 条件: AK2<>””
AK列(直接入力)が空欄ではないかを判定します。 - 対応する値: AK2 (AK列の値をそのまま採用)
【解説】
次に優先されるのが、「直接入力」されたコードネームです。
数式による自動生成が困難な極めて特殊な和音(例: 増6和音の注釈付き表記など)や、ユーザーが意図的に表記を上書き(オーバーライド)したい場合に対応します。
この「直接入力」を自動生成よりも優先させることで、システムの柔軟性と実用性は飛躍的に向上します。

条件3(通常処理):TRUEの場合の処理(「標準的な自動生成」)
- 条件: TRUE
上記のどの条件もTRUEでなかった場合、このTRUEは無条件でTRUEとなるため、最後の砦として必ず実行されます。 - 対応する値: TEXTJOIN(“”,TRUE,Q2:AJ2)
【解説】
これが、M列が”x”でもなく、AK列に直接入力もされていない場合の、「標準的なコードネームの自動生成」ロジックです。
ここで登場するのがTEXTJOIN関数です。
この関数は、Q列からAJ列までの範囲にある全ての値を、指定した区切り文字(今回は””なので区切り文字なし)で連結します。
重要なのは、第二引数のTRUEです。これにより、範囲内の空白のセルは無視して連結されます。
これまでの記事で導出してきた、ルート音、M, m, dim, aug, 7, 9, sus4, 括弧、変化記号、オンコードなど、全てのパーツがここで一つに統合され、最終的なコードネームとして完成するのです。

STEP2:データベースの「見せ方」を最適化!フィルター機能で不要な行を非表示に!
最終的なコードネームがAL列に生成されました。
しかし、このままでは「使用しない和音」の行が空白として表示され、少し見づらいかもしれません。
そこで、Excelの基本的な機能である「フィルター」を使い、このデータベースの可読性を高めます。
必要な情報だけをスマートに表示する
AL列の空白行を非表示にするフィルター機能の活用
M列が”x“であるために空白になっている不要な行を非表示にし、実際にコードネームが生成されている行だけを表示することで、完成した「和音リスト」として活用できます。
手順は非常に簡単です。
まず、DB_山本式和音シートのヘッダー行(1行目)を選択します。
次に、「データ」タブの中にある「並べ替えとフィルター」グループから、「フィルター」をクリックします。すると、各列の見出しに▼ボタンが表示されます。

最後に、AL列のフィルターボタン(▼)をクリックし、表示されるリストから「(空白セル)」のチェックボックスを外して「OK」をクリックします。

たったこれだけで、空白の行が非表示になり、使用する和音のリストだけをスッキリと眺めることができます。

STEP3:山本式和音番号変換システムの動作を検証する!
さて、作り上げたシステムは、正しく機能しているのでしょうか。
これまでの記事で解説した、特に複雑なロジックを持つ和音番号を実際に検証し、その精度を確認してみましょう。
複雑な和音で「機能」と「コードネーム」が一致するかをチェック!
厳選した和音番号でシステムの働きを確認する
DB_山本式和音シートで、以下の山本式和音番号が、意図した通りのコードネームに変換されているか確認してみてください。
属9の借用和音: 590 → G7(♭9)

V/Vの9の和音、根音省略、借用和音: 559180 → F#dim7

付加46の和音: 446 → Bm7(♭5)/F ※+46

これらの複雑な和音が、AL列で正しく表示されていれば、システムは完璧に機能していると言えるでしょう。
まとめ:Excelがコードネームを「完成」させた!壮大なプロジェクトの集大成!
今回の記事で、私たちは山本式和音番号システムにおける、最終的なコードネーム自動生成の仕組みを、ついに完成させました。
IFS関数による明確な優先順位制御と、TEXTJOINによる効率的な要素の連結。
これで、山本式和音番号システムは、入力した和音番号を、正確なコードネームへと変換することができるようになりました。
さて、今回のデータベースは長調のみの対応でした。
次回の記事では、いよいよ、短調(moll)の和音をデータベースに登録する作業に移ります。
そして、長調と短調の両方に対応する、完全な山本式和音番号変換システムの完成を目指します。
お楽しみに!
<続く>※現在作成中