「Excel」カテゴリーアーカイブ

【Excel】INDEX+MATCH関数で柔軟で高速なデータ検索を実現

Excelでデータ検索や参照を行うとき、多くの方が最初に思い浮かべるのは VLOOKUP関数 ではないでしょうか。
しかし、VLOOKUPには「参照範囲の制約」「列番号の固定」、「大量データだと重い」など不便な面もあります。
そこでおすすめなのが、 INDEX関数とMATCH関数を組み合わせる方法 です。

本記事では、INDEX+MATCH関数の使い方を基礎から応用まで解説します。


1. INDEX関数とMATCH関数の役割

INDEX関数

指定した範囲から「行番号・列番号」を基準に値を取り出す関数です。

=INDEX(範囲, 行番号, 列番号)

例:
=INDEX(B2:D5, 2, 3) → 範囲B2:D5の「2行目3列目」の値を取得


MATCH関数

指定した値が「範囲の何番目にあるか」を返す関数です。

=MATCH(検索値, 範囲, 検索方法)
  • 検索方法:0(完全一致)、1(以下)、-1(以上)

例:
=MATCH("東京", A2:A10, 0) → 「東京」がA2:A10の中で何番目かを返す


2. INDEX+MATCHの組み合わせ

INDEXとMATCHを組み合わせると、「検索値に基づいて柔軟に値を取得」できます。

=INDEX(参照範囲, MATCH(検索値, 検索範囲, 0))

例:
社員名を検索して、その人の所属部署を取得する場合

  • 検索値:セルE1(社員名)

  • 検索範囲:A2:A6(社員名一覧)

  • 参照範囲:B2:B6(部署一覧)

=INDEX(B2:B6, MATCH(E2, A2:A6, 0))

→ F2に入力した社員名に対応する部署が返る


3. VLOOKUPとの違い・メリット

  • 参照範囲を左右どちらにも指定可能
    VLOOKUPは「左端から右方向」にしか検索できませんが、INDEX+MATCHなら左にも右にも対応できます。

  • 列削除に強い
    VLOOKUPは列番号で指定するため列構成が変わるとエラーになりますが、INDEX+MATCHは柔軟です。

  • 高速処理が可能
    大量データを扱う場合でも、VLOOKUPだと処理が重くなって使えない事象が発生しますが、INDEX+MATCHの方を使用することで安定して動作します。


4. 応用例:2次元検索

行と列の両方で一致する値を取得することも可能です。

=INDEX(B2:D6, MATCH(G2, A2:A6, 0), MATCH(G1, B1:D1, 0))
  • G2に入力した「名前」

  • G1に入力した「科目」

  • → G3で名前×科目に対応する点数を取得


5. まとめ

  • INDEX関数は「値を取り出す」

  • MATCH関数は「位置を探す」

  • 2つを組み合わせることで 柔軟な検索・参照が可能

VLOOKUPでは対応できない場面でもINDEX+MATCHなら解決できます。
Excelで効率的なデータ検索を行いたい方は、ぜひ活用してみてください。

Excelで年間カレンダーを自作する方法|月間・週間スケジュールにも対応

Excelを使えば、自分専用のカレンダーを簡単に作れます。この記事では、年間・月間・週間の3種類のカレンダーを順に作成し、最後に祝日を自動反映するマクロを組み込みます。

旧バージョン(Excel 2010〜2021)でも動作するよう、関数は基本的なものだけを使用しています。


ステップ1:年間カレンダーを作る

  1. 年入力セルを用意

    • B1セルに「2025」など西暦年を入力

  2. 日付列を生成

    • A3セルに次の数式を入力し、365行コピー

      =DATE($B$1,1,1)+ROW(A1)-1

  3. 曜日を表示

    • B3セルに

      =TEXT(A3,"aaa")
  4. 条件付き書式で土日を色分け

    • 土曜:=WEEKDAY($A3,2)=6

    • 日曜:=WEEKDAY($A3,2)=7

    • 祝日:=COUNTIF(祝日!$A:$A,$A3)>0


