Excelが「メジャーセブン」を見抜く瞬間!複雑な条件分岐を制する AND OR IF
山本式和音番号の構築プロジェクトも、いよいよシステムの核心部である数式の実装へと、その歩みを深く進めています。
↓↓↓最初の記事です。まだの方は是非↓↓↓
前回の記事では、 INDEX と INDIRECT 関数を組み合わせ、和音の骨格となる「ルート音」を導出する、非常に強力な動的参照のロジックを解き明かしました。
↓↓↓前回の記事です↓↓↓
和音変換システムの「表現力」を拡張する
R列の「M」が示す和音の性質
さて、今回は DB_山本式和音 シートの R列に、 “M” という記号を表示させるための論理体系を構築します。
この “M” は、 CM7 や FM7 のように、和音の響きを優雅に、あるいは緊張感のあるものに特徴づける「メジャーセブン」の性質を示す、極めて重要な記号です。

Excelにこの “M” を、適切な和音に対してのみ正確に表示させることで、私たちの和音変換システムの表現力は飛躍的に向上します。
今回のテーマは、「複雑な条件分岐を、いかにシンプルに、そして正確に記述するか」です。
AND 、 OR 、 IF という、Excelを触ったことがある方なら誰もが知る基本的な論理関数。
これらを組み合わせるだけで、驚くほど複雑で精緻な条件分岐を実現できることを、これから証明していきます。
この論理の構築こそが、Excelの真価を発揮する鍵となるのです。
STEP1:論理演算の基本 AND 関数と OR 関数を理解する
複雑な数式を解き明かす前に、まずはその構成部品となる、 AND関数と OR関数の基本的な使い方について、改めて確認しておきましょう。
AND(条件1, 条件2, …) :すべての条件が真の時にのみ真を返す
まず、 AND関数は、Excelで「A、かつ、B」という論理を表現するための関数です。
複数の条件を引数として受け取り、そのすべての条件が TRUE (真)の場合にのみ、結果として TRUE を返します。
一つでも FALSE (偽)の条件があれば、結果は FALSE となります。
例えば、 =AND(A1>10, B1=”テキスト”) という数式は、「 A1 セルの値が10より大きく、かつ、 B1 セルの値が”テキスト“である」場合にのみ TRUE を返します。
複数の条件が同時に成立しているかを厳密に判定する際に、不可欠な関数です。

OR(条件1, 条件2, …) :いずれかの条件が真の時に真を返す
次に、 OR関数は、Excelで「A、または、B」という論理を表現するための関数です。
こちらも複数の条件を引数として受け取りますが、そのいずれか一つでも条件が TRUE (真)であれば、結果として TRUE を返します。
すべての条件が FALSE (偽)の場合にのみ、結果は FALSE となります。
例えば、 =OR(C1=”はい”, D1>100) という数式は、「 C1 セルの値が”はい“であるか、または、 D1 セルの値が100より大きいか」のどちらかを満たしていれば TRUE を返します。
複数の選択肢のうち、いずれか一つでも合致するかを判定する際に用います。

STEP2: IF 関数で条件分岐を制御する
AND と OR が条件を評価する関数であるのに対し、その評価結果に基づいて、具体的な処理を分岐させるのが IF関数です。
IF(条件, 真の場合, 偽の場合) :条件分岐の要
IF関数は、Excelにおける条件分岐の、まさに要(かなめ)となる関数です。
その構造は非常にシンプルで、「指定した条件が TRUE (真)であれば『真の場合』の値を、 FALSE (偽)であれば『偽の場合』の値を返す」という働きをします。
今回の数式では、後ほど解説する AND と OR を組み合わせた複雑な条件式を、この IF関数の第一引数( 条件 )に設定します。
そして、その条件が満たされた場合に “M” を表示し、満たされなかった場合に “” (空白)を表示する、という最終的な決定を下す役割を担います。
この IF関数こそが数式全体の骨格となるのです。

STEP3: “M” を表示させるロジック
基本関数の役割を理解したところで、いよいよ今回の主役である、 R 列の数式を徹底的に解剖していきます。
この一つの数式に、いかに多くの音楽理論とデータ設計思想が凝縮されているか、ご覧ください。

