• ベストアンサー

HYPERLINKで指定セル内容で曖昧検索したい

エクセルのHYPERLINK関数で検索文字をB2セルにを入力した場合、B2セル+*のようにセル内容で曖昧検索出来ないのでしょうか? 例えばC列にABC123、ABC-123、ABC 123、・・・のどれかで入力されているような場合、検索セルにABCと入れると該当するセルにジャンプするようにしたいのですが。 現在フィルタを使用しているのですが使い勝手が悪く何とかできないかと。 VBAでの対応でも良いのですが当方永遠のVBA初心者なのでご了承くださいませ。 検索値が「該当なし」もあり得ますのでご配慮お願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.4

No3の追加です。 HYPERLINKでジャンプしたい場合は以下のようにもできます。 =IFERROR(HYPERLINK("#C"&MATCH(B2&"*",C:C,0),VLOOKUP(B2&"*",C:C,1,FALSE)),"なし")

akira0723
質問者

お礼

おはようございます。 朝一で確認しました。 全く想定通りの動作が確認出来ました! 今回も複数回のお手数をおかけしましたが一発解決でスッキリです。 IFERRORは知っていましたがあまり需要が無く?初めて採用の関数です。 昨日入力表を質問に合わせて全面改定して準備完了しているので、関係者に周知して早々に使用開始します。 朝一でスッキリして仕事に取り掛かれます。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.3

> 製品名なのでどれか1つでないと困るので入力時に正しい品名の行にジャンプ(入力させたい)のです。 「どれかで入力」を、ABCで始まるのが複数あると思ってました。どれかひとつなのですね。 たとえば適当なセルに =VLOOKUP(B2&"*",C:C,1,FALSE) でそのセルに該当する製品名が表示されますが、いかがでしょうか。 ただし、たとえばABC123がC1にありその後の行にABCD123があるとB2にABCでは上の行にあるABC123がヒットします。 多分HYPERLINK関数でジャンプしても同じところに到達すると思います。

akira0723
質問者

補足

#No4までご丁寧な回答に感謝です。 なるほど、ABCD・・・は想定していませんでした。 が、改良品などは枝番のようにして出てくる可能性もありでした。 ただし、種々のオペミスの原因になるので基本は無いはずですし、実害が出る可能性は非常に低いと思います。 (少なくとも入力担当者の記憶と気配り頼りに比べたらはるかに良い) 申し訳ありませんが検証は明日になってしまいますので、結果報告は明日ということにさせていただきます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ジャンプであっても、「検索して」該当へ飛ぶ機能が要求されているので、HYPERLINK関数は適当でないのでは。 ーー WEBを検索するとFind関連の、たくさん記事がある。 検索語「VBA find  ワイルドカード」など。 https://excelwork.info/excel/findwildcard/ を手直しして Sub test01() keyw = InputBox("検索語") keyw = "*" & keyw & "*" 'ワイルドカード Set myRng = Range("C1:C1000").Find(what:=keyw, LookAt:=xlWhole) If myRng Is Nothing Then MsgBox "見つからず" Exit Sub Else Set firstCell = myRng End If '--- Do St = St & myRng.Value & vbLf Set myRng = Range("C1:C1000").FindNext(myRng) If firstCell.Address = myRng.Address Then Exit Do Loop MsgBox St End Sub Find、FindNextは初心者に難しいと思うが、慣れの問題でしょう。 上記は複数該当があってもすべて列挙(表示)するだけ。 ワイルドカードの仕組みを使っている。 ーー しかし、質問には ・該当は複数ありえるのか(コンピュター処理では、なんでも複数あるかどうかは大切だ) ・個々の該当を発見しSelectをして何をしたいのか。 が質問に書いてない。ー>問題では? ーー あり場所をシート上で確認するだけなら Sub test01() ActiveSheet.Select keyw = InputBox("検索語") keyw = "*" & keyw & "*" Set myrng = Range("C1:C1000").Find(what:=keyw, LookAt:=xlWhole) If myrng Is Nothing Then MsgBox "見つからず" Exit Sub Else Set firstCell = myrng myrng.Select MsgBox "A" End If '--- Do St = St & myrng.Value & vbLf Set myrng = Range("C1:C1000").FindNext(myrng) If firstCell.Address = myrng.Address Then Exit Do myrng.Select MsgBox "Find" Loop 'MsgBox St End Sub

akira0723
質問者

お礼

ご回答ありがとうございます。 当方には少々ハイレベルであること、関数でのご回答で解決できましたので本ご回答の検証は未実施です。 申し訳ありません。

  • kkkkkm
  • ベストアンサー率65% (1620/2459)
回答No.1

HYPERLINKでワイルドカードが使えるどうかは分かりませんが、もしできたとして「該当するセルにジャンプ」ですが複数あるどのセルにジャンプするのでしょうか・・・ エクセルの検索機能を利用すればいかがでしょう。

akira0723
質問者

補足