ステップ2:月間カレンダーを作る

  1. 入力セル

    • B1=年、D1=月

  2. 月初を算出

    • B3セルに

      =DATE($B$1,$D$1,1)-WEEKDAY(DATE($B$1,$D$1,1),2)+1
  3. カレンダー枠を埋める

    • 各セルに =$B$3+オフセット を入力

  4. 条件付き書式

    • 他月の日付はグレー表示

    • 土日を色分け


ステップ3:週間カレンダーを作る

  1. 週の開始日を指定

    • B1セルに「週の開始日」(例: 2025/9/29)を入力

  2. 見出し表示

    • B2以降に

      =TEXT($B$1+列番号,"m/d(aaa)")
  3. 条件付き書式

    • 列ごとに「土曜」「日曜」「祝日」を判定して色付け


ステップ4:祝日を自動反映する

仕組み

  • 固定祝日(元日、建国記念日など)

  • ハッピーマンデー制度(成人の日、海の日、敬老の日、スポーツの日)

  • 春分・秋分(1980〜2099年は近似式で計算)

  • 振替休日(日曜の祝日→翌平日)

  • 国民の休日(祝日で挟まれた平日)

このルールをVBAで計算し、「祝日」シートに一覧化 → 他シートが COUNTIF で参照して色分けします。
※ネットから取得しているわけではありません。


VBAコード全文(標準モジュールに貼り付け)


ステップ5:完成版テンプレート

上記の手順をすべてまとめた「サンプルExcelカレンダー.xlsm」を用意しました。

  • 年間/月間/週間カレンダー

  • 祝日シートに年を入力 → [最新の祝日を取得] ボタン

  • 祝日・土日が自動で色分け

📂 ダウンロード:Excelサンプルをダウンロード


まとめ

  • Excel標準機能(DATE、TEXT、WEEKDAY、COUNTIF)で年間・月間・週間カレンダーを作成

  • VBAマクロで祝日リストを自動生成 → 条件付き書式で色分け

  • 配布テンプレートを使えばすぐに利用可能

Excelの共有ファイルがロックされて閉じれない!原因と解除方法まとめ

業務でよく使う共有サーバ上のExcelファイル。
「誰も開いていないはずなのに編集できない」「ファイルは編集のためロックされています」と表示されて閉じれない…
そんな経験はありませんか?

本記事では、Excelの共有ファイルがロックされて閉じれない原因と、実際に解除する方法をまとめます。


よくあるエラーメッセージ

  • 「ファイルは編集のためロックされています」

  • 「現在使用中です。読み取り専用で開きますか?」

  • 「保存できませんでした。他のユーザーが変更しました。名前を付けて保存してください。」

いずれも、誰も開いていないのに“開いている扱い” になっているときに出る典型的なメッセージです。


原因1:一時ロックファイル(~$ファイル)の残存

Excelは共有ファイルを開くとき、同じフォルダに「~$ファイル名.xlsx」という隠しファイルを作ります。
本来は閉じると自動削除されますが、以下のような場合に残ってしまうことがあります。

  • Excelが強制終了した

  • ネットワーク切断が起きた

  • サーバが応答しなかった

→ この「~$ファイル」がある限り、Excelは「まだ開かれている」と判断し、編集不可になります。

解除方法:

  • 共有フォルダに入り、「~$ファイル名.xlsx」を削除する


原因2:サーバ側のセッションが残っている

Excelを閉じたつもりでも、サーバが「まだ開いている」と誤認してセッションが残ることがあります。
これは特にWindows ServerやNAS環境で発生しやすいです。

解除方法:

  • サーバ管理者に依頼し、「コンピュータの管理」→「共有フォルダ」→「開いているファイル」から該当ファイルを強制クローズする


原因3:共有ブック機能の不具合・競合

古いExcelの「ブックの共有」機能は、複数人編集時に不具合や競合を起こしやすいです。
特に同時に保存した場合、誰も開いていなくても「保存できません」などのメッセージが出やすくなります。

解除方法:

  • コピーを別名保存して作業を続ける

  • 長期的には、OneDriveやSharePointに移行して「共同編集」機能を利用するのがおすすめです


