📊 AIとビジネス - Excel
GPT活用したExcelマクロ作成 - VBAなしでAI自動化
VBAコーディング分からなくても大丈夫!AIが反復作業を自動化するマクロコードを作成してくれます。
IF文、VLOOKUP自動作成
IF文とVLOOKUP、名前を聞いただけで頭が痛いですよね? Excelで最もよく使われる関数ですが、同時に最も混乱する関数でもあります。
IF文は条件が一つの時は大丈夫ですが、複数の条件をネストすると括弧がどこで閉じるかも分からないしエラーもよく出ます。VLOOKUPは引数の順序も混乱するし、FALSEはいつ使ってTRUEはいつ使うのかも混乱します。
AIを活用すればこんな複雑な関数も簡単に作れます。欲しい条件だけ自然に説明すれば、AIが完璧なIF文を作ってくれます。VLOOKUPも「どこから何を探して何を持ってきて」と言えば終わりです。
この記事では、AIでIF文とVLOOKUPを自動で作成する方法を学びます。簡単な条件式から複雑なネストIF文、エラー処理まで全部扱います。
1. 単純IF文自動生成
基本IF文
AIプロンプト:
"点数が60点以上なら'合格'、そうでなければ'不合格'と表示してください。"
AI生成数式:
=IF(B2>=60, "合格", "不合格")
多重条件IF文
AIプロンプト:
"点数によってランクを付けてください:
- 90点以上: A
- 80点以上: B
- 70点以上: C
- 60点以上: D
- その他: F"
AI生成数式:
=IF(B2>=90, "A",
IF(B2>=80, "B",
IF(B2>=70, "C",
IF(B2>=60, "D", "F"))))
// またはIFS関数使用 (Excel 2016以上)
=IFS(
B2>=90, "A",
B2>=80, "B",
B2>=70, "C",
B2>=60, "D",
TRUE, "F"
)
2. 複合条件IF文
AND条件
AIプロンプト:
"出席率が80%以上で、点数が70点以上なら'修了'、
一つでも未達なら'未修了'と表示してください。"
AI生成数式:
=IF(AND(B2>=80, C2>=70), "修了", "未修了")
// または
=IF((B2>=80)*(C2>=70), "修了", "未修了")
OR条件
AIプロンプト:
"決済方法が'クレジットカード'または'デビットカード'なら'カード決済'、
そうでなければ'現金決済'で分類してください。"
AI生成数式:
=IF(OR(D2="クレジットカード", D2="デビットカード"), "カード決済", "現金決済")
// または
=IF((D2="クレジットカード")+(D2="デビットカード"), "カード決済", "現金決済")
複雑な条件組み合わせ
AIプロンプト:
"社員のインセンティブを計算してください:
- 営業部で目標120%以上達成: 基本給の30%
- 営業部で目標100%以上達成: 基本給の20%
- 営業部で目標80%以上達成: 基本給の10%
- その他の部署は目標100%以上達成時: 基本給の10%
- 残り: 0"
AI生成数式:
=IF(AND(A2="営業部", C2>=1.2), B2*0.3,
IF(AND(A2="営業部", C2>=1.0), B2*0.2,
IF(AND(A2="営業部", C2>=0.8), B2*0.1,
IF(AND(A2<>"営業部", C2>=1.0), B2*0.1, 0))))
3. VLOOKUP基本
単純VLOOKUP
AIプロンプト:
"A列の社員番号で'社員情報'シートから社員名を探してください。
見つからなければ'未登録'と表示してください。"
AI生成数式:
=IFERROR(
VLOOKUP(A2, 社員情報!$A:$D, 2, FALSE),
"未登録"
)
// またはIFNA使用
=IFNA(
VLOOKUP(A2, 社員情報!$A:$D, 2, FALSE),
"未登録"
)
複数列参照
AIプロンプト:
"製品コードで製品名(2列)、単価(3列)、在庫(4列)を一度に取得してください。"
AI生成数式:
// B列: 製品名
=VLOOKUP($A2, 製品DB!$A:$E, 2, FALSE)
// C列: 単価
=VLOOKUP($A2, 製品DB!$A:$E, 3, FALSE)
// D列: 在庫
=VLOOKUP($A2, 製品DB!$A:$E, 4, FALSE)
// または一つの配列数式で (Ctrl+Shift+Enter)
=VLOOKUP($A2, 製品DB!$A:$E, {2,3,4}, FALSE)
4. VLOOKUP高度活用
近似値探し
AIプロンプト:
"売上額による手数料率を探してください:
- 0~1千万円: 5%
- 1千万円~5千万円: 3%
- 5千万円~1億円: 2%
- 1億円以上: 1%"
AI生成数式:
// 手数料表シート:
A B
0 5%
10000000 3%
50000000 2%
100000000 1%
// 数式 (TRUE: 近似値)
=VLOOKUP(B2, 手数料表!$A:$B, 2, TRUE)
// または直接配列で
=VLOOKUP(B2, {0,0.05;10000000,0.03;50000000,0.02;100000000,0.01}, 2, TRUE)
左側列参照 (INDEX-MATCH)
AIプロンプト:
"VLOOKUPは左側の列を参照できないと言いますが、
製品名(C列)で製品コード(A列)を探したいです。"
AI生成数式:
// INDEX-MATCH組み合わせ使用
=INDEX(製品DB!$A:$A, MATCH(C2, 製品DB!$C:$C, 0))
// またはXLOOKUP (Microsoft 365)
=XLOOKUP(C2, 製品DB!$C:$C, 製品DB!$A:$A, "なし")
5. VBAで複雑な条件式自動生成
IF文自動生成機
AIプロンプト:
"ユーザーが入力した条件をベースに
IF文を自動生成してくれるツールを作ってください。"
AI生成VBA:
Sub IF文自動生成機()
Dim conditionCount As Integer
Dim i As Integer
Dim formula As String
Dim condition As String
Dim result As String
' 条件個数入力
conditionCount = InputBox("いくつの条件を作りますか?", "条件個数", 3)
formula = "=IF("
For i = 1 To conditionCount
condition = InputBox("条件 " & i & "を入力してください。" & vbCrLf & _
"例: A1>=90", "条件入力")
result = InputBox("条件 " & i & "が真の時の結果を入力してください。", "結果入力")
If i = 1 Then
formula = formula & condition & ',"' & result & '",'
Else
formula = formula & "IF(" & condition & ',"' & result & '",'
End If
Next i
' 最後の偽条件
result = InputBox("すべての条件が偽の時の結果を入力してください。", "デフォルト値入力")
formula = formula & '"' & result & '"'
' 括弧閉じ
For i = 1 To conditionCount - 1
formula = formula & ")"
Next i
formula = formula & ")"
' 結果表示
MsgBox "生成された数式:" & vbCrLf & vbCrLf & formula, vbInformation
' クリップボードにコピー
Dim dataObj As Object
Set dataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
dataObj.SetText formula
dataObj.PutInClipboard
MsgBox "数式がクリップボードにコピーされました。", vbInformation
End Sub
まとめ
AIでIF文とVLOOKUP自動化:
- ✅ 複雑な条件式も自然言語で生成
- ✅ VLOOKUPビルダーでエラーのない数式
- ✅ VBAで反復作業を自動化
- ✅ 数式ライブラリで再利用性向上
次の記事では、大量データから意味あるパターンを見つける方法を学びます。