Excel縛りプレイ!関数のみで「i」を生成せよ

Excel縛りプレイ!関数のみで「i」を生成せよ Excel

本記事では、Excel 2021を使用して検証および画像の作成を行っています。

Excelの関数のみで「i」を作り出せ!超絶技巧の関数パズル 第2弾!

「Excelでアルファベットの『i』?…普通にキーボードで打てばいいのでは?」

そう思ったあなた、もちろんそれが一番早いです!

でも、ここは「Excelで暇つぶし」をするブログ。

ただキーボードを叩くだけでは、私たちの知的好奇心は満たされませんよね?

前回の「-1」を作り出す難問パズルに続き、今回はExcelに、厳しい「縛り」を与えた上で、アルファベット小文字の「i」という、たった一文字の生成に挑戦します。

↓↓↓前回の記事はこちら↓↓↓

「え、またあの厳しいルールでやるの!?」

その通り!
今回のルールも前回と同様、非常に厳しい!

さあ、あなたのExcelの発想力の限界に、一緒に挑んでみましょう。

今回のミッション

ゴール

目指すゴール: Excelのワークシート関数のみを使い、単一のセルにアルファベット小文字の「i」という文字を表示させる。

ルール:さらに厳格になった関数縛り!

  1. 使用できるのはワークシート関数のみ。
  2. 数式内に数値・文字列・演算子などの記号の直接記述は一切禁止。
    (例: 5, "A", "+", "&" などの直接入力は全てNG!)
  3. 同一関数の複数回使用の禁止。
    (例: =SUM(N(TRUE),N(TRUE)) のような使用は不可)
  4. 1つの関数に指定できる引数は最大2つまで。
    (例: =SEQUENCE(1,2,3) のような3引数の使用は不可)
  5. ROW関数・COLUMN関数の使用禁止!
  6. 関数の入れ子(ネスト)構造の使用は自由。
  7. どのExcelバージョンの関数でも使用可能。

方法1:複素数の虚数単位”i”を利用する

考えかた

まずご紹介するのは、数学の定義に立ち返った、最もエレガントな正攻法です。

数学の世界には、「i」という特別な文字が登場しますよね?

そう、虚数単位の「i」です!Excelには、この複素数を扱うための関数が用意されています。

これを使わない手はありません。

数式と解説

数式 ① =COMPLEX(SUM(FALSE),N(TRUE))

Excel画像

COMPLEX関数を知っていれば、最もシンプルに「i」を導き出せるのがこの方法です。

計算過程と関数の役割

  • SUM(FALSE) = 0
    SUM(数値1, [数値2]): 引数を合計します。FALSEは0として扱われます。これが複素数の「実部」になります。
  • N(TRUE) = 1
    N(値): 値を数値に変換します。TRUEは1になります。これが複素数の「虚部」になります。
  • COMPLEX(0, 1) = “i”
    COMPLEX(実数, 虚数): 実部0、虚部1の複素数、つまり虚数単位そのものを”i”という文字列として返します。

方法2:文字列操作を利用する

考えかた

次にご紹介するのは、Excelの文字コード機能を利用した、まさに「力技」のアプローチです。

ExcelのUNICHAR関数を使えば、文字コード「105」が、アルファベット小文字の「i」に対応していることが分かります。

問題は、ルール違反せずに、どうやって「105」という数値を作り出すか…。

ここにExcel関数の組み合わせの妙が光ります。

数式と解説

数式 ② =UNICHAR(SUM(SEQUENCE(DAY(YEAR(N(TRUE))))))

Excel画像

1から14までの整数を全て足すと105になる」という、そろばん経験者ならピンとくるかもしれない性質を利用した、驚きの数式です!

1+2+3+…+14=105

計算過程と関数の役割

  • YEAR(N(TRUE)) = 1900
    YEAR(シリアル値): 日付のシリアル値から「年」を返します。TRUEは1(1900年1月1日)です。
  • DAY(1900) = 14
    DAY(シリアル値): シリアル値から「日」を返します。1900は1905年3月14日として解釈されます。
  • SEQUENCE(14) = {1;2;3;…;14}
    SEQUENCE(行数): 1から指定した行数までの連続した数値の配列を生成します。
  • SUM({1;2;3;...;14}) = 105
    (SUM関数は既に登場しましたね!)
  • UNICHAR(105) = “i”
    UNICHAR(数値): 指定された数値に対応するUnicode文字を返します。105番が「i」です。

