0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【EXCEL】動的配列関数

0
Posted at

やること

 EXCELで動的配列関数を使用した例をまとめておく。

事前確認:Qiitaでの記事

 ここで、以下の検索をしたところ、31件ヒットした。(2026/09/03時点)
「"動的配列関数" EXCEL」の検索結果 - Qiita

 さらに、以下の検索をしたところ、5件ヒットした。
「"動的配列関数" EXCEL -user:spumoni」の検索結果 - Qiita

 この中から、以下紹介。

5件のCopilot的3行まとめ

Excel関数でつくる「軽量データサイエンス環境」 教育・研究の現場で本気で使うための設計メモ #データ分析 - Qiita
最終更新日 2025年12月04日 投稿日 2025年12月04日

  • Excel関数を「表形式のDSL(データ処理言語)」として捉えると、分析の幅が一気に広がる。
  • 基本集計 → 条件付き集計 → 参照・結合 → 動的配列 → LET/LAMBDA の流れで、教育・研究のデータ処理がほぼ Excel だけで完結する。
  • Excel関数を体系的に使うことで、R/Python への橋渡しにもなり、軽量なデータサイエンス環境として十分機能する。

📊連載第40回!初心者のためのExcel VBA入門:Rangeオブジェクト完全ガイド!🎯 セル操作の基礎から範囲指定の実践テクニックまで✨ #初心者 - Qiita
最終更新日 2026年05月10日 投稿日 2025年12月25日

  • Excel VBA の Rangeオブジェクトの基礎〜応用までを体系的に整理した入門記事。
  • セル指定・書式設定・数式入力・行操作・Intersectによる範囲判定など、実務で頻出の操作を網羅的に解説。
  • 親オブジェクトの明示や効率的な範囲操作の重要性を強調し、安定したVBAコードを書くための実践知識を提供している。

Excelの新関数で1年遊んでいたら円周率2000桁計算できた話 #lambda - Qiita
投稿日 2026年01月18日

  • Excel の LET と LAMBDA だけで円周率を 2000 桁まで計算する“ワンライナー”を作った記録。
  • 配列操作・再帰処理・名前定義を駆使し、Excel でも高度なアルゴリズムが実装できることを示している。
  • 実用性よりも 「Excel標準関数だけでどこまでできるか」というパズル的挑戦を楽しむ記事。

データサイエンティストのためのExcelデータ分析 #VBA - Qiita
投稿日 2026年06月10日

  • Excel を「データ分析の実務ツール」として体系的に学べる、超網羅的な入門記事。
  • 関数・参照・条件集計・グラフ・ピボット・回帰分析・ソルバー・VBAまで、実務で使う流れに沿って一気に理解できる構成。
  • SQL や Python と組み合わせた “現場で本当に使う Excel” の役割と限界を整理し、分析の基礎を固められる内容になっている。

import pandas as pd の背後にある50年 ── Bell Labs・R・金融工学・Juliaへ続くDataFrameの系譜 #Python - Qiita
最終更新日 2026年05月16日 投稿日 2026年05月16日

  • pandas の背後にある50年の歴史(S言語 → R → pandas → Julia)を体系的に解説した超長編の技術史記事。
  • DataFrame という概念がどのように誕生し、金融工学・計量経済学・財務モデリングと結びつきながら進化してきたかを、一次資料レベルで丁寧に追っている。
  • Python・R・Julia の3系統が同じDNAを共有しつつ、金融業界の実務でどう使われているかまで踏み込んだ、データ分析者向けの“歴史+実務”総まとめ。

spumoniさんの記事から

記事一覧 #Excel - Qiita
最終更新日 2024年11月12日 投稿日 2023年03月27日

image.png
ここにある
 雑・Excel入門試論 - 脱VLOOKUPの思考 01 - ブック - 仕様と制限 #SloppyExcel - Qiita
 最終更新日 2023年01月06日 投稿日 2022年12月01日
から
 雑・Excel入門試論 - 脱VLOOKUPの思考 25 - ダッシュボードの作成 #SloppyExcel - Qiita
 最終更新日 2022年12月29日 投稿日 2022年12月25日
までの25件と、記事一覧 #Excel - Qiitaの1件の合計26件。
 先ほど紹介した「5件のCopilot的3行まとめ」の5件と合わせて、ヒットした31件全てになります。

Qiita以外 (Microsoft Support)

