生成AI活用研究
AI(Gemini)とエクセル数式対決 その2

Geminiを中心に生成AIの活用と研究の記録
公開日:2025-04-30 最終更新日:2025-04-30

AI(Gemini)とエクセル数式対決 その2


GoogleのAIモデルのGeminiとエクセルの数式対決をします。


マトリックス表のリスト形式化(アンピボット)

現段階ではGeminiのエクセル数式力は筆者にはまだまだ及ばない・・・こともなさそうです(笑)
対決といっても、こちらが問題を出してGeminがどんな数式を回答するかを確かめていきます。
回答された数式によっては、別解を出すようにプロンプトを追加してより良い数式にたどり着くようにします。


Geminiへの出題とGeminiの回答

Geminiの回答 Geminiへの出題
エクセル Excel サンプル画像
エクセル Excel サンプル画像

エクセル数式問題
A1:F6のマトリックスをH:Jにアンピボットしてください。
H1に数式を入れるだけでスピルさせてください。
エクセル Excel サンプル画像
エクセル Excel サンプル画像

H1セルに以下の数式を入力してください。この数式はスピルしてA1:F6のマトリックスをH:Jにアンピボットします。

Excel
=HSTACK(INDEX(A2:A6, CEILING(SEQUENCE(ROWS(B2:F6)*COLUMNS(B2:F6))/COLUMNS(B2:F6), 1)), INDEX(B1:F1, 1, MOD(SEQUENCE(ROWS(B2:F6)*COLUMNS(B2:F6))-1, COLUMNS(B2:F6))+1), TOCOL(B2:F6))

数式の解説:
  1. ROWS(B2:F6)*COLUMNS(B2:F6): データ範囲 (B2:F6) の行数と列数を掛けて、アンピボット後の合計行数を計算します (5行 * 5列 = 25行)。
  2. SEQUENCE(...): 計算された合計行数 (25) の連番 (1から25まで) を生成します。
  3. 第1列 (H列 - 行識別子):
    • SEQUENCE(...)/COLUMNS(B2:F6): 連番をデータ範囲の列数 (5) で割ります。
    • CEILING(..., 1): 結果を小数点以下切り上げます。これにより、1が5回、2が5回、...、5が5回繰り返されるシーケンスが生成されます。
    • INDEX(A2:A6, ... , 1): A2:A6 の行識別子から、上記のシーケンスに対応する値を抽出します。これがH列のデータになります。
  4. 第2列 (I列 - 列ヘッダー):
    • SEQUENCE(...)-1: 連番から1を引きます (0から24まで)。
    • MOD(..., COLUMNS(B2:F6)): 結果をデータ範囲の列数 (5) で割った余りを計算します。これにより、0,1,2,3,4, 0,1,2,3,4,... というシーケンスが生成されます。
    • ...+1: 結果に1を足します。これにより、1,2,3,4,5, 1,2,3,4,5,... というシーケンスが生成されます。これらはB1:F1 の列インデックスに対応します。
    • INDEX(B1:F1, 1, ...): B1:F1 の列ヘッダーから、上記のシーケンスに対応する値を抽出します (行インデックスは常に1)。これがI列のデータになります。
  5. 第3列 (J列 - 値):
    • TOCOL(B2:F6): データ範囲 (B2:F6) を行方向に平坦化します (a1, b1, c1, ..., e1, a2, b2, c2, ..., e2, ...)。これがJ列のデータになります。
  6. HSTACK(..., ..., ...): 生成された3つの配列 (H列、I列、J列のデータ) を横方向に結合し、最終的なアンピボットされた結果を生成します。

なんと、なんと、マジですか!!!
これだけの数式をかけるのですか・・・
何も注文つけるところはありません。
とはいえ、別解も欲しいので、少し言葉(プロンプト)を変えてみました。


Geminiへのエクセル数式の改善提案

Geminiの回答 Geminiへの出題
エクセル Excel サンプル画像

エクセル数式問題
A1:F6のマトリックス表をH:Jにリスト形式に変換(アンピボット)してください。
H1に数式を入れるだけでスピルさせてください。
エクセル Excel サンプル画像
エクセル Excel サンプル画像

はい、承知いたしました。A1:F6のマトリックス表をH:Jにリスト形式(アンピボット)に変換するExcel数式をH1セルに入れるだけでスピルさせるようにします。

以下の数式をH1セルに入力してください。

Excel
=LET(
    data_range, B2:F6,
    row_headers, A2:A6,
    col_headers, B1:F1,
    num_rows, ROWS(data_range),
    num_cols, COLUMNS(data_range),
    total_items, num_rows * num_cols,
    row_indices, ROUNDUP(SEQUENCE(total_items) / num_cols, 0),
    col_indices, MOD(SEQUENCE(total_items) - 1, num_cols) + 1,
    HSTACK(
        INDEX(row_headers, row_indices),
        INDEX(col_headers, col_indices),
        INDEX(data_range, row_indices, col_indices)
    )
)
この数式は、LET 関数を使用して変数を定義し、可読性を高めています。

各部の説明:
  • data_range: アンピボットするデータの範囲 (B2:F6) を指定します。
  • row_headers: 行見出しの範囲 (A2:A6) を指定します。
  • col_headers: 列見出しの範囲 (B1:F1) を指定します。
  • num_rows: データ範囲の行数を取得します。
  • num_cols: データ範囲の列数を取得します。
  • total_items: アンピボット後の全データ数(行数 × 列数)を計算します。
  • row_indices: 各データが元データの何行目にあるかを示すインデックスを生成します。
  • col_indices: 各データが元データの何列目にあるかを示すインデックスを生成します。
  • HSTACK: 生成した3つの列(行見出し、列見出し、データ値)を横方向に結合します。
    • 1列目: INDEX(row_headers, row_indices) で、生成した行インデックスに対応する行見出しを取得します。
    • 2列目: INDEX(col_headers, col_indices) で、生成した列インデックスに対応する列見出しを取得します。
    • 3列目: INDEX(data_range, row_indices, col_indices) で、生成した行インデックスと列インデックスに対応するデータ値を取得します。
この数式をH1セルに入力すると、結果が自動的にH列、I列、J列にスピルして表示されます。

驚きました。
これはすごい。
言葉が出ない・・・
AIがこれだけの数式が書けるのなら、もう人は数式を書くことで頭を悩ます必要はなくなりそうです。




同じテーマ「生成AI活用研究」の記事

AI活用によるVBA業務自動化の実践ガイド
すぐに使える!生成AI プロンプト作成 実践ガイド
究極のVBA転記プロンプト公開!あなたの事務作業を劇的に効率化
VBA開発の標準化を実現する共通プロンプトのすすめ
Gemini CLIの徹底解説:AIをターミナルから使いこなす
生成AIはExcelの複雑な数式を書けるのか?|AIとの対話から学ぶ協業のリアル
シンギュラリティ前夜:AIは機械語へ回帰するのか
AIは便利なはずなのに…「AI疲れ」が次の社会問題になる
AI(Gemini)とエクセル数式対決 その1
AI(Gemini)とエクセル数式対決 その2
AI(Gemini)とエクセル数式対決 その3


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