🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →

Excel AI Blog: VBA Tutorials, Formula Tips & Automation Guides

Expert guides on Excel formulas, VBA automation, data processing, and AI-powered productivity. Learn to master Excel with AI.

ExcelのCOUNT・COUNTA・COUNTBLANK — 数値・非空白・空白セルを数える

ExcelのCOUNT・COUNTA・COUNTBLANK — 数値・非空白・空白セルを数える

COUNTは数値だけを、COUNTAは空でないセルすべてを、COUNTBLANKは空のセルを数えます——1つの「いくつ?」に見えて、実は3つの別々の問いに3つの関数が答えます。テキストのIDが並ぶ列に =COUNT を使うと0が返る理由、空文字列を返す数式までCOUNTAが数えてしまう理由、そしてCOUNTAとCOUNTBLANKの合計が必ずしもセル総数と一致しない理由を解説します。

Henry
ExcelのCOUNTIF関数 — 1つの条件に合うセルを数える(そして条件の書き方の罠)

ExcelのCOUNTIF関数 — 1つの条件に合うセルを数える(そして条件の書き方の罠)

COUNTIFは1つの条件を満たすセルを数えます——`=COUNTIF(範囲, 条件)`——そして条件とは、テキストで書いた小さなテストです。演算子を引用符の中に入れる理由、& でセルの値をしきい値にする方法、テキスト照合のワイルドカード、長い数値での15桁の罠、そしてCOUNTIFSへ切り替えるべきタイミングを解説します。

Henry
Excelでユニークな値を数える方法 — 今どきのやり方と昔ながらの式

Excelでユニークな値を数える方法 — 今どきのやり方と昔ながらの式

Excelには COUNTUNIQUE 関数がないため、重複を除いた値を数える方法は2つに分かれます。今どき(365/2021)の `=COUNTA(UNIQUE(範囲))` と、古いバージョン向けの昔ながらの `=SUMPRODUCT(1/COUNTIF(範囲,範囲))` です。空白が数を1増やす理由、FILTER で空白を除く方法、昔ながらの式が #DIV/0! を出す理由、そして重複を除いた値と1回だけ現れる値の違いを解説します。

Henry
Excel の TRIM と CLEAN — 照合を狂わせる「見えないゴミ」を取り除く

Excel の TRIM と CLEAN — 照合を狂わせる「見えないゴミ」を取り除く

TRIM と CLEAN はどちらも取り込んだテキストから見えないゴミを取り除きますが、対象が違います。TRIM は余分なスペース(ASCII 32)を、CLEAN は印刷されない制御文字(0〜31)を削除します。どちらも Web や PDF の貼り付けで紛れ込む改行なしスペース CHAR(160) は消せません。これが『TRIM が効かない』最大の原因です。考え方と、すべてを一括で片づける唯一の数式を解説します。

Henry
Excel の UPPER・LOWER・PROPER — データを壊さずに大文字小文字を変える

Excel の UPPER・LOWER・PROPER — データを壊さずに大文字小文字を変える

UPPER・LOWER・PROPER はテキストの大文字小文字を変えますが、Excel における大文字小文字は表示やエクスポートの問題であって、照合の問題ではありません。= 比較も VLOOKUP も、そもそも大文字小文字を区別しないからです。本当の落とし穴は PROPER です。すべての単語の先頭を大文字にするため、McDonald を Mcdonald に、iPhone を Iphone に壊してしまいます。大文字小文字が本当に効いてくる場面と、PROPER が仕上げではなく出発点にすぎない理由を解説します。

Henry
Excel の LEN 関数 — 文字数を数え、見えないゴミをあぶり出す

Excel の LEN 関数 — 文字数を数え、見えないゴミをあぶり出す

LEN はセル内の文字数を数えますが、その真価は診断にあります。末尾のスペースや印刷されない文字まで含めてすべての文字を数えるため、『Apple』に見えるセルが実は 6 文字の『Apple 』であることを LEN が証明してくれます。検証、LEN 引く LEN の出現回数カウント術、動的な抽出、そして LEN が表示形式を無視する理由を解説します。

