エクセルVBAにて、個人情報が含まれていないか検索するマクロを作成しています。
複数の文字列のなかから、
「佐藤さん」
などと記入されているセルを検索したいのですが、部分一致で「さん」で検索すると
当然、「さん」を含むすべてのセルが検出されます。
その際に、「たくさん」「社長さん」など除外ワードを検索時に設定することは可能でしょうか。
除外ワードを設定するのが難しいのであれば、「さん」の検索をしたあとに
除外ワードの検索をするようにしようかと考え中です。
別々で検索する方法しかないかどうか、ご教授いただきたいです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんな質問はVBAの問題というより、日本人なのだろうから、文章や語句の洞察力の問題でしょう。
どういうロジックにすれば満足するものが出来るのか、まず文章にでも表現してご覧。それが出来ないならプログラムは組めない。ただし、文章化ができてもプログラムでは難しいことも多かろう。
例えば「さん」を見つける。その前に個人名があれば削除するとする。しかし個人名は沢山あって、個人の力では列挙できないのは常識だろう。質問者は、人名辞書まで当たるコードをつくる力は無いだろう。
だから不可能と思う。普通の人では、「おもちゃ」しか出来ないでしょう。
「さん」がついてない場合も在ろうし、「さま」もあろうし、社長さんもあろう。
こういうのはある程度プログラムにロジックとして組み込んで、あとは、人間が読んで判断するしかないだろう。
エクセルVBAごときが多少出来ても、こういう文章の内容や、文脈まで立ちいったことは出来ないし、エクセルは(VBAは)その道具として適当でない。
文章をセルに入れるのさえ、表計算ソフトの沿革から、当初予想された機能ではないとおもう。
大学院ででも情報処理の研究分野にするならともかく、難しい課題だ。
正規表現などという、概念・ツールがあるが、まだそういうことに近いことを目指しているように思うが(ぴったりというものではなく)、VBAの主流ではないし直ぐには学習が難しい。。
エクセルVBAでは、文章から名詞を抜き出すのさえ難しかろう。
>別々で検索する方法しかないかどうか、ご教授いただきたいです
プログラムのチェックルーチンを書き重ねることで、見かけ上一度にやれる手はありそう。
エクセルの操作を前提にして、囚われているから、「別々」とか言う発想(疑問に)なるのだ。
この回答への補足
現在、作成途中のものです。
Dim C As Range '検索する列
Dim R As Long '検索ワード最終行
Dim i As Long '検索ワード数
Dim W As String '検索ワード
Dim FoundCell As Range '検索結果格納
Dim FirstCell As Range
Dim Target As Range
Dim TargetB As String
Set C = Application.InputBox(Prompt:="チェックしたい列の任意のセルをクリックしてください", Type:=8)
Range(C.End(xlUp), C.End(xlDown)).Select '検索する列を選択
'検索ワードの最終行特定
R = Sheets(2).Cells(Rows.Count, 2).End(xlUp).Row
'検索ワードの数だけ、検索
For i = 2 To R
W = Sheets(2).Cells(i, 2).Value
Set FoundCell = Selection.Find(What:=W, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False, SearchFormat:=False)
If FoundCell Is Nothing Then '検索ワードがない場合は、0と入力
Sheets(2).Cells(i, 3).Value = 0
Else
Set FirstCell = FoundCell
FoundCell.Offset(0, 1).Value = Sheets(2).Cells(i, 2)
End If
Do
Set FoundCell = Cells.FindNext(FoundCell)
If FoundCell.Address = FirstCell.Address Then
Exit Do
Else
FoundCell.Offset(0, 1).Value = Sheets(2).Cells(i, 2)
End If
Loop
Next i
Dim cnt As Long 'フラグの数
Dim F As Long
F = ActiveCell.Offset(0, 1).Column
If Sheets(2).Cells(3, 3) = 0 Then
Else
cnt = WorksheetFunction.CountIf(ActiveSheet.Range(Cells(1, F), Cells(65536, F)), Sheets(2).Cells(3, 1))
Sheets(2).Cells(i, 3).Value = Cut
End If
MsgBox " 完了しました。 ", vbOKOnly + vbInformation, ""
End Sub
ご回答ありがとうございます。
私の語彙力が足りず申し訳ありませんでした。
現在、セルの中に「さん」を見つけたら、隣の列に「さん」を書き出すという
プログラムを作成しています。
「さん」を含むセルを特定できたあとは、人の目で判断することを想定しています。
人の目で判断する際に、あきらかに人名ではないワードを設定して除外し、判断の
手間を減らせないかと考えていたのです。
「さん」を見つけたときに、「たくさん」だったら、隣の列に「さん」を書き出さない処理が
できるかということを質問させていただきました。
>プログラムのチェックルーチンを書き重ねることで、見かけ上一度にやれる手はありそう。
ご助言、ありがとうございました。
見かけ上一度にできるよう検討してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) エクセルでこのようなことはできますか? 3 2022/07/10 19:57
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Chrome(クローム) Chromeのアドレスバーに履歴等を表示させないようにしたい 2 2022/09/08 14:20
- Safari(サファリ) エクセルの検索機能について教えて下さい 1 2023/03/22 17:00
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。 「そうなんだね」と「確かに披露する場所ないね」で評価します。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelのexe化について
-
あるプログラムのコマンドライ...
-
VBAでユーザーフォームが自動的...
-
main関数を先頭に置くデメリット
-
寿命
-
COBOLでBLOCK CONTAINS句につい...
-
PICマイコンのコピー(クローン...
-
Excelで4096点以上のFFTの方法
-
VisualBasic2008の非ユーザーコ...
-
WORD印刷できるがEXCE...
-
エクセルとワードをデスクトッ...
-
XnViewにwebpを「いつも開く」...
-
n88basicからwindows版Basicへ...
-
画像を読み込むのと取り込むの...
-
CBitmapか何かでbitmapの色を変...
-
AI(人工知能)は、どの部分の...
-
AutoCADを用いて板金展開図を自...
-
学校の課題で出されたのですが...
-
binファイルってiphone専用です...
-
WindowsAPIでシリアル通信プロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるプログラムのコマンドライ...
-
Excelで4096点以上のFFTの方法
-
PICマイコンのコピー(クローン...
-
VBAにてメール作成した際、一部...
-
Excelに埋め込んだVBAのプログ...
-
自動クエリとはどういうもので...
-
「Outlookが他のプログラムによ...
-
モジュール、アプリケーション...
-
読み込み中にアクセス違反が発...
-
VBAでユーザーフォームが自動的...
-
未使用の変数を一括検索する方法
-
ドロップダウンリストの文字を...
-
UWSCで指定のフォルダを開きたい。
-
XnViewにwebpを「いつも開く」...
-
Vba UserFormを前面に出す方法...
-
写真のプログラムは、1からnま...
-
binファイルってiphone専用です...
-
TMBMSRV.exeによるCPU使用率上昇
-
画像を読み込むのと取り込むの...
-
main関数を先頭に置くデメリット
おすすめ情報