Excel 「1」が連続する配列を数式で生成する10の方法

Excel 1が連続する配列を数式で生成する10の方法 Excel

はじめに:ただの「1」、されど「1」。その作り方、いくつ知っていますか?

Excelで数式を組んでいると、時々、こんな配列が欲しくなる瞬間、ありませんか?

={1;1;1;1;1}

そう、ただひたすらに「1」が縦に並んだ配列です。

Excelの説明画像

例えば、行列計算を行うMMULT関数などで、特定の行や列だけを合計したい時に、この「1だけの配列」が、まるで魔法の杖のように活躍することがあります。

「え、そんなの {1;1;1;1;1} って直接書けばいいじゃない?」

そう思ったあなた、大正解!

多くの場合、それが最も手っ取り早い方法です。

でも、ちょっと待ってください!

もし、もっとたくさんの「1」が必要になったら?もし、この配列を「数式」だけで、スマートに生成できたとしたら?

Excel 97よりも前の、遥か昔から使える超古典的なテクニックから、最新のLAMBDA関数を使った方法まで。

Excelの進化の歴史を辿りながら、それぞれの関数の個性的な挙動を探求していきますよ!

目的は、

配列を生成するための多様なアプローチを知り、関数の本質的な理解を深めること!

なぜ、便利な新関数があるのに、わざわざ古い関数で苦労するのか?

それは、基本的な関数の組み合わせの中にこそ、ロジックの本質が隠されているからです。

新関数は便利ですが、その内部処理はブラックボックスになりがち。根源を知ることで、応用力は格段にアップします!

この関数パズルを通して、あなたの「関数の引き出し」が、さらに豊かになるかもしれません!

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

準備:ゴールを確認する

何事も、まずは準備から。まっさらなシートを用意してください。

私たちのゴールは、例えばA1セルに数式を一つ入力するだけで、A1からA5セルにかけて、以下のように「1」が表示されることです。

Excelの説明画像

さあ、このシンプルなゴールに向かって、10の異なる道を冒険しましょう!


10のアプローチで、「1の配列」を攻略せよ!

今回は、Excelの古いバージョンでも動作する可能性が高い順に、数式を紹介していきます。

アプローチ1:配列定数 – 最も原始的な方法

【動作確認バージョン:Excel 97 以前】

考えかた

関数すら使わない、最も直接的な方法です。配列そのものを、波括弧{}を使って直接書き込んでしまいます。

数式と解説

={1;1;1;1;1}

{...}: これは「配列定数」と呼ばれるもので、配列を直接数式内に記述する方法です。

; (セミコロン): 配列定数の中で、セミコロンは「次の行へ」を意味します。これにより、縦一列の配列が生成されます。(ちなみにカンマ,は「次の列へ」を意味します)

Excelの説明画像

シンプルですが、100個の「1」が必要になったら、書くのが大変そうですね(笑)。

アプローチ2:ROW + INDIRECT + べき乗 – 古典的テクニックの王道

【動作確認バージョン:Excel 97 以前】

考えかた

Excelの古き良き時代から伝わる、連番生成の定番テクニックを応用します。

まず連番を作り、それを「0乗」することで、すべて「1」に変えてしまいます。

数式と解説

=ROW(INDIRECT("A1:A"&ROWS(A1:A5)))^0

1. ROWS(A1:A5): まず、ROWS関数で、対象範囲(今回はA1:A5)の行数「5」を計算します。

これにより、配列のサイズが変わっても数式が対応できるようになります。

2. "A1:A" & ...: 計算した行数「5」と文字列を連結し、"A1:A5" という文字列を作ります。

3. INDIRECT(...): 次に、INDIRECT関数が、この文字列 “A1:A5” を本物のセル参照 A1:A5 に変換します。

4. ROW(...): そして、ROW関数が、その参照範囲 A1:A5 の各行の行番号を取得し、{1;2;3;4;5} という連番配列を生成します。

5. ... ^ 0: 最後に、この連番配列の各要素を「0乗」します。

数学のルールで、「0以外のどんな数も0乗すれば1になる」ので、結果として {1;1;1;1;1} という配列が生まれるのです!2025年の現代だからこそ、覚えておきたい美しい技ですね。

Excelの説明画像

