Excel 数式と条件付き書式で「歪んで見える画像」の作り方

Excel 数式と条件付き書式で「歪んで見える画像」の作り方 数学・アルゴリズム実験室

はじめに:目が…目がぁ!Excelで「錯視」を作って脳を騙そう

みなさん、突然ですが、こんな絵を見たことはありますか?

Excelの説明画像

じーっと見てください。
なんだか、横のラインがグニャグニャと歪んで見えませんか?

「うわっ、本当に曲がってる!」と思った方、安心してください。

あなたの目は正常ですし、モニターが壊れたわけでもありません。

これは、「カフェウォール錯視(Cafe Wall illusion)」
あるいはその原型となった「ミュンスターバーグ錯視」と呼ばれる視覚効果です。

実際にはすべての線が平行で直線なのに、白と黒のコントラストと、その間にある「グレーの境界線」が脳の処理をバグらせて、傾いているように錯覚させているのです。

さて、ここからが本題です。

「これ、Excelで再現できるんじゃね?」

今回は、この不思議な錯視をExcelシート上で再現するのがミッションです。

もちろん、手作業でセルを塗りつぶしてコピペ…なんて野暮なことはしません。

ここは「Excelで暇つぶし」。数式と条件付き書式だけで美しく描画してみましょう!

本記事では、無料のWeb版Excelを使用して検証を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!

これ何の役に立つの?

「そんなことして何になるの?」という声が聞こえてきそうですが、メリットがありそうです。

  • 論理的思考力の向上:複雑な模様を「0と1の配列」に分解して考える力がつきます。
  • 配列関数の理解:行列を自在に操る、スピル機能の練習に最適です。
  • 条件付き書式の応用:数値を可視化するテクニックが身につきます。
  • 飲み会のネタ:「俺、Excelで錯視作れるんだぜ」と言えます(ウケるかは保証しません)。

ロジックを解析せよ

まずは、サンプルの画像をよーく観察して、Excelで再現可能なロジックに落とし込みましょう。

縦に補助線を引いて考えてみると、ある法則が見えてきます。

Excelの説明画像

・1行目は「白、、白」の繰り返し(0, 1, 1, 0…)
・2行目は「、白、白」の繰り返し(1, 1, 0, 0…)
・3行目以降は、1行目と2行目を交互に繰り返す

つまり、0011」のようなパターンを作り、それを1行ごとにズラして配置すれば良いわけです。

今回は、見やすさを考慮して8行 × 20列の配列を作っていきます。


アプローチ:数式で配列を作る

さあ、ここからがパズルです。

どうやってこの「0と1のまだら模様」を作るか。

Excelの説明画像

今回は、B2セルを起点に入力します。

A列と1行目は余白として空けておくと、後で罫線が見やすいためです。

マニアックなものも含めて、5つのアプローチを用意しました。

アプローチ1:王道!商と余りを利用

まずは、数学的なアプローチです。これが一番汎用的です。

=MOD(QUOTIENT(SEQUENCE(,20)+MOD(SEQUENCE(8,,0),2),2),2)

【数式の解説】

少し複雑に見えますが、順を追って分解すると単純な算数です。

横の連番SEQUENCE(,20)

横に 1, 2, 3, 4… 20と数字が並びます。

縦のズレMOD(SEQUENCE(8,,0),2)

縦に 0, 1, 0, 1… と足し算します。

これにより、奇数行はそのまま、偶数行は「+1」されてスタート地点がズレます。

Excelの説明画像

商で階段を作るQUOTIENT(..., 2)

2で割った「(整数部分)」を求めます。

1, 2, 3, 4 → (÷2) → 0, 1, 1, 2… となり、「2つ連続して同じ数字」が並ぶ階段ができます。

Excelの説明画像

余りで0/1にするMOD(..., 2)

最後に、2で割った余りを出します。

0, 1, 1, 2, 2, 3… → (MOD 2) → 0, 1, 1, 0, 0, 1…
これで、0と1が2回ずつ繰り返されるパターンの完成です!

Excelの説明画像

※Excel 2019以前の場合(レガシー数式)
SEQUENCE関数が使えない環境では、以下の数式を入力し、Ctrl + Shift + Enter(CSE確定)を押してください。
=MOD(QUOTIENT(TRANSPOSE(ROW(INDIRECT("A1:A"&20)))+MOD(ROW(INDIRECT("A1:A"&8))-1,2),2),2)

アプローチ2:MAKEARRAYで現代風に

続いて、最新の関数を使うならこちら。

考え方はアプローチ1と同じですが、LAMBDAを使うことで「行(r)」と「列(c)」の関係が記述しやすくなります。

=MAKEARRAY(8,20,LAMBDA(r,c,MOD(QUOTIENT(c+MOD(r-1,2),2),2)))

Excelの説明画像

