生成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が問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門
AI(Gemini)とエクセル数式対決 その1
AI(Gemini)とエクセル数式対決 その2
ダウンロードフォルダのExcelファイルブロック解除
AIがあればVBAはできる:セルに絵文字を入れる
Geminiと100本ノック 1本目:セルのコピー
Geminiと100本ノック 2本目:セルのコピー
Geminiと100本ノック 3本目:セルの消去
Geminiと100本ノック 4本目:セルの消去
Geminiと100本ノック 3本目:セルの消去


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

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




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


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



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