アプローチ3:OFFSET + ISERROR + ISLOGICAL – IFERRORなき時代の知恵

【動作確認バージョン:Excel 97 以前】

考えかた

まだIFERROR関数が存在しなかったExcel 97以前の時代。

当時の情報系関数(IS系)と、古くから存在するOFFSET関数を組み合わせて、「1」の配列を作り出す猛者がいました。(多分いません。私だけです…)

数式と解説

=ISLOGICAL(ISERROR(OFFSET(A1,0,0,5)))*1

1. OFFSET(A1,0,0,5): まず、OFFSET関数で、A1セルを起点に、高さ5、幅1のセル範囲への参照(メモリ上の仮想的な参照)を作ります。

Excelの説明画像

2. ISERROR(...): 次に、ISERROR関数で、この参照範囲がエラーかどうかを判定します。有効な参照なので、結果は {FALSE;FALSE;FALSE;FALSE;FALSE} という配列になります。

仮にエラーがあってもTRUEを返します。

Excelの説明画像

3. ISLOGICAL(...): さらに、ISLOGICAL関数で、この結果が論理値(TRUE/FALSE)かどうかを判定します。すべて論理値なので、{TRUE;TRUE;TRUE;TRUE;TRUE} という配列に変わります。

Excelの説明画像

4. ... * 1: 最後に、このTRUE/FALSE配列に1を掛けることで、TRUEが「1」に変換され、目的の配列が完成します。

Excelの説明画像

アプローチ4:IFERROR – エラー処理の逆用

【動作確認バージョン:Excel 2007 以降】

考えかた

Excel 2007で登場したIFERROR関数。本来はエラーを別の値に置き換えるための関数ですが、これを逆用して「1」の配列を作ります。

数式と解説

=IFERROR(A1:A5=A1:A5,1)*1

1. A1:A5=A1:A5: まず、A1:A5の範囲(中身は空でもOK)と自分自身を比較します。

結果は {TRUE;TRUE;TRUE;TRUE;TRUE} という配列になります。

ただし、A1:A5の範囲にエラーがあった場合、エラー値が返ります。

Excelの説明画像

2. IFERROR(..., 1): IFERROR関数は、第1引数がエラーでなければその値を、エラーであれば第2引数の値を返します。

Excelの説明画像

3. ... * 1: 最後に1を掛けて、TRUEを「1」に変換します。

Excelの説明画像

アプローチ5:FACT + INDEX + MUNIT – 数学的トリック

【動作確認バージョン:Excel 2013 以降】

考えかた

Excel 2013で導入された行列関数MUNITと、階乗を計算するFACT関数を組み合わせた、非常に数学的で面白いアプローチです。

数式と解説

=FACT(INDEX(MUNIT(5),,1))

1. MUNIT(5): まず、MUNIT関数で、5×5の「単位行列」(対角線上が1で、他は0の行列)を生成します。

Excelの説明画像

2. INDEX(..., ,1): 次に、INDEX関数で、この単位行列の「1列目」だけを抜き出します。結果は {1;0;0;0;0} という配列になります。

Excelの説明画像

3. FACT(...): 最後に、この配列の各要素の階乗をFACT関数で計算します。

Excelの説明画像

数学のルールで、「1の階乗(1!)は1」、「0の階乗(0!)も1」なので、結果として {1;1;1;1;1} という配列が生まれるのです!面白いですよね!

アプローチ6:SEQUENCE – 現代のスタンダード

【動作確認バージョン:Excel 2021 以降】

考えかた

Excel 2021以降(Microsoft 365含む)で導入されたSEQUENCE関数。

連番生成の決定版ですが、引数を工夫すれば「1だけの配列」も簡単に作れます。

数式と解説

=SEQUENCE(5,,,0)

SEQUENCE関数は SEQUENCE(行数, [列数], [開始], [ステップ]) のように使います。

SEQUENCE(5, ...): まず、5行の配列を作ると指定します。

..., , ,0): 第4引数「ステップ」に「0」を指定するのがポイントです。

これにより、第3引数「開始」(省略時は1)の値が、ステップ0で、つまり全く変化せずに5回繰り返されるため、{1;1;1;1;1} が生成されるのです。

Excelの説明画像

アプローチ7:RANDARRAY – ランダムの逆説

【動作確認バージョン:Excel 2021 以降】