いつもお世話になっております。 またまた、言葉足らずでした。 >・・・のどれかで入力されている・・・ 製品名なのでどれか1つでないと困るので入力時に正しい品名の行にジャンプ(入力させたい)のです。 放っておくと、人によってABC123とABC 123で入力されてしまうのでデータ集計時に上記の検定や気配りが必要となり、見落とす(間違いやすい表記が思いつかない)と不具合となります。現在は経験と気配りで対処しています。 また、表は新製品名が発生すると追記されます。 >検索値が「該当なし」もあり得ます・・・・(新製品の場合) 最初の入力は決まった担当者が申請書通りで入れることになっています。 尚、HYPERLINKで「文字列+*」ならワイルドカードが使えるところまでは調べたのですがセルをTEXT(指定セル)*ではだめでした。(と思います) 当方が思う以上に複雑(長い)コードになるならご回答の方法や、従来通りフルターで再検討してみることにします。

関連するQ&A

  • EXCEL HYPERLINKジャンプ先を間接指定

    常に最初の空白セルへジャンプさせたくてHYPERLINK関数を使おうと思い、 ジャンプ先を間接指定したいのですがその方法を教えてください。 R1C1形式で記述します。  R1C1=ADDRESS(5+COUNTA(R6C9:R36C9),9,1,FALSE) R1C1はジャンプ先であるR33C9の計算結果が出ています。 R1C2をクリックするとR33C9へジャンプして欲しいのですが、  R1C2=HYPERLINK("#R1C1", "入力セルへジャンプ")  R1C2=HYPERLINK("#INDEX(R1C1,1,1)", "入力セルへジャンプ") などではR1C1へジャンプしてしまいます。間接してするにはどうしたら良いでしょうか。 それとも外に、1クリックでジャンプさせる方法がありますか。

  • EXCEL HYPERLINKジャンプ先の間接指定

    常に最初の空白セルへジャンプさせたくて、 HYPERLINK関数を使いジャンプ先を間接指定したいのですが、 その方法を教えてください。 R1C1形式で記述します。  R1C1=ADDRESS(5+COUNTA(R6C9:R36C9),9,1,FALSE) R1C1はジャンプ先であるR33C9の計算結果が出ています。 R1C2をクリックするとR33C9へジャンプして欲しいのですが、  R1C2=HYPERLINK("#R1C1", "入力セルへジャンプ")  R1C2=HYPERLINK("#INDEX(R1C1,1,1)", "入力セルへジャンプ") などではR1C1へジャンプしてしまいます。間接してするにはどうしたら良いでしょうか。 それとも外に、1クリックでジャンプさせる方法がありますか。

  • Excelでのセル検索

    添付図のように「検索と選択」をクリックし、さらに「検索」をクリックし、文字列を入力し検索を実行し、該当があればそのセルへジャンプしますが、 これをこのシートと別のシートの任意のセルに検索文字列を入力し、該当があった場合にそのセルへシートを跨いでジャンプさせることは可能でしょうか? 表現がわかりづらいかもしれませんが、不足情報は補足しますので、宜しくお願い致します。 ちなみ添付図はExcel2010でのスクショになります。

  • VBA 検索したセルに入力

    ExcelのVBAを使用して データの入力されたファイルに行列から検索したセルに数値を入力したいのです。 例えば、名前(行)と、日付(列) 2つの条件で、セルを検索し、該当するセルに、データ(数字とか)を 入力したいのです ------------------------------------  6/1 6/2 6/3 6/4 ・・・ a b c ・ ・ ------------------------------------ 例えば、A5に名前、B5に日付、データエリアがB10:Z20の場合 =INDEX(B10:Z20,MATCH(A5,A10:A20,0),MATCH(B5,B9:Z9,0)) で、該当するセルを探すことはできたのですが、 このセルに、データを入力したいときは、 ROWやCOLUMNで、行番号、列番号を取り出して Cellsで、入力すればいいのかな?と考えていますが もっと簡単にできるのでしょうか? (FIND関数は、使ったことがなく、どうなんだろう?と) それでいいよ とか、こっちの方が簡単 とかあれば、教えてください 

  • INDEX MATCH HYPERLINK 

    こんにちは。 エクセル表で社員の勤怠を入力しています。 表はA1からL10までの範囲で、A1は空欄、B列は日付、C1からL1までは10/1から10/10までの日付が入力されています。A2はCODE、B2は氏名の列の項目名、C2からL10までは曜日が入力されています。A3から下にA10までの列はそれぞれ社員コードとなる数字が、B3から下にB10までは社員名が 入力されています。C3からL10までは特に何も入力されていない状態ですが、入力規則でリストから、項目を選ぶ形式です。また、C3からL10までは検索スペースという名前をつけてあります。入力作業の補助のために、N4のセルに日付を入力し、N7に社員コードを入力して、N12をクリックすると、表の該当の箇所にジャンプする関数を作成したいのですが、うまくいきません。 式は、=IF(ISERROR(HYPERLINK("#検索スペース"&INDEX($B$2:$L$10,MATCH(N4,$C$1:$L$1,0),MATCH(N7,$A$3:$A$10,0)),"検索")),"値を入力してください!",HYPERLINK("#検索スペース"&INDEX($B$2:$L$10,MATCH(N4,$C$1:$L$1,0),MATCH(N7,$A$3:$A$10,0)),"検索"))です。 N12をクリックすると「参照が正しくありません」とエラーメッセージが現れます。どこがおかしいのか、教えてくださえるかた、お願いします。 説明が悪いようでしたら補足いたしますので、ご質問ください。 よろしくお願いします。

  • Hyperlink関数をクリックしてくれるマクロ

    どなたか詳しい方教えていただけないでしょうか? ExcelのセルA1に以下のhyperlink関数を入れています。 =HYPERLINK(″#C″&MATCH(B1,C:C),″クリック″) 隣のB1に入れた数字を元にC列に存在する同じ数字先にジャンプするように関数を作ってます。 A1にできたリンクをクリックしたは、B1に入力されているものと同じ数字先のC列に飛ぶようにマクロを組みたいのですが、どうしたらいいでしょうか? ハイパーリンク関数がマクロに組み込めないのと色々調べてみましたがうまくいかないのでお手上げです。 どなたか詳しい方教えていただければと思います。 どうぞよろしくお願いします!

  • セルの指定方法

    セルに入力されている値で、セルを指定したいのです。 たとえば セルA1に"ABC"、A2には"DEF"という文字列が入ってるとします。 B1のセルは手動で入力します。 セルC1に何か式を入れて、セルB1にA1と入力したら"ABC"、A2と入力したら"DEF"と表示するようにしたいのです。 説明がうまくできなくて住みませんがよろしくお願いします。

  • 指定ファイル内の指定場所へセルの内容を記載したい

    エクセルマクロ初心者です。 今、指定ファイル内の指定場所へセルの内容を記載するマクロを考えています。 指定ファイルは.txtではなく、Notepadやメモ帳等で開くことができるファイルです。 仮にtest.abc(拡張子が.abc)とします。 先ほどセルといいましたが、正確にはA列、B列です。行は複数ありA列とB列の行数は同一です。 i=1から始まり、空白行まで進んだら処理は終了です。 指定ファイルの存在場所は決まっています(C:\temp\test.abc)。 test.abcは下記のようにフォーマットとして決まっており、セルA1の内容、セルB1の内容を記載したらセルA2、セルB2の内容を記載していく・・・。としたいです *set(1) *creat(1) "" *input("#abc"," セルA1の内容 ",1,2,3) *mark(1) *name(comp,"abc"," セルB1の内容 ") *sel(0) *set(1) *creat(1) "" *input("#abc"," セルA2の内容 ",1,2,3) *mark(1) *name(comp,"abc"," セルB2の内容 ") *sel(0) *set(1) *creat(1) "" *input("#abc"," セルA3の内容 ",1,2,3) *mark(1) *name(comp,"abc"," セルB3の内容 ") *sel(0) セルの内容をベタ書きするというのは検索すると出てくるのですが、ファイル内の指定場所に書き込むというのが、応用が利かずどうにも分かりません。 どうぞご教示下さい。宜しくお願い致します。

  • 文字を検索し、同行の離れたセルに単語と数値を反映

    B列から「○○」という文字を検索し、 (1)該当した行のIセルに「小計」と入力 (2)Jセルに、Cセルの数値に「個」を付けたものを表示させる という作業を延々と繰り返しています。 該当する行はランダムにあります。 並べ替えが出来ない状態なので、VBAなのかな??と思うのですが、 マクロの記録ぐらいしかやったことがなくて…。 良い方法があれば教えて下さい。 お願いします。

  • エクセルVBAで指定したセルへジャンプするコード

    こんにちは。ファイル内の各シートのセルに順にジャンプするVBAのコードを教えていただけないでしょうか。以下のような条件や構成にしたいと考えています。 ・「操作ブック」と名づけたファイルに「設定」シートをつくり次のようにする A列B列の2行目以下に「シート名」「セル番地」を入力し、ジャンプするセルを入力 (例) A B←うまく表になりませんがB列がセル番地です Sheet1 E9 Sheet1 U7 Sheet2 S2 ・ジャンプする先は「操作ブック」内ではなく、開いている“もうひとつのブック内”の各シート ・ジャンプして選択したセルに一時的に色をつけ、次に進む時は色を元に戻す(難しいのであれば結構ですが、できればすごくうれしいです) ・「設定」シートに入力した上から下に順にジャンプする。ジャンプする前にメッセージで、「次に進みますか?」と聞き、「はい」で次のセルにジャンプする という設定にしたいのですが、マクロでジャンプの記録をとってみましたが、私にはとてもできない記述なので、教えていただきたく参りました。 よろしくお願いします。

専門家に質問してみよう