アプローチ3:無駄にBITANDを使用(マニアック!)

ここからは趣味の世界です。ビット演算を使ってみましょう。

=BITAND(SEQUENCE(,20)+MOD(SEQUENCE(8,,0),2),2)/2

Excelの説明画像

【BITAND関数の解説】

実務ではあまり見かけない BITAND ですが、これは数値を「2進数(ビット)」で比較する関数です。

例えば、今回比較している「2」は、2進数で「10」です。

これは、「下から2桁目のビットが立っているか?」を判定するフィルターとして機能します。

  • 数値 0 (2進数 00) → 2桁目は0 → 結果 0
  • 数値 1 (2進数 01) → 2桁目は0 → 結果 0
  • 数値 2 (2進数 10) → 2桁目は1 → 結果 2
  • 数値 3 (2進数 11) → 2桁目は1 → 結果 2
Excelの説明画像

このように、0, 0, 2, 2… という結果が返るので、最後に「/2」で割れば 0, 0, 1, 1… となります。

似た関数に BITOR(ビットごとの論理和)や BITXOR(排他的論理和)があり、フラグ管理やネットワークのサブネットマスク計算などで使われますが、こんな遊び方もできるのです!

アプローチ4:長い文字列を作って分解

計算なんて面倒だ!」という力技派へ。文字列操作で解決します。

=MID(REPT("0110",10),SEQUENCE(,20)+MOD(SEQUENCE(8,,0),2),1)*1

まず、"0110"という文字列を10回繰り返して超長い文字列を作ります。

そこからMID関数で必要な場所を切り抜いています。

シンプルで分かりやすいですね。

Excelの説明画像

アプローチ5:SIN関数の波を利用

最後は、数学のロマン!三角関数です。

=1*(SIN((SEQUENCE(,20)+MOD(SEQUENCE(8,,0),2)-1.5)*PI()/2)>0)

波がプラスになっている部分だけを「1」として取り出しています。

Excelで波形処理をしている気分になれます。

Excelの説明画像

仕上げ:条件付き書式で「錯視」を発動させる

数式を入力すると、画面には「0」と「1」の数字が並んでいるはずです。

これを、条件付き書式で「」と「」に塗り分けましょう。

手順1:黒く塗る

まず、数式が入っている範囲(B2:U9)を選択します。

ホーム」タブ →「条件付き書式」→「新しいルール」を選択。

Excelの説明画像

次に、「数式がtureのセルを書式設定する」を選びます。

Excelの説明画像

数式に =B2=1 と入力します。

Excelの説明画像

続いて、「書式」ボタンを押し、フォントの色と塗りつぶしの色を両方とも「黒」にします。

Excelの説明画像

最後に、「完了」を押します。

Excelの説明画像

手順2:白く塗る

  • 同じ範囲(B2:U9)を選択したまま、「新しいルール」を追加します。
  • 数式に =B2=0 と入力します。
  • 「書式」ボタンを押し、フォントの色と塗りつぶしの色を両方とも「白」にします。
  • 「完了」を押します。
Excelの説明画像

これで、画面上には白と黒の四角形だけが並んだ状態になります。

今度は、列の幅や行の高さを調整して、四角形がなんとなく「正方形」に見えるように調整してください。(Web版Excelの方は目分量でOKです!)

Excelの説明画像

最後の魔法:罫線を引く

さて、今のままだと、ただのチェック柄です。まだ歪んで見えませんよね?

錯視を発動させる最後のトリガー、それが「灰色の罫線」です。

B2:U9の範囲を選択して、Ctrl + 1(セルの書式設定)を開きます。

まず、「罫線」タブを選びます。

Excelの説明画像

次に、線のスタイルで「中くらいの太さ」を選びます。

Excelの説明画像

色は、「灰色」(#c8c8c8あたり)を選びます。

Excelの説明画像

最後に、「上」「下」「中(横)」の横方向の線をクリックして適用します。(縦線は引かなくてもOKですが、引いても面白いです)

Excelの説明画像

さあ、シートに戻って画面を見てみてください。

ぐにゃ〜〜〜っ

Excelの説明画像

と、歪んで見えませんか!?

全ての行は真っ直ぐ水平なのに、なぜか交互に傾いているように見えるはずです。

まとめ:自分の目を疑え!

Excelの数式書式設定だけで、脳を騙すことができました。

今回は灰色の罫線を使いましたが、ぜひ遊んでみてください。

  • 罫線を「黒」にしたらどうなる?(たぶん錯視が消えます)
  • 罫線を「白」にしたら?
  • 罫線を「赤」や「青」にしたら?
  • 罫線を極太にしたら?

「どんな条件のときに脳がバグるのか」を探求するのも、また一興です。
それでは、よきExcelライフを!

Excelの説明画像

タイトルとURLをコピーしました