考えかた

同じくExcel 2021以降で導入されたRANDARRAY関数。ランダムな数を生成する関数ですが、「1以上1以下のランダムな整数」を指定すれば…?

数式と解説

=RANDARRAY(5,,1,1)

RANDARRAY関数は RANDARRAY([行数], [列数], [最小値], [最大値], [整数]) のように使います。

Excelの説明画像

第5引数を省略すると小数を返します。

RANDARRAY(5, , 1, 1): 5行1列で、最小値「1」、最大値「1」の「小数」の乱数を生成しなさい、という命令です。

1以上1以下の数はそもそも「1」しか存在しないため、結果として {1;1;1;1;1} が返ってくる、という逆説的なアプローチです。

Excelの説明画像

アプローチ8:MAKEARRAY + LAMBDA – 無からの創造

【動作確認バージョン:Microsoft 365】

考えかた

Microsoft 365で使えるようになったLAMBDA関数ファミリー。

その一員であるMAKEARRAY関数を使えば、「指定したサイズの配列の、すべての要素に『1』を入れる」という処理を、非常に直感的に記述できます。

数式と解説

=MAKEARRAY(5,,LAMBDA(r,c,1))

MAKEARRAY(5, , ...): MAKEARRAY関数は MAKEARRAY(行数, 列数, LAMBDA(...)) のように使います。まず、5行1列の配列を作ると宣言します。

LAMBDA(r,c,1): 次に、その配列の各要素の値を決めるルールをLAMBDA関数で定義します。

「r」(行番号)と「c」(列番号)を引数として受け取りますが、今回はそれらを使わずに、単純に「1」という値を返す、と指定しています。

これにより、すべての要素が1の配列が生成されるのです。

Excelの説明画像

アプローチ9:VSTACK – シンプルすぎる合体

【動作確認バージョン:Microsoft 365】

考えかた

Microsoft 365のVSTACK関数。本来は複数の配列を縦に連結するための関数ですが、引数に配列ではなく、単一の「1」を5回指定したら…?

数式と解説

=VSTACK(1,1,1,1,1)

VSTACK関数は、引数を順番に縦に積み重ねてくれます。

まさに、「小包1つを大型トラックで運ぶ」ような、関数の役不足感が否めませんが、これも立派な一つの方法ですね(笑)。

Excelの説明画像

アプローチ10:TEXTSPLIT + REPT – 文字列からの錬金術

【動作確認バージョン:Microsoft 365】

考えかた

Microsoft 365の文字列操作関数TEXTSPLITを使った方法です。「1」と区切り文字を繰り返した文字列を作り、それを区切り文字で分割することで、「1」だけの配列を生成します。

数式と解説

=TEXTSPLIT(REPT("1-",4)&1,,"-")*1

1. REPT("1-",4)&1: まず、REPT関数で “1-” を4回繰り返し、最後に “1” を連結して、"1-1-1-1-1" という文字列を作ります。

Excelの説明画像

2. TEXTSPLIT(..., ,"-"): 次に、TEXTSPLIT関数の第3引数「列区切り文字」を省略し、第4引数「行区切り文字」に「」を指定します。

これにより、文字列が「-」で分割され、{"1";"1";"1";"1";"1"} という縦一列の「文字列」の配列が生成されます。

3. ... * 1: 最後に、1を掛けて、文字列の配列を数値の配列に変換します。

Excelの説明画像

まとめ:回り道こそ、最大の近道だ!

たった一つのシンプルなゴールに対して、これほどまでに多様なアプローチが存在することに、驚かれたのではないでしょうか。

Excel 97以前の知恵から、最新のLAMBDA関数まで。それぞれの数式に、それぞれの時代の工夫と美学が詰まっています。

もちろん、FILTERXML関数(Windows版Excel 2013以降)のような、さらにマニアックな方法も存在しますし、新関数を使えばこれ以外にもまだまだ作れるはずです!

興味のある方は、ぜひあなただけの「1の配列生成式」を探求してみてください!

一見、無駄に見える「回り道」こそが、実は関数の本質的な理解へとつながる、最大の近道なのかもしれません。

今回の関数パズルが、皆さんのExcelへの知的好奇心をさらに深めるきっかけになれば、これほど嬉しいことはありません。

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