Excel 検索と置換の検索対象(Look in)既定を値に固定する方法|VBA・XLSTARTで起動時に自動設定

Excelの[検索と置換](Ctrl+F/Ctrl+H)を開くたびに「検索対象(Look in)」が「数式」になってしまい、毎回「値」に直すのが地味にストレス…。実はExcelには既定値を固定する公式設定がほぼなく、起動時に一度だけ“ダミー検索”で好みの条件を上書きするのが現実的です。

目次

結論:Excelの「検索対象(Look in)」を恒久的に固定する設定は基本的にない

まず結論から整理します。Excelの[検索と置換]ダイアログ(Ctrl+F / Ctrl+H)で表示される「検索対象(Look in)」の既定値を、オプション画面などから恒久的に固定して保存する公式UIは基本的に用意されていません

一方で、Excelは「最後に使った検索条件」をある程度覚えます。しかし体感として、次のような“あるある”が起きます。

  • 前回「値(Values)」で検索したはずなのに、Excelを起動し直すと最初だけ「数式(Formulas)」に戻っている
  • ブックやアドインの影響で、起動直後だけ検索条件がリセットされることがある
  • 作業中は同じ設定が維持されるが、Excel再起動でまた面倒が復活する

そこで実用的なのが、Excel起動時に一度だけ“ダミー検索”を実行して、検索条件を自分の好みに上書きしてしまう方法です。いわば「固定」ではなく「起動直後に初期状態を整える」回避策ですが、運用するとストレスが大きく減ります。

やりたいこと現実的な答えおすすめ度
検索対象の既定をUIで固定したいできない(少なくとも一般的な設定項目はない)
毎回「数式→値」を切り替える手間をなくしたい起動時マクロで一度だけ「値」に上書きする
マクロ禁止環境で少しでも手間を減らしたい検索ウィンドウを閉じずに使い回す/ショートカット運用

なぜ「検索対象」が「数式」になりがちなのか

Excelの検索は、内部的には「直前に使った検索条件」を保持します。ただし、保持のされ方が完全に永続・完全に固定というよりは、セッション(Excelを起動している間)や状態に依存しやすいのがポイントです。

特に次の条件が重なると、起動直後の最初の検索だけ「数式」に戻ったように見えることがあります。

  • 起動時に開くブック(XLSTARTやスタートアップ設定)やアドインが、検索条件に触れている
  • 前回終了時の状態が正しく保存されず、Excel既定(多くの環境で「数式」)でスタートする
  • 検索対象が「数式」だと“式文字列”も対象になり、Excelとしては汎用的だが、日常用途では扱いづらい

日常の業務で「値」を探したいケース(顧客名、品番、金額、エラーメッセージなど)は多いため、既定が「数式」だとノイズが増えるのがつらいところです。例えば、セルに「=A1」といった数式が入っていると、数式検索では式文字列がヒットしやすく、意図した“表示値”の検索からズレることがあります。

Excel標準機能で既定値を保存できるか

「Excelのオプション」や「詳細設定」に、検索ダイアログの既定の検索対象(Look in)を固定する項目があれば話は早いのですが、一般的なExcel(Windows版のExcel 2016/2019/2021/Excel for Microsoft 365など)では、そのような項目は見当たりません。

そのため、狙いとしては次のどちらかになります。

  • 運用で回避:作業中は検索ウィンドウを閉じずに使い回し、切り替え回数を減らす
  • 起動時に上書き:VBAで一度だけ検索を実行し、アプリ全体の検索条件を「値」に寄せてスタートする

すぐできる手動の回避策(マクロが使えない場合)

会社PCなどでVBAが使えない場合は、次の手動運用が現実的です。

検索ウィンドウを閉じずに開きっぱなしにする

Ctrl+Fで検索ウィンドウを開き、オプションから「検索対象(Look in)」を一度「値」に変更したら、そのまま閉じずに作業を続けます。同じExcelセッション中は設定が維持されることが多く、毎回の切り替えが減ります。

検索対象を切り替える場面を“定型化”する

例えば次のように割り切ると、迷いが減ります。

探したいものおすすめの検索対象理由
表示されている文字・数値(氏名、金額、コード)値(Values)見えている内容に近い検索結果になりやすい
数式そのもの(=VLOOKUP、参照セル名など)数式(Formulas)式文字列を直接検索できる
コメント(メモ)内の文字コメント(環境により名称が異なる)セル値とは別領域を検索できる

