• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 検索について )

エクセル検索について

このQ&Aのポイント
  • エクセル2003での検索方法についての質問です。現在はCtrl+Fを使用して検索していますが、もっと簡単な方法はないか教えていただきたいです。
  • エクセル2003でのデータ検索の改善案を求めています。現在はCtrl+Fを使用して支店名を検索し、データをコピーして貼り付けしていますが、もっと簡単で効率的な方法はないでしょうか?
  • エクセル2003におけるデータ検索についての改善方法を教えてください。Ctrl+Fを使用しているが、もっと効率的な方法はないか悩んでいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • normo
  • ベストアンサー率54% (6/11)
回答No.2

こんな感じでいかがでしょう?説明は省いてコードだけ載せます。あまり自信がないのでしっかり動作確認してくださいね。 ただし、店舗一覧の中に「,」の文字列が入っていないことが条件です。 ○全ての入力用シートそれぞれのコードに以下をコピー Private Sub Worksheet_Change(ByVal Target As Range)  FindTenpo Target End Sub ○新規の標準モジュールに以下をコピー 開始5行の定数の宣言部分の値を書き換える Const cstSheetFind As String = "検索用" '← 検索用シートの名前 Const cstRowFrom As Integer = 2 '← 店舗一覧の開始行 Const cstRowTo As Integer = 3000 '← 店舗一覧の最終行 Const cstColFind As Integer = 3 '← 店舗一覧の列 Const cstColInput As Integer = 5 '← 入力用シートの入力列 Public booSin As Boolean Sub FindTenpo(ranTrg As Range)  If booSin Or ranTrg.Column <> cstColInput Or ranTrg.Rows.Count > 1 Or ranTrg.Columns.Count > 1 Then   Exit Sub  End If  Dim shtFind As Worksheet  Dim intRow As Integer  Dim strFind As String  Dim strLst As String  Dim strTrg As String  strTrg = ranTrg.Value  If strTrg = "" Then   ranTrg.Validation.Delete   Exit Sub  End If  On Error Resume Next  If Not InStr(1, ranTrg.Validation.Formula1, strTrg) > 0 Then  Else   ranTrg.Validation.Delete   Exit Sub  End If  On Error GoTo 0  Set shtFind = ThisWorkbook.Worksheets(cstSheetFind)  strLst = ""  For intRow = cstRowFrom To cstRowTo   strFind = shtFind.Cells(intRow, cstColFind)   If InStr(1, strFind, strTrg) > 0 Then    strLst = strLst & "," & strFind   End If  Next  If strLst = "" Then   ranTrg.Select   MsgBox "NOT FOUND!!", vbInformation  Else   booSin = True   strLst = Mid(strLst, 2)   If InStr(1, strLst, ",") = 0 Then    ranTrg.Validation.Delete    ranTrg.Value = strLst   Else    With ranTrg.Validation     .Delete     .Add Type:=xlValidateList, Formula1:=strLst     .InCellDropdown = True     .ShowError = False    End With    ranTrg.Select    SendKeys "%{DOWN}"   End If   booSin = False  End If End Sub

prtcw794
質問者

お礼

ありがとうございます!!! 理由は不明ですが一部のワード”倉庫”や”大阪”などを除きほぼ完璧に動作しました。 (エラー画面のあとデバックというのを選択すると .Add Type:=xlValidateList, Formula1:=strLst の一文が黄色で表示されています。 候補のHIT数が多すぎるのでしょか?ちなみに”倉庫”や”大阪”だけも検索することがあります…) 別件で、もうひとつお聞きしたいのですが、検索タブをクリックすると候補一覧が出てくるんですが入力セルの幅が狭いのと(規定のものなので変更不可)、文字が小さいのでちょっと検索しにくいのです…… 見やすいように変更可能でしょうか???

その他の回答 (2)

  • normo
  • ベストアンサー率54% (6/11)
回答No.3

入力規則のリストを 「店舗1,店舗2,店舗3,・・・」と文字列で指定している為、それが255文字を超えるとエラーになるらしいです。おそらくこれが原因かと思われます。 そこで2つ提案です。 1つ目:スペースで区切って「大阪 北」の様に複数の文字列を指定可能にしてさらに絞り込めるようにするという方法です。入力作業としては実用的にどうですか? 2つ目:作業用のシートを用意、または既存のシートの余白部分へリストを出力しセル範囲を指定する。これなら255文字超える事はありません。 どっちの方が良さそうですか?または両方を適用するか? もっと他によい方法を思いつけばいいのですが・・・ 残念ながら入力規則のリストの文字の大きさ等は変更できないのです。古典的な方法ですが、ズームで表示倍率を変えて大きくしてみると少しは見やすくなるかと思います。

  • normo
  • ベストアンサー率54% (6/11)
回答No.1

マクロは使わずに処理したいのでしょうか?

prtcw794
質問者

お礼

マクロOKです。 どんな方法でも良いので作業を簡単にしたいです。 検索して希望の支店名を選択というのは手動で、あとの処理が自動なら最高です。

関連するQ&A