Henry
ExcelのVLOOKUP関数 — 使い方と、それを壊す第4引数

ExcelのVLOOKUP関数 — 使い方と、それを壊す第4引数

VLOOKUP はテーブルの左端の列を上から下へ探し、そこから右へN列数えるだけ——その一方通行の設計こそ、すべてのバグの元凶です。なぜ第4引数(range_lookup)はほぼ常に FALSE でなければならないのか、なぜ VLOOKUP は左を見られないのか、なぜ列番号をベタ書きすると列を挿入した瞬間に静かに壊れるのか、そして「見つからない」を意味する #N/A の直し方を解説します。

Henry
ExcelのINDEX & MATCH — VLOOKUPに勝つ、2つの関数による検索

ExcelのINDEX & MATCH — VLOOKUPに勝つ、2つの関数による検索

INDEX と MATCH は検索を2つの仕事に分けます:MATCH が位置を見つけ(「どの行?」)、INDEX がその位置の値を返します(「そこに何がある?」)。検索と取得を切り離すことこそ、INDEX/MATCH に VLOOKUP が欠くすべてを与えます——右と同じくらい簡単に左を見て、挿入された列に耐え、真の二次元検索をこなします。パターン、match_type の罠、そしてそれでも XLOOKUP に勝つ場面を学びましょう。

Henry
ExcelのHLOOKUP & LOOKUP — 水平検索と、引退させるべきレガシー関数

ExcelのHLOOKUP & LOOKUP — 水平検索と、引退させるべきレガシー関数

HLOOKUP は VLOOKUP を90度回転させたもの——最初の行を探して下へ読みます。LOOKUP は VLOOKUP の先祖で、その致命的な欠陥は完全一致オプションがないこと:常に近似し、ソート済みデータを要求します。水平レイアウトが HLOOKUP を正解にする場面、古典的な LOOKUP(2,1/…) の技が今も古いシートに現れる理由、そしてなぜ両者がほぼ XLOOKUP に道を譲るのかを学びましょう。

Henry
ExcelのAND & OR関数 — 条件を正しく組み合わせる(そしてExcelがショートサーキットしない理由)

ExcelのAND & OR関数 — 条件を正しく組み合わせる(そしてExcelがショートサーキットしない理由)