配列数式は、配列内の 1 つ以上のアイテムに対して複数の計算を実行できる数式です。 配列は、値の行または列、または値の行と列の組み合わせと考えることができます。 配列数式は、複数の結果または単一の結果を返すことができます。

Microsoft 365 の 2018 年 9 月の更新プログラムから、複数の結果を返すことができる数式は、自動的に結果を下にスピルするか、隣接するセル全体にスピルします。 この動作の変更には、いくつかの新しい 動的配列関数も伴います。 動的配列数式は、既存の関数を使用しているか動的配列関数を使用しているかに関係なく、1 つのセルに入力してから Enter キーを押して確認するだけで済みます。 以前の従来の配列数式では、最初に出力範囲全体を選択してから、 Ctrl+Shift+Enter キーで数式を確認する必要がありました。 これらは一般に CSE 数式と呼ばれます。

一連の値を返す Excel の数式 (配列とも呼ばれる) は、隣接するセルにこれらの値を返します。 この動作はスピルと呼ばれます。

可変サイズの配列を返すことができる数式は、 動的配列 数式と呼ばれます。 スピルに成功した配列を現在返している数式は、 スピルされた配列 数式と言うことができます。

事例

image.png

セルA2
=LET(x,B2,
    TEXTJOIN("-",TRUE,HEX2BIN(MID(x,SEQUENCE(LEN(x)),1),4))
)

1 LETで変数xにセルB2の値を入れる
 LET 関数 | Microsoft Support

  • x = B2

2 MID(x, SEQUENCE(LEN(x)), 1)
 SEQUENCE 関数 | Microsoft Support

例:
B2 = "3AF" の場合

  • LEN(x) = 3
  • SEQUENCE(3) = {1;2;3}
    → MID(x, {1;2;3}, 1)
    → {"3","A","F"} という配列

3 HEX2BIN(…, 4)
例:
"3" → 0011
"A" → 1010
"F" → 1111
→ {"0011","1010","1111"}

4 TEXTJOIN("-", TRUE, …)
 TEXTJOIN 関数 | Microsoft Support

例:
{"0011","1010","1111"}
→ "0011-1010-1111"

セルC2
=LET(b,BASE(DECIMAL(B2,16),2,32),
    TEXTJOIN(", ",TRUE,"bit "&FILTER(SEQUENCE(32,1,31,-1),MID(b,SEQUENCE(32),1)="0"))
)

1 DECIMAL(B2,16)
 DECIMAL 関数 | Microsoft Support

例:
B2 = "3AF" の場合

  • DECIMAL("3AF",16) = 943
    16 進数 (底は 16) の値 0x3AF を、それと等しい 10 進数 (底は 10) の値に変換

2 BASE(…, 2, 32)
 BASE 関数 | Microsoft Support

例:

  • BASE(943,2,32) = 00000000000000000000001110101111
    10 進数 (底は 10) の値 943 を、それと等しい 2 進数 (底は 2) の値に変換
    (32桁固定)

3 LETで変数bに上記の値を入れる

  • b = 0b00000000000000000000001110101111

4 SEQUENCE(32,1,31,-1)
 SEQUENCE 関数 | Microsoft Support

結果:

  • {31;30;29;…;1;0}

5 MID(b, SEQUENCE(32), 1)
結果:

  • {"0","0","0","0",…,"1","1","1","1"}

6 FILTER(…, MID(b,…)=”0”)
 FILTER 関数 | Microsoft Support

例:

  • 上記4.の配列{31;30;…;0}がbit31, bit30, …,bit0の位置を示す。
  • bit31, bit30, …,bit0の中で、上記5の配列{"0","0",…,"1"}の値が"0"のものだけ残る。
    → {"31”,"30”,"29","28",…}

7 "bit "&FILTER(…)
例:

  • {"bit 31","bit 30","bit 29",…}

8 TEXTJOIN(", ", TRUE, …)
 カンマ区切りで連結
例:

  • bit 31,bit 30,bit 29,…
セルD2
=LET(b,BASE(DECIMAL(B2,16),2,32),
    p,FILTER(SEQUENCE(32,1,31,-1),MID(b,SEQUENCE(32),1)="0"),
    TEXTJOIN(", ",TRUE,XLOOKUP("bit "&p,$F$2:$F$34,$G$2:$G$34,"未登録"))
)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?