方法3:ローマ数字を利用する

考えかた

Excelには、アラビア数字をローマ数字に変換する、その名もROMAN関数というものが存在します。

ローマ数字といえば、「I, V, X, L, C, D, M」…。おや?見慣れたアルファベットがいますね!

そうです、アラビア数字の「1」は、ローマ数字では大文字の「I」になります。

これを利用しない手はありません!

数式と解説

数式 ③ =LOWER(ROMAN(N(TRUE)))

Excel画像

これもまた、非常にシンプルで美しい解答です。

計算過程と関数の役割

  • N(TRUE) = 1
  • ROMAN(1) = “I”
    ROMAN(数値): アラビア数字をローマ数字の文字列に変換します。
  • LOWER("I") = “i”
    LOWER(文字列): 文字列に含まれるアルファベットをすべて小文字に変換します。

方法4:セル番地を利用する

考えかた

最後にご紹介するのは、Excelの列番号がアルファベットである、という特性を利用した、まさに「ハック」と呼ぶにふさわしいアプローチです。

Excelの9番目の列は「I列」ですよね?

つまり、ADDRESS関数で「9列目」を指定するセル番地(例えば $I$1)の文字列を作り出し、そこから「I」という文字だけを抽出すれば良いのです!

「でも、文字の途中から抜き出すMID関数は、引数が3つだからルール違反じゃ…?」

その通り!そこで、LEFT関数とRIGHT関数を組み合わせることで、この制約を回避します。

数式と解説

数式 ④ =LOWER(RIGHT(LEFT(ADDRESS(N(TRUE),COUNT(MUNIT(INT(PI())))),EVEN(RAND()))))

Excel画像

複雑に見えますが、やっていることは「9」という数値を作り出し、ADDRESS関数で「I」の文字を手に入れ、LEFTRIGHTで抽出しているだけです。

計算過程と関数の役割

  • INT(PI()) = 3
    INT(数値): 数値を整数にします。
  • MUNIT(3) = {1,0,0;0,1,0;0,0,1}
    MUNIT(次元): 指定した次元の単位行列を生成します。
  • COUNT({1,0,0;0,1,0;0,0,1}) = 9
    COUNT(値1, [値2]): 範囲に含まれる数値の個数を返します。
  • ADDRESS(N(TRUE), 9) = “$I$1”
    ADDRESS(行番号, 列番号): 指定した行番号と列番号に対応するセル番地を文字列として返します。
  • LEFT("$I$1",2) = “$I
    LEFT(文字列, [文字数]): 文字列の先頭から指定した数の文字を返します。ここでは「2」を指定していますが、文字数を省略すると1になります。
  • EVEN(RAND()) = 2
  • RIGHT("$I") = “I”
    RIGHT(文字列, [文字数]): 文字列の末尾から指定した数の文字を返します。文字数を省略すると1になります。
  • LOWER("I") = “i”

MUNIT関数は以下のように表示されます。COUNT関数と組み合わせることで2乗の計算をしています。

Excel画像

まとめ

今回は、「関数のみで、数値や演算子を使わずに『i』を作る」という、非常に厳しい縛りプレイに挑戦しました。

複素数、文字列操作、ローマ数字、そしてセル番地…。

全く異なる4つのアプローチから、Excel関数の意外な特性を利用して、同じゴールにたどり着けることを体験できたのではないでしょうか。

今回のチャレンジも、実務では全く役に立たない、実用性0の挑戦でした。
しかし、論理的思考能力数式の組み合わせの「引き出し」を増やすには、最高の暇つぶしになったのではないでしょうか。

普段何気なく使っている関数にも、実は奥深い世界が広がっています。

たまにはこんな「関数パズル」に挑戦してみるのも、あなたのExcelライフをより豊かにする、最高に楽しいスパイスになるはずです!

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