再発防止策

  1. よく使うファイルはクラウドで共同編集に移行
    → OneDrive / SharePoint / Teamsなら同時編集が可能でロックの心配が少ない。

  2. 参照用と編集用を分ける
    → 参照専用ファイルを作り、更新担当者のみが編集ファイルを扱う。

  3. ロック解除の手順をマニュアル化
    → 「~$ファイル削除」「サーバで強制クローズ」を手順化しておくとトラブル対応がスムーズ。


まとめ

  • 原因の大半は「~$ファイル残り」か「サーバのセッション残り」

  • 応急処置は「~$ファイル削除」または「管理者による強制クローズ」

  • 頻発するなら クラウド共同編集に移行 するのが根本解決


💡 現場では「Excelがロックされて閉じれない!」という声が上がりがちですが、仕組みを知っておけば慌てず対処できます。

【保存版】Excelで文字列を分割する方法(区切り位置&関数)

Excelで大量のデータを扱っていると「氏名を姓と名に分けたい」「住所から都道府県だけ抽出したい」といった場面がよくあります。
そんなときに便利なのが 文字列を分割する方法 です。

Excelには以下の2つの方法があります。

  1. 区切り位置 機能で一括分割

  2. 関数 で動的に分割

さらに Excel 365以降なら TEXTSPLIT 関数 を使うことで一気に処理できます。本記事では、それぞれの使い方をわかりやすく解説します。


1. 区切り位置を使って文字列を分割する方法

「区切り位置」は、セル内の文字列を スペース・カンマ・タブ などの区切り文字で分割し、複数列に展開する機能です。

手順

  1. 分割したいセル範囲を選択

  2. [データ] タブ → [区切り位置] をクリック

  3. 「区切り文字あり」を選んで [次へ]

  4. 区切り文字(スペース、カンマなど)を指定

  5. [完了] を押すと自動で分割

  • 「山田 太郎」 → 「山田」「太郎」に分割

  • 「東京都,新宿区,西新宿」 → 「東京都」「新宿区」「西新宿」に分割

メリット

  • ワンクリックで大量のセルを一気に処理可能

  • 初心者でも簡単

⚠️ デメリット

  • 元データが更新されても自動反映されない


2. 関数を使って文字列を分割する方法

データが更新されても動的に処理したい場合は 関数 を利用します。

代表的な関数

LEFT / RIGHT / MID 関数

  • =LEFT(文字列, 文字数) → 先頭から指定文字数を抽出

  • =RIGHT(文字列, 文字数) → 末尾から指定文字数を抽出

  • =MID(文字列, 開始位置, 文字数) → 任意の位置から文字を抽出

FIND / SEARCH 関数

  • =FIND(" ",A2) → セルA2のスペース位置を検索

  • SEARCH は大文字小文字を区別せず検索可能


3. TEXTSPLIT関数(Excel 365以降)

Excel 365以降では TEXTSPLIT を使えば一発です。

構文

=TEXTSPLIT(文字列, 区切り文字)

 
=TEXTSPLIT("山田 太郎"," ")

→ 「山田」「太郎」に分割

住所の例

=TEXTSPLIT("東京都 新宿区 西新宿"," ")

→ 「東京都」「新宿区」「西新宿」に分割

✅ シンプルで応用も簡単!


4. 古いExcelでTEXTSPLITを代替する方法

Excel 2016 / 2019 など TEXTSPLIT未対応のバージョンでは、LEFT / MID / RIGHT / FIND / LEN の組み合わせで対応できます。

氏名の分割(A2セルが「山田 太郎」の場合)

  • 姓(山田)

=LEFT(A2,FIND(" ",A2)-1)
  • 名(太郎)

=MID(A2,FIND(" ",A2)+1,LEN(A2)-FIND(" ",A2))

住所の分割(E2セルが「東京都 新宿区 西新宿」の場合)

  • 都道府県

=LEFT(E2,FIND(" ",E2)-1)
  • 市区町村

=MID(E2,FIND(" ",E2)+1,FIND(" ",E2,FIND(" ",E2)+1)-FIND(" ",E2)-1)
  • 町域