定番の回避策:XLSTARTで自動実行マクロを走らせて「値」を初期状態にする

ここからが本題です。Excel起動時に自動で開かれるXLSTARTフォルダーを利用して、検索条件を“最初から好みの状態”に整えます。

この方法の仕組み

Excelは起動時にXLSTART内のブックを自動で開きます。そこで「ダミー検索」を一度だけ実行し、検索対象(Look in)をxlValues(値)にした状態を作ります。

ポイントは、VBAの検索(Range.Find)で指定した条件が、Excelの検索状態(直前の検索条件)として残りやすいことです。つまり、ユーザーがCtrl+Fを押した時点で、すでに「値」側に寄った条件が入っている、という運用ができます。

事前確認:XLSTARTフォルダーの場所を調べる

XLSTARTの場所は環境(Officeのインストール形態、Windows/Mac)で違うことがあります。迷ったらExcel自身に場所を言わせるのが確実です。

確認方法手順確実性
VBAで確認Application.StartupPath をイミディエイトウィンドウで表示
Excelの設定で確認[ファイル]→[オプション]→[詳細設定]→[全般]付近のスタートアップ関連
代表的なパスを当てにするWindowsのユーザープロファイル配下など低(環境差が大きい)

VBAで確認するための最小コード例です(表示するだけ)。

Sub ShowXLSTARTPath()
    MsgBox Application.StartupPath
End Sub

手順:設定用のブック(.xlsm)を作る

  1. 新規ブックを作成し、マクロ有効ブック(.xlsm)として保存します(例:FindPreset.xlsm)。
  2. ブック内のどこか(例:Sheet1のA1)に、検索で必ず見つかる文字列を入れます(例:DUMMY_FIND_PRESET)。
  3. VBE(Alt+F11)を開き、ThisWorkbookに起動時イベント(Workbook_Open)を書きます。
  4. 保存して閉じ、作成した FindPreset.xlsmXLSTARTフォルダーに移動します。
  5. Excelを再起動して、起動時に自動で処理が走ることを確認します。

VBAコード例:起動時に「値(xlValues)」を既定に寄せる

以下は、起動時に一度だけダミー検索を実行し、ブックを保存せずに閉じる例です。Sheet1のA1に「DUMMY_FIND_PRESET」が入っている前提です。

Private Sub Workbook_Open()
    Dim oldScreenUpdating As Boolean
    Dim oldDisplayAlerts As Boolean

    On Error GoTo SafeExit

    oldScreenUpdating = Application.ScreenUpdating
    oldDisplayAlerts = Application.DisplayAlerts

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    ' ダミー検索:ここで「検索対象(Look in)」などの条件を上書きする
    With ThisWorkbook.Worksheets(1)
        .Cells.Find _
            What:="DUMMY_FIND_PRESET", _
            After:=.Range("A1"), _
            LookIn:=xlValues, _
            LookAt:=xlPart, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False, _
            MatchByte:=False, _
            SearchFormat:=False
    End With

SafeExit:
    Application.DisplayAlerts = oldDisplayAlerts
    Application.ScreenUpdating = oldScreenUpdating

    ' ブックは邪魔にならないように保存せず閉じる
    ThisWorkbook.Close SaveChanges:=False
End Sub

このコードの狙いは「検索対象を値にする」だけではありません。部分一致/検索方向/大文字小文字など、日常でよく使う検索条件も同時に“いつもの状態”へ寄せられます。必要に応じて引数を調整してください。

「検索と置換」オプションとVBA引数の対応表

ダイアログの項目とVBAの引数がつながると、調整がしやすくなります。

