住所録にキーワードを入力することで、
対応する番号を検索してくれるような計算シートを作りたいのですが、
どうすればいいのか分からず困ってます。
例えば、下記のような住所録から、
"JAP" "鈴木" "一郎"というキーワードを入力すると
「xxx01」を出力してくれるようなものを作りたいのです。
______________________________________
A | B | C
______________________________________
1|JAPAN 鈴木一郎 | xxx01
2|JAP 鈴木二郎 | xxx02
3|JAP 鈴木三郎 | xxx03
4|JAPAN 佐藤一郎 | xxx04
5|AMERICA 鈴木一郎 | xxx05
6|AME 佐藤一郎 | xxx06
______________________________________
上記のとおり、"JAP"だったり"JAPAN"だったり、表記ゆれがあるので
VLOOKUPのような関数は使えそうに無いです。
関数でもマクロでも構わないのでいい方法があればご教授願います。
宜しくお願いいたします。
No.3
- 回答日時:
次の方法をお試し下さい。
=VLOOKUP(*"JAP*鈴木*一郎*",$B$1:$C$6,2,FALSE)
又は、セルにキーワードを入力されている場合、=VLOOKUP("*"&セル1&"*"&セル2&"*"&セル3&"*",$B$1:$C$6,2,0)
No.2
- 回答日時:
ワークシート関数を自作するのは、いかがですか?
下記のようなコードを VBE の標準モジュールに貼り付けます。
それから、D1 セルに次の数式を入力します。
=KWD(B1,”JAP 鈴木 一郎”,” “)
第一引数は、調べる対象となるセルまたは文字列
第二引数は、キーワード文字列となるセルまたは文字列
第三引数は、第二引数のキーワードをどの文字で要素に分解するか
をそれぞれ指定します。全ての要素が含まれれば、関数は True を
返します。例えば、リストが2行目から始まるとしたら、検索キー
ワードの入力セルをB1として、
=KWD(B2,$B$1,” “)
のように指定します。
あとは、オートフィルタで抽出できますよね。
# この回答は「任意の文字列に複数のキーワードが全て含まれるか?」を
# 調べる一手法を紹介するものです。
#1 ご回答にあるとおり、この手の処理は、例えば末尾の不要スペース・
表記のゆれ等が障害となリ得ます。したがって、
・データ側を正規化する
・検索プログラム側で対処する
下記の例だと InStr で vbTextCompare とし、大文字・小文字を区別
しないようにしてます。このようなことです。
のいずれかの対策が必要になりますので、この辺りも考えてみてください。
' // 標準モジュール
' // [対象]に[キーワード]を[区切り文字]で分解した全ての要素
' // が含まれるとき True を返す
Public Function KWD( _
ByVal 対象 As Variant, _
ByVal キーワード As String, _
ByVal 区切り文字 As String _
) As Boolean
Dim vKeys As Variant, vKey As Variant
Dim bFlag As Boolean
If Len(キーワード) = 0 Then Exit Function
vKeys = Split(キーワード, 区切り文字)
bFlag = True
For Each vKey In vKeys
If InStr(1, 対象, vKey, vbTextCompare) <= 0 Then
bFlag = False
Exit For
End If
Next
KWD = bFlag
End Function
No.1
- 回答日時:
問題が簡単化されていて、深みの難しさが見えない。
質問者にも整理されていないのではと思うが。(1)関数は、2つ(1つ見つかってそれ以下の行)目以後の該当を見つけにくい(式がやたら複雑)
(2)例題では
国部
苗字部
名前部
のような一見納得する例になっていますが、実際例はそうでなく、もっと多かったり、予想外の該当箇所があるかもしれないと思う。
ーー
そういう理由から
(1)VBAを使わざるを得ないのでは。
Findメソッドやワイルドカードなども使えるので、その検索語を、「含む」かどうかは、割り出せると思う。
ただ例での3点からの語で見つかった時に限り、見つかったと断定してxxx01を返して良いのか。
表記のゆれは、上記の表の中に取り込まれているのか、など不安な面あり。
FindメソッドやInStr関数の使い方を学べば、後はVBAの一般知識でこなせると思う。
検索して、何点が見つかったか、見つかったものをストックし、最終に最有力を決めるなどが必要なようで、面倒ですね。
この辺を文章で明確に定式化して表現するのは、質問者の役割です。
業者に頼むときはSEなりがするでしょうが。
住所録そのものが不完全なものだったので、
表記ゆれなどは自分が入力するキーワードで
カバーできるようにしたかったんですが。
VBAでいくつかの関数を組み合わせて、検索をかけるしか手が無いようですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) 一太郎付属の”全件検索”ツールの不具合 3 2023/07/25 15:03
- Access(アクセス) アクセスで教えてください。 例えばテーブル1に 1 佐藤 2 鈴木 3 佐々木 コードと住所一覧があ 3 2022/06/11 20:45
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) ランダムに並んだ人の名前から、全種類の人を抜き出す関数 7 2022/07/08 08:06
- その他(パソコン・周辺機器) チャレンジタッチ3 改造 アプリインストールできない 1 2022/07/01 14:43
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- UNIX・Linux bash のファイルの読み込み方についてご質問 3 2023/05/15 20:40
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ワード、上下中央揃えにしたい...
-
A4縦の2枚のワードをA3にするや...
-
互換性のないSafariからみた画...
-
右側に半券のついたチケットを...
-
ワードやエクセルのファイルの...
-
ワードが白と黒が反転してしま...
-
ワードの文字数カウント機能の...
-
KADOKAWA電撃大賞の互換ソフト...
-
なぜワードで開けず互換性ソフ...
-
最近MacBookに変えました。 マ...
-
ワードのこと教えてくれるとこ...
-
KADOKAWA電撃文庫のSafariで見...
-
ワードの差し込み文書で困って...
-
A4サイズ横位置というのは ワー...
-
ワードでの文字数計算って文字...
-
PDFってワードで共有押して,ス...
-
ワード2016で図の形式の色の変...
-
パソコンで見た時とスマホで見...
-
office365のワードがプリントで...
-
20×20×30=12000文字になります...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードの行✖️文字数について。 ...
-
A4縦の2枚のワードをA3にするや...
-
A4サイズ横位置というのは ワー...
-
アップルに電話したけどやはり...
-
ワード、上下中央揃えにしたい...
-
ワードってスマホから見ると、...
-
スマホで横書きでもパソコンで...
-
txtのファイルから編集してもい...
-
スマホアプリのワードが横書き...
-
ワードのこと教えてくれるとこ...
-
スマホのワードが開かないのっ...
-
https://dengekitaisho.jp/nove...
-
表示かダウンロードのどちらか...
-
最近MacBookに変えました。 マ...
-
これってワードですか? 先方が...
-
KADOKAWA電撃文庫のSafariで見...
-
txtって、ページ番号振れないん...
-
スマホの文書って見え方がどう...
-
普通の場合は400字詰め換算でも...
-
これらアプリって購入済みにな...
おすすめ情報