=RIGHT(E2,LEN(E2)-FIND(" ",E2,FIND(" ",E2)+1))

⚠️ 注意:スペースが「全角」で入力されている場合は、事前に

=SUBSTITUTE(E2," "," ")

で半角に置換してから使うと安定します。


5. 区切り位置と関数の使い分け

  • 一度だけ分割する場合 → 区切り位置が便利

  • 更新されるデータを扱う場合 → 関数を使うのがベスト

  • Excel 365以降のユーザー → TEXTSPLITで最速処理


まとめ

Excelで文字列を分割する方法は大きく分けて以下の3つ:

  • 区切り位置(手早く一括分割)

  • TEXTSPLIT関数(Excel 365以降)(最もシンプル)

  • LEFT / MID / RIGHT 関数の組み合わせ(古いバージョン対応)

環境や目的に合わせて最適な方法を選べば、日常業務がさらに効率化できます。

ChatGPTにExcelマクロを書かせてCSVを自動処理|初心者でもできるフィルタリング自動化

はじめに

業務でCSVデータを扱う機会は多いですが、毎回手作業でフィルタリングするのは大変です。
そんなときに便利なのが Excelマクロ(VBA)による自動処理

しかも今は、ChatGPTに「CSVを読み込んでフィルタリングするマクロを書いて」と依頼するだけで、即座にマクロコードを生成してくれます。

この記事では、その手順を実際の例で紹介します。


手順①:ChatGPTに依頼する

ChatGPTに次のように入力します。

プロンプト例:

CSVファイルを読み込んで、列Bが「完了」のデータだけを新しいシートに表示するExcel VBAマクロを書いてください。

👉 条件(例:「列Bが完了」)は自由に変更できます。


手順②:ChatGPTが生成したマクロコード

ChatGPTは以下のようなコードを生成してくれます。


手順③:Excelに貼り付ける

  1. Excelを開き、Alt + F11でVBAエディタを起動

  2. 「挿入」→「標準モジュール」を選択

  3. 上記コードを貼り付け

  4. CSVファイルのパス(filePath)を自分の環境に合わせて変更


手順④:マクロを実行する

  1. Excelに戻り、Alt + F8を押して「ImportAndFilterCSV」を実行

  2. 新しいシート「Filtered」に、列Bが「完了」のデータだけが表示される

これでCSVのフィルタリングが自動化できました!


応用ポイント

  • 条件を「完了」以外に変えることで、自由にフィルタリング可能

  • 複数条件もIf文を追加すれば対応できる

  • 定期的に同じCSVを処理する場合は、処理時間を大幅に短縮できる


まとめ

ChatGPTを活用すれば、複雑に思えるCSV読み込み+フィルタリング処理も、たった1行の依頼でマクロコードが完成します。

毎日の業務で繰り返しCSV処理をしている方は、ぜひChatGPTにコード生成を任せてみてください。

👉 次回は「条件付きでセルに色をつけるマクロ」をChatGPTで生成する方法を紹介予定です。

👉 ChatGPTでできるExcel自動化の基本4ステップ|列A+Bを合計して列Cに表示する方法

毎日のExcel作業で「同じ計算を繰り返すのが面倒…」と感じていませんか?
実はChatGPTを使えば、数行の依頼だけでExcelマクロを自動生成でき、作業を一気に効率化できます。

この記事では、列Aと列Bを合計して列Cに表示するシンプルなマクロをChatGPTに作らせる手順を紹介します。
初心者でもコピペで使えるので、今日からすぐに実践可能です。


手順①:ChatGPTに依頼するプロンプト例

まずはChatGPTを開き、次のように指示を入力します。

プロンプト例:

Excel VBAで、列Aと列Bを合計して列Cに表示するマクロを書いてください。

手順②:ChatGPTが生成したマクロコード

ChatGPTからは以下のようなコードが返ってきます。

このコードは、

  • 列Aの最終行を取得

  • 1行目から最終行まで繰り返し

  • 列A+列Bの値を列Cに出力

という処理を自動で行ってくれます。

