Excelの計算式をプログラムのようにわかりやすく入力する

2018.08.15関数

Excelの計算式は、関数を組み合わせることができますが、関数の数が多くなれば多くなるほど作成にも、その式を読解するにも時間がかかります。
そこで、一般的なプログラムを記述する際に使う、動作ごとにインデントを設定するテクニックを用いて、計算式をわかりやすく入力することができます。

プログラムでのインデント

一般的なプログラムでは、動作ごとにインデントを行います。
例えば、Excelの自動化プログラム言語であるVBAでオリジナルのワークシート関数を作る時は、次のように記載します。
オリジナルのワークシート関数の作り方はこちらの記事に詳しく書いてあります。

VBA

 

プログラム文が動作ごとに改行、インデントされ、見やすくなっています。
動作の内容は、『 もしも、該当セルの値が文字列なら「A」の後に該当セルの値を結合したもの、文字列ではなくて該当セルの値が10以下であれば、該当セル×10の値、そうではなくて該当セルが100以下であれば、該当セル×11の値、そうでなければ、該当セル×12の値を求める 』というjikken関数です。
この説明の日本語は、上記のように1行で書いてあると一目ではどんな動作かわかりません。
そこで、次のような動作ごとにインデントした書き方に変えたらどうでしょうか。

もしも、該当セルの値が文字列なら
  「A」の後に該当セルの値を結合したもの、
文字列ではなくて
  もしも該当セルの値が10以下であれば、
    該当セル×10の値、
  そうではなくて該当セルが100以下であれば、
    該当セル×11の値、
  そうでなければ、該当セル×12の値

 

動作ごとにまとまっていて、もしもの分岐がよくわかります。
実際のプログラムの記載もこのインデントを設定して見やすくするのが常識になっており、後から見直す際にも混乱しないようになっています。

Excel計算式のインデント

実は、Excelの計算式でもこのインデントを使うことができます。
上の動作をExcelのワークシートの計算式で組み立てると次のようになります。
=IF(ISTEXT(A1),"A"&A1,IF(A1<10,A1*10,IF(A1<100,A1*11,A1*12)))
該当セルはセルA1としています。
IF関数が3つ入りますが、一目では動作がわかりません。
そこで、次の操作をします。
数式バーの下の境界線にマウスポインタを合わせて、下にドラッグします。

数式バーを広げる

 

数式バーが広がります。
その都度、計算式の文字数によって大きさは変更しますが、今回は7行くらいに設定しましょう。

数式バーを7行に

今回は、セルB1に計算式を作るので、セルB1をアクティブセルにして、数式バーに入力を始めます。
=IF(ISTEXT(A1),"A"&A1, 」と入力してAlt+Enterのセル内改行を行います。

1行目の入力

すると次の行になりますので、インデントの分、はじめは「=」の記号の分もあるので、半角スペースを4つ入れ、「 IF(A1<10,A1*10, 」と入力してAlt+Enterします。

2行目の入力

 

半角スペースを6つ入れ「 IF(A1<100,A1*11, 」と入力してAlt+Enterします。
半角スペースを8つ入れ「 A1*12 」と入力してAlt+Enterします。
半角スペースを6つ入れ「 ) 」と入力してAlt+Enterします。
半角スペースを4つ入れ「 ) 」と入力してAlt+Enterします。
半角スペースを2つ入れ「 ) 」と入力して、数式確定のためにEnterします。

入力完了

 

ここでのコツは、「,」を行頭に書かないということです。もしも「,」があるのであれば、行末に入れてください。
「,」を行頭に書いて確定すると次のように自動的にインデントが解除されてしまいます。

「,」は行末に

 

上記のインデントされた計算式を更に細かく、次のように入力することもできます。

細分化して入力

 

IF関数の条件と結果を完全に行を分けて入力しているので、よりプログラム文らしくなります。

まとめ

Excelの計算式内でAlt+Enterによるセル内改行を使っても半角空白が入ってもきちんと計算できるのです。今回はその仕組みを使って計算式を綺麗に見せる書き方について紹介しました。
Excelの関数は単独で使うよりも組み合わせて使うことが多いです。どんどん複雑な計算式になってしまいますが、それをできるだけ見やすくするためにも使えるテクニックです。
しかし、これができるということはあまり一般的には知られておらず、数式バーを1行だけ表示していた場合、混乱する元ともなります。この方法を使う時には注意しておきましょう。

Excel業務をもっと「ラク」にするなら

Excel業務を自動化したい!
Excelをデータベース化したい!

 

Back to top