複雑な条件を AND と OR でシンプルに記述する
R列( M フラグ)に記述する数式全体
まず、 DB_山本式和音 シートの R2 セルに、以下の数式を入力します。
=IF(OR(AND(OR(F2=1,F2=4),G2>=7,I2=””,J2=””),AND(F2=6,G2=7,I2=””,J2<>””)),”M“,””)
この数式は、一見すると非常に複雑に見えるかもしれません。
しかし、ご安心ください。
これは、これまで学んだ IF 、 OR 、 AND の3つの関数だけで構成されています。
そして、この数式一つで、定義した長調におけるすべての和音パターンを網羅し、 “M” を表示すべきかどうかを正確に判定します。
OR 関数の外枠:二つの主要条件グループ
この数式の IF関数の中身(論理式)は、全体が大きな OR関数で構成されています。
これは、 “M” が表示される条件が、大きく分けて2つのパターン(条件グループA、条件グループB)に分類できることを意味します。
このどちらかの条件グループが満たされれば、 “M” が表示される、という構造です。
それでは、各条件グループを詳細に見ていきましょう。
AND(OR(F2=1,F2=4),G2>=7,I2=””,J2=””) (条件Aグループの詳細)
最初の AND グループは、「基本的な長調のメジャーセブン和音」を特定するための条件式です。
この AND 関数が TRUE を返すためには、以下の4つの条件がすべて満たされる必要があります。
OR(F2=1,F2=4) : [度] 列である F2 セルが 1 (I度)または 4 (IV度)であること
長調において、I度とIV度の主要三和音は長三和音(メジャー)であり、これらがメジャーセブン( CM7 , FM7 など)になるための基本条件です。
G2>=7 : [7/9] 列である G2 セルが 7 以上( 7 または 9 )であること
和音に7th以上のテンションが付加され、四和音以上になっていることを示します。

I2=”” : [根省] 列である I2 セルが空白であること
根音省略( 8 )によって和音の性質が変わるケースを除外しています。

J2=”” : [借用] 列である J2 セルが空白であること
借用和音ではない、純粋な長調の和音であることを示します。
つまり、この条件Aグループは「I度またはIV度の和音で、7th以上のテンションを持ち、かつ根音省略でも借用和音でもない場合」という、非常に明確な条件を定義しているのです。

AND(F2=6,G2=7,I2=””,J2<>””) (条件Bグループの詳細)
次の AND グループは、一見すると “M” とは結びつきにくい、「特殊な借用和音」を特定するための条件式です。
この AND 関数が TRUE を返すためには、以下の4つの条件がすべて満たされる必要があります。
- F2=6 : [度] 列が 6 (VI度)であること。
- G2=7 : [7/9] 列が 7 (7th)であること。
- I2=”” : [根省] 列が空白であること。
- J2<>”” : [借用] 列が空白ではない、つまり借用和音フラグ 0 が入力されていること。

ここで重要なのは J2<>”” という条件です。
なぜ J2=0 としないのか?
それは、Excelの挙動として、完全に空白のセルを 0 として解釈してしまう場合があるからです。
「借用和音ではない(空白)」と「借用和音である( 0 が入力されている)」を厳密に区別するため、あえて「空白かどうか」で判定しているのです。
これは、システムの堅牢性を高めるための、意図的な数式設計です。
では、なぜ「借用和音のVI度7」が “M” になるのでしょうか?
山本式和音番号の哲学によれば、長調における借用和音は、多くの場合、同主短調から機能を借ります。
例えば、C durにおける「借用和音のVI度7」は、c moll(ハ短調)の和声的短音階におけるVI度7和音、すなわち A♭M7 (構成音: As, C, Es, G)を指します。

この A♭M7 は、その名の通りメジャーセブンスの性質を持つため、 “M” を表示するのが正しい、というわけです。
まとめ:Excelが「和音の響き」を理解する!複雑な条件分岐も自由自在!

今回の記事では、 AND 、 OR 、 IF という、Excelにおける最も基本的な論理関数だけを組み合わせることで、いかに複雑な音楽理論上の条件分岐を、シンプルかつ正確に記述できるかを学びました。
“M” という、たった一文字の記号を表示させるために、和音の度数、テンション、根音省略、借用和音といった複数の要素が、数式の中でどのように連携し、評価されるのか、その精緻なロジックを解き明かしました。
一見すると複雑な数式も、一つ一つの要素を丁寧に分解していけば、その背後にある論理と、山本式和音番号の哲学が見えてきます。
さて、これで和音の「響き」を決定する重要な要素を、Excelが自動で判断できるようになりました。
次回の記事では、いよいよ、これまで導出してきたルート音や “M” フラグ、そしてその他の要素を統合し、具体的なコードネームを組み立てる、次の段階へと進んでいきます。
お楽しみに!
<続く>※現在作成中