手順③:Excelに貼り付ける

  1. Excelを開き、Alt + F11 を押してVBAエディタを開く

  2. 「挿入」→「標準モジュール」を選択

  3. ChatGPTが出力したコードを貼り付ける

  4. Ctrl + Sで保存


手順④:マクロを実行する

  1. Excelに戻り、Alt + F8 を押す

  2. 「SumColumns」を選択して実行

  3. 列Cに、列A+列Bの合計が自動で入力される

これで完成です!

まとめ

ChatGPTを活用すれば、たった1行の依頼でExcelマクロを自動生成できます。
今回の例では「列A+列Bの合計 → 列Cに表示」というシンプルな処理でしたが、応用すればデータ加工やレポート作成も自動化できます。

👉 さらに詳しい応用例(CSV加工や条件付き処理など)は別記事で紹介予定です。

業務の時短にぜひ活用してみてください!

 

Excel:半角・全角文字のチェック方法

Excelを使用して文字列の中に半角文字が含まれてるかどうかを確認する方法です。

半角文字の有無を確認するにはLEN関数とLENB関数の結果を比較することで文字列の中に半角文字が含まれてるかどうかを確認出来ます。

LEN関数とLENB関数を使用して半角文字の有無を確認する方法

以下はA列の文字列をLEN関数(文字列の長さ)とLENB関数(文字列のバイト数)でそれぞれで取得し、「LEN(A2)*2 – LENB(A2) = 0」に該当する場合に半角文字を含まないと判断してます。

Excel:文字列で入力済の値を数値形式へまとめて変換する方法

Excelで文字列として入力済の値をまとめて数値形式へ変換する方法です。

以下の様にA1~A3セルへは文字列として入力しており、A4セルで集計してますが文字列なので0表示されてしまっています。

このA1~A3セルの文字列を数値形式に変換してみます。

 

  1. 数値変換したい範囲を選択し、エラーチェックオプション(!マークのアイコン)を選択します。
  2. 「数値に変換する」を選択します。
  3. これだけで以下のように数値形式へ一括変換され正常に集計結果が表示されます。

Excel:図形(オブジェクト・オートシェイブ)内の文字列を検索する方法

Excelで図形(オブジェクト・オートシェイブ)内の文字列を検索すると通常は以下の様に検索結果にヒットせず「検索対象が見つかりません。…」と表示されます。

今回は「Relax Tools AddIn」というアドインを導入して図形内の文字列を検索可能とする手順を説明します。

アドイン「Relax Tools AddIn」のダウンロード

Excelで図形内の文字列を検索する手順

  1. 「オプション」を選択します。
  2. 「アドイン」⇒「設定」ボタンを選択します。
  3. 「参照」ボタンを選択します。
  4. ダウンロードしたファイル内にある「RelaxTools.xlam」を選択します。
  5. 以下の様に「RelaxTools AddIn」が追加されていることを確認します。
  6. 追加された「RelaxTools」タブの「検索/置換/装飾」⇒「セル・シェイブの正規表現検索」を選択します。
  7. 検索ボックスで検索を実施すると以下の様に図形内の文字列も検索結果として表示されているのが確認出来ます。

Excelの表をWordへ貼り付ける方法

Excelで作成した表やテーブルなどをWordへ貼り付ける場合、単純にコピペでも可能ですが、計算式などの書式は数値としてそのままコピーされるので今ひとつ使い勝手が良くない表になってしまいます。

そういう場合は「形式を選択した貼り付け」でExcel形式のオブジェクトとして貼り付けすることでExcelの計算式などもコピペ出来るので便利です。

Excelの表をWordへ貼り付ける手順

  1. Excelで貼り付けたい表を選択してコピーします。
  2. Wordで「ホーム」タブ ⇒ 「貼り付け」 ⇒ 「形式を選択して貼り付け」 を選択します。
  3. 「Microsoft Excel ワークシート オブジェクト」を選択して「OK」ボタンを選択します。
  4. 以下のようにExcelの表のまま貼り付けられているのが確認できます。
  5. 貼り付けた表をダブルクリックするとExcelベースでのフィルタやグループ化なども操作する事が可能となります。