検索ダイアログの項目VBA(Range.Find)の引数おすすめ例補足
検索対象(Look in)LookInxlValues表示値を探したいなら値が無難
検索する場所(Search)SearchOrderxlByRows行方向に見ていくか、列方向に見ていくか
方向(Direction)SearchDirectionxlNext次を探す(前を探すならxlPrevious
検索する文字列の一致LookAtxlPart部分一致(完全一致はxlWhole
大文字と小文字を区別するMatchCaseFalse英数字の検索が多い場合は要検討
半角と全角を区別するMatchByteFalse日本語環境で気になる場合のみ調整

XLSTARTに入れた後のテスト方法

  1. Excelを完全に終了します(ウィンドウを閉じるだけでなく、タスクに残っていないかも確認すると確実です)。
  2. Excelを起動します。
  3. 任意のブックでCtrl+Fを押し、[オプション]を開いて検索対象(Look in)が「値」寄りになっているかを確認します。
  4. 必要なら、マクロ内の引数(LookAtMatchCaseなど)を調整します。

マクロが動かないときに最初に疑うこと(セキュリティ)

起動時マクロが効かない原因の多くは、VBAの書き方よりマクロの許可設定です。次を確認してください。

  • Excelのセキュリティ設定でマクロが無効になっていないか(特に会社PC)
  • 作成したブックが「信頼できる場所」に置かれているか(必要ならXLSTARTを信頼済みにする)
  • ダウンロードしたファイルをそのまま使っていないか(ブロック属性が付くと動かない場合があります)

「自分で作ったファイルなのに動かない」という場合は、XLSTARTに置いた後にファイルを開くとき、上部にセキュリティ警告が出ていないか確認すると早いです。

別解:PERSONAL.XLSBに組み込む(個人用マクロブックを使っている人向け)

すでにPERSONAL.XLSB(個人用マクロブック)を運用している場合、そこに「検索条件を整えるマクロ」を入れるのも手です。PERSONAL.XLSB自体がXLSTARTで開かれることが多く、管理が一箇所にまとまります。

ただし、PERSONAL.XLSBは環境によって存在しない/非表示で扱いが難しいことがあります。初めての方は、まずは今回の専用ブック方式(FindPreset.xlsm)のほうが分かりやすいでしょう。

注意点:この方法で「できること」と「できないこと」

できること

  • Excel起動直後の検索条件を「値(xlValues)」に寄せてスタートできる
  • 部分一致・完全一致、大文字小文字など、よく使う条件も“いつもの状態”にできる
  • その後にユーザーが手動で変更すれば、Excelは変更後の条件も覚える(運用の自由度が高い)

できないこと(仕様上の制限)

  • 「固定」ではないため、ユーザーが検索ダイアログで別条件に変更すれば、その条件に切り替わる
  • 検索ダイアログにある「シート/ブック」などの範囲選択は、VBAのFind引数だけで完全に同等操作するのが難しい(検索範囲はRangeで実質的に決まる)
  • マクロ実行が禁止されている環境では使えない

トラブルシューティング:よくある症状と対策

症状原因の候補対策
起動しても設定が変わらないマクロが無効/XLSTARTに置けていないセキュリティ警告の確認、XLSTARTパスの再確認、信頼済み場所に追加
たまに「数式」に戻る別のアドインや起動ブックが条件を書き換えている起動時に開くファイルを整理、アドインを一時停止して切り分け
FindPreset.xlsmが一瞬見えて邪魔起動時にブックが表示されている処理後すぐ閉じる(本記事のコード)、またはブックを非表示にして運用
検索条件が意図せず変わるマクロで他の引数も上書きしているLookAtMatchCaseなど、必要な引数だけに絞る

よくある質問

検索対象を「値」にしたら、数式の内容は検索できなくなる?

「値(xlValues)」に寄せるのはあくまで起動直後の初期状態です。数式を検索したいときは、いつも通り検索ダイアログで「数式」に切り替えればOKです。むしろ、普段は値、必要なときだけ数式、という切り替えのほうが誤ヒットが減ります。

ダミー検索で何を探すのが安全?

おすすめは、設定用ブック内のどこかに固定で入れておける文字列(例:DUMMY_FIND_PRESET)です。他の実データを触らずに必ずヒットするため、意図しない選択や移動を避けやすくなります。

置換(Ctrl+H)の既定も同じように整えられる?

多くの環境では、検索と置換は検索条件の状態を共有します。まずは本記事の「検索対象(Look in)を値へ寄せる」だけでも置換の操作性が改善することが多いです。置換をより厳密に制御したい場合は、Range.Replaceを使った専用マクロ運用も検討できます。

まとめ:毎回の手作業を「起動時の1回」に集約するのが最もラク

Excelの[検索と置換]で「検索対象(Look in)」が毎回「数式」になってしまう問題は、標準UIだけで“既定値を固定”するのが難しいのが現実です。

だからこそ、Excel起動時に一度だけダミー検索を実行して、検索条件を「値」に寄せる回避策が効きます。設定を“固定”するのではなく、“毎回の面倒”を起動時の自動処理に肩代わりさせる発想です。

毎日のCtrl+Fが快適になるだけで、作業のテンポが変わります。まずは最小構成(LookIn:=xlValues)から始め、必要に応じて一致条件や大文字小文字なども自分仕様に整えてみてください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次