AND と OR は判断をしません——複数の TRUE/FALSE 判定を1つの結論にまとめ、それを IF やルールやフィルターへ渡すだけです。なぜ AND は IF の第1引数の中に入れる(ネストしたIFを包むのではなく)べきなのか、素の =AND(...) がなぜ TRUE という文字を表示するだけなのか、なぜ Excel はすべての引数を評価する(ショートサーキットしないので #DIV/0! を起こしうる)のか、そして配列マスクの +/* に切り替えるのはいつかを解説します。

Henry
ExcelのNOT & XOR関数 — 条件を反転する、そして多くの人が誤解する「1つだけ例外」のロジック

ExcelのNOT & XOR関数 — 条件を反転する、そして多くの人が誤解する「1つだけ例外」のロジック

NOT は1つの TRUE/FALSE の結論を反転し、XOR は AND や OR では表せない排他的論理和です。なぜ NOT は引数をちょうど1つしか取らない(だから複合条件には NOT(AND(...)) と書く)のか、NOT が実は <> の変装にすぎないのはいつか、ド・モルガンの法則こそ NOT の真の武器である理由、そして誰も警告しない XOR の意外な点——入力が3つ以上だと「ちょうど1つ」ではなく TRUE の個数が奇数のとき TRUE を返す——を解説します。

Henry
ExcelのIS関数 — ISNUMBER・ISTEXT・ISBLANK・ISERROR・ISNA(壊れる前に数式を守る)

ExcelのIS関数 — ISNUMBER・ISTEXT・ISBLANK・ISERROR・ISNA(壊れる前に数式を守る)

IS ファミリーはセルを調べて TRUE/FALSE の結論を返します——分類はしますが、決して変換はしません。なぜ ISBLANK は「空に見える」より厳密なのか(数式の空文字列は空白ではない)、なぜ ISERROR は本物のバグを隠し ISNA や IFNA の方がたいてい安全なのか、なぜ IF(ISERROR(x),…,x) は x を二度計算するのか、そして ISNUMBER の切り札——SEARCH をきれいな部分一致テストに変える——を解説します。

Henry
Excel TEXT 関数 — 数値を書式付きの文字列に変換する(そして合計できなくなる罠)

Excel TEXT 関数 — 数値を書式付きの文字列に変換する(そして合計できなくなる罠)

TEXT 関数は、書式コードを使って数値や日付を書式付きのテキスト文字列に変換します。=TEXT(1234.5,"$#,##0.00") は "$1,234.50" を返します。基本となる考え方(書式を実際の文字列に焼き込むのか、セルの表示専用の表示形式にするのか)、最大の罠(出力はテキストなので SUM が無視する #VALUE! の遠因)、数値と日付の書式コード速習、先頭ゼロとロケール、そしてセルの表示形式・CONCAT・ROUND のほうが適している場面を解説します。

Henry
Excel VALUE と NUMBERVALUE — テキストを計算できる数値に戻す

Excel VALUE と NUMBERVALUE — テキストを計算できる数値に戻す

VALUE は数値に見えるテキスト文字列 —— "1,234.50" や "$9.00" —— を、合計・並べ替え・グラフ化できる本物の数値に解析します。TEXT の逆関数です。基本となる考え方、現実世界での最大の原因(インポートや貼り付けの後に文字列として格納された数値)、なぜ VALUE はシステムのロケールに従うのか、そしてヨーロッパ式の "1.234,56" を NUMBERVALUE がどう解決するか、より速い数式なしの解決策(*1、二重単項マイナス、区切り位置)、そして最新の Excel が一部のテキストを暗黙変換しても SUM は決してしない理由を解説します。

Henry
Excel DATEVALUE と TIMEVALUE — テキストとして閉じ込められた日付と時刻を救い出す

Excel DATEVALUE と TIMEVALUE — テキストとして閉じ込められた日付と時刻を救い出す

Excel の日付は、実は日付書式をまとったシリアル値です。テキストとして到着した日付は、並べ替えも引き算も DATEDIF への受け渡しもできない偽者です。DATEVALUE はテキストの日付をそのシリアル値に、TIMEVALUE はテキストの時刻を 1 日の端数に解析します。基本となる考え方、テキスト日付の症状、03/04/2026 という地域依存の曖昧さの罠、日付と時刻の結合方法、DATEVALUE が文字列を解析できない場面、そして DATE(LEFT,MID,RIGHT) と区切り位置という代替手段を解説します。

Henry
Excel INDIRECT 関数 — 文字列を「生きた参照」に変える(そしてなぜ揮発性なのか)

Excel INDIRECT 関数 — 文字列を「生きた参照」に変える(そしてなぜ揮発性なのか)

INDIRECT は "A1" や "Sheet2!B3" のような文字列を、生きたセル参照に変えます。考え方の軸、最大の落とし穴(文字列は自動追従しないため、シート名を変更するとすべての INDIRECT が #REF! で壊れる)、なぜ揮発性で Excel の依存関係トレーサーから見えないのか、閉じたブックで #REF! になる罠、唯一の決定的な用途(セルに書かれたシート名から値を引く)、そしてテーブル・3D 参照・CHOOSE の方が良い場面までを解説します。

Henry
Excel OFFSET 関数 — 動く参照(そして INDEX の方が良い場面)

Excel OFFSET 関数 — 動く参照(そして INDEX の方が良い場面)

OFFSET はアンカーから決まった行数・列数だけ離れた参照を返し、必要ならブロック全体へリサイズできます。考え方の軸、なぜ値ではなく参照を返すので SUM に渡せるのか、揮発性という代償、定番の動的名前付き範囲の技とテーブルやスピル範囲が今やそれに勝る理由、端を越えると #REF! になる罠、そして肝心の判断(範囲へのインデックス取り出しには非揮発性の INDEX を使い、OFFSET は本当に動く窓のためだけに残す)を解説します。

Henry
Excel ADDRESS 関数 — セル番地を「文字列」として組み立てる(値ではない)

Excel ADDRESS 関数 — セル番地を「文字列」として組み立てる(値ではない)

ADDRESS はセル番地のテキストを組み立てます — =ADDRESS(1,1) は A1 の中身ではなく、文字列 "$A$1" を返します。考え方の軸(INDIRECT の入力側の逆)、値ではなく文字列を返すという最大の誤解、$ ロックを制御する abs_num 引数、INDIRECT や OFFSET と違ってなぜ揮発性でないのか、本当の用途(MATCH でどこに値があるか報告する・INDIRECT へ渡す参照を組み立てる)、そして現代の Excel でどれほどニッチかについての率直な見解を解説します。

Henry
Excel SUMPRODUCT関数 — 掛けてから足す、SUMIFSでは書けない条件まで

Excel SUMPRODUCT関数 — 掛けてから足す、SUMIFSでは書けない条件まで

SUMPRODUCTは配列を要素ごとに掛け合わせ、その結果を合計します。1つのセルで内積を計算する関数です。次元不一致による#VALUE!の落とし穴、なぜANDでは真偽値配列を掛け算しORでは足し算するのか(AND()/OR()を使ってはいけない理由)、二重マイナス(--)が必要になる場面、そしてSUMIFSでは今なお手が届かない加重合計と列をまたぐORの仕事を解説します。

Henry
Excel SUBTOTAL関数 — フィルターを尊重する集計(と9 vs 109の落とし穴)

Excel SUBTOTAL関数 — フィルターを尊重する集計(と9 vs 109の落とし穴)

SUBTOTALはフィルターを認識する集計です。フィルターで非表示になった行をスキップするので、リストの末尾の数字がフィルターに合わせて更新されます。function_numの一覧表、1〜11 vs 101〜111の落とし穴(手動で行を隠しても集計が変わらない理由)、SUBTOTALが他のSUBTOTALを無視して総合計が二重計上にならない仕組み、そしてエラーをスキップできない理由 — それこそAGGREGATEが作られた目的 — を解説します。

Henry
Excel AGGREGATE関数 — エラーも無視できるSUBTOTALの上位互換

Excel AGGREGATE関数 — エラーも無視できるSUBTOTALの上位互換

AGGREGATEはSUBTOTALに2つの強化を加えたものです。関数が11個ではなく19個になり、エラー値・非表示行・ネストした集計を無視できるoptions引数が付きました。function_num + optionsのグリッド、最も使われていない技 — IFERRORで掃除せずに #N/A を含む列を合計する技 — そして余分なk引数を必要とする配列形式の関数(LARGE、SMALL、PERCENTILE)を解説します。

Henry
Excel FIND・SEARCH — 内容で文字を探す(FIND と SEARCH の違い、そして

Excel FIND・SEARCH — 内容で文字を探す(FIND と SEARCH の違い、そして

FIND と SEARCH は、ある文字列が別の文字列の中で始まる位置を返します。これは MID や LEFT に渡すアンカーです。本当に重要な2つの違い(FIND は大文字小文字を区別しワイルドカード不可、SEARCH は区別せずワイルドカード可)、一致がないとなぜ両方とも #VALUE! を投げるのか、そして ISNUMBER(SEARCH()) の「含むか」判定テクニックを解説します。

Henry
Excel SUBSTITUTE・REPLACE — 内容で置き換えるか、位置で置き換えるか

Excel SUBSTITUTE・REPLACE — 内容で置き換えるか、位置で置き換えるか

SUBSTITUTE と REPLACE はどちらもテキストを置き換えますが、考え方が違います。SUBSTITUTE は内容で一致させ(すべての 'x' を、あるいは N 番目だけを置換)、REPLACE は位置で動きます(5文字目から9文字目を上書き)。どちらを使うか、なぜ SUBSTITUTE が大文字小文字を区別するのか、そして LEN 引く LEN の出現回数カウントのテクニックを解説します。

Henry
Excel ROUND 関数 — ROUND・ROUNDUP・ROUNDDOWN と「表示形式は四捨五入ではない」理由

Excel ROUND 関数 — ROUND・ROUNDUP・ROUNDDOWN と「表示形式は四捨五入ではない」理由

ROUND は格納されている値そのものを指定した小数桁に丸めますが、セルの表示形式は見た目を変えるだけです。この差が請求合計を1円ずれさせる理由、num_digits の使い分け(正・ゼロ・負)、ROUNDUP と ROUNDDOWN が ROUND とどう違うか、そしてなぜ「上下」ではなく「ゼロからの距離」で丸めるのかを解説します。

Henry
Excel MROUND・CEILING・FLOOR — 小数ではなく、最も近い倍数に丸める

Excel MROUND・CEILING・FLOOR — 小数ではなく、最も近い倍数に丸める

MROUND・CEILING・FLOOR は、小数の桁数ではなく、ある数の最も近い倍数 — 5セント、15分、1カートン丸ごと — に丸めます。第2引数が桁数ではなく倍数である理由、古い CEILING が負の数で #NUM! を出す理由、CEILING.MATH と FLOOR.MATH が安全な現代の選択肢である理由、そしてそれぞれをいつ選ぶかを解説します。

Henry
Excel INT・TRUNC・MOD — 小数を落とし、余りを求める

Excel INT・TRUNC・MOD — 小数を落とし、余りを求める

INT と TRUNC はどちらも小数を落としますが、INT はマイナス無限大の方向に丸め、TRUNC は単にゼロへ向けて切り落とすため、負の数で結果が分かれます。MOD は余りを返し、Excel では余りは数値ではなく除数の符号を引き継ぎます。1だけずれるワナ、日付と時刻の分離、シマ模様パターンを解説します。

Henry
ExcelのIF関数 — Yes/Noの分かれ道は一つ、ネストはどこで止めるか

ExcelのIF関数 — Yes/Noの分かれ道は一つ、ネストはどこで止めるか

IFは一つのYes/Noを問い、2つのうち1つの答えを返します。3つ目の引数を省くとFALSEが出る理由、ネストしたIFのピラミッドが2段を超えると崩れる理由(代わりにIFSやルックアップを使う)、ネストせずにAND/ORで条件をまとめる方法、IFの文字列比較が大文字小文字を無視する理由を解説します。

Henry
ExcelのIFS関数とSWITCH関数 — ネストIFのピラミッドなしで多分岐ロジックを

ExcelのIFS関数とSWITCH関数 — ネストIFのピラミッドなしで多分岐ロジックを

IFSは条件のリストを上から下へ確認し、最初に一致したものを返します。SWITCHは1つの値を複数のケースと照合します。バグの大半を生む2つの罠——IFSには既定値(else)がなく、振り分けを忘れると #N/A になること、そして先勝ちなので順序が命であること——に加え、IFS・SWITCH・ルックアップ表の使い分けを解説します。

Henry
ExcelのIFERROR関数 — バグを隠さずにエラーを受け止める(IFERROR vs IFNA)

ExcelのIFERROR関数 — バグを隠さずにエラーを受け止める(IFERROR vs IFNA)

IFERRORは数式のエラーをフォールバック値に置き換えますが、あらゆる種類のエラーを捕まえます——だから #REF! や #NAME? のような本物のバグまで静かに隠します。なぜルックアップにはたいてい IFNA が正しい道具なのか、すべてを IFERROR で包むのがアンチパターンである理由、そして XLOOKUP の if_not_found が両者に勝る理由を解説します。

Henry
ExcelのCOUNTIF & COUNTIFS — 条件に合う行を数える(そして ">"&A1 の罠)

ExcelのCOUNTIF & COUNTIFS — 条件に合う行を数える(そして ">"&A1 の罠)

COUNTIFSはすべての条件を満たした行を数えますが、条件を間違えるとエラーも出さずに「もっともらしいが間違った数」を返します。セルと比較するときは演算子を連結する正しい書き方、ANDは標準でORは別という仕組み、2つの日付の間を数える方法、そして重複を除いた数にはCOUNTIFSではなくUNIQUEが要る理由を解説します。

Henry
ExcelのSEQUENCE関数 — 数値・日付・連番の「生きた」配列を生成する

ExcelのSEQUENCE関数 — 数値・日付・連番の「生きた」配列を生成する

SEQUENCEは数値の配列を何もないところから生み出します。フィルハンドルの代わりではなく、動的配列の連番・日付シリーズ・グリッドを支える「エンジン」です。引数の順番(行、列、開始、増分)、生きたカレンダーの作り方、#SPILL!の直し方、ドラッグやROW()を置き換える場面を解説します。

Henry
Excel VBA の Trim — 空白が消えない理由と Chr(160) の対処法

Excel VBA の Trim — 空白が消えない理由と Chr(160) の対処法

VBA の Trim は両端だけを削り、内側の空白には触れません。さらに、Web や PDF からの貼り付けで紛れ込む非改行スペース Chr(160) も無視します。考え方の軸、使うべき正規化関数 1 つ、そしてどの関数がどの場面で勝つか。Excel 365 / 2021 / 2019 で検証済み。

Henry
VBA InputBox — 2つの InputBox と使い分け

VBA InputBox — 2つの InputBox と使い分け

VBA の InputBox は1つではなく2つあります。単純な InputBox で足りる場面、Type を付けた Application.InputBox が勝つ場面、そして両方を静かに壊す「キャンセルの落とし穴」まで。コピペで動く例、Excel 365 / 2021 / 2019 で動作確認済み。

Henry
VBA UserForm — 本格的な入力フォームを作る

VBA UserForm — 本格的な入力フォームを作る

VBA UserForm を正しく作る方法。イベント駆動の考え方、.Show のあとコードが「消える」理由、そして入力した値を読めるかどうかを決める Unload と Hide のルールまで。コピペで動くイベントコード、Excel 365 / 2021 / 2019 で動作確認済み。

Henry
Excel VBA Whileループ — Excelを固めずにループする方法

Excel VBA Whileループ — Excelを固めずにループする方法

VBAのWhileループは「必ず終わる」という約束であり、それを守るのはあなた。すべてのWhileループに必要な3つの部分、なぜDo WhileがWhile...Wendより良いのか、そして二度とExcelを固めない方法を、コピペ実例とともに。Excel 365 / 2021 / 2019で動作確認済み。

Henry
ExcelのUserFormにおけるSetFocusの完全ガイド:効率的なフォーム制御の実現方法

ExcelのUserFormにおけるSetFocusの完全ガイド:効率的なフォーム制御の実現方法

主要ポイント 1. 基本的な実装方法 UserForm_Activateでの初期フォーカス設定が重要 SetFocusメソッドを効果的に活用 TabIndexによる適切な移動順序の設定 2. 重要な改善点 エラーハンドリングの実装 パフォーマンス最適化 ユーザビリティの向上 3. 実装時の注意点 モードレスフォームでの特別な対応 イベント制御の適切な管理 フォーカス制御のタイミング

Rosa Rugosa
Excel VBAでヘッダーを配列に格納し、検索する方法

Excel VBAでヘッダーを配列に格納し、検索する方法

本記事では、Excel VBAを用いてシートのヘッダー情報を配列に格納し、さまざまな検索・管理手法を実践的に紹介しました。具体的には、MATCH関数で特定の表頭列を特定する方法、正規表現を用いた複雑な文字列マッチング、Dictionaryオブジェクトによるキーと値のペア管理などを解説しています。また、日本語ヘッダーを扱う際の注意点や、大規模データ処理を高速化するためのテクニック(スクリーン更新の停止や計算モードの最適化)も取り上げ、日々のExcel作業をより効率的かつ信頼性高く行うための実践的ノウハウを提供しています。

Rosa Rugosa