質問: エクセルvba 検索時に除外を設定したい エクセルvbaにて、個人情報が含まれていないか検索するマクロを作成しています。 複数の文字列のなかから、 「佐藤さん」 などと記入されているセルを検索したいのですが、部分一致で「さん」で検索すると 当然、「さん」を含むすべてのセルが検出されます。 その際に、「たくさん」「社長さん」など除外ワードを検索時に設定することは可能でしょうか。 除外ワードを設定するのが難しいのであれば、「さん」の検索をしたあとに 除外ワードの検索をするようにしようかと考え中です。 別々で検索する方法しかないかどうか、ご教授いただきたいです。 よろしくお願いします。
回答: こんな質問はvbaの問題というより、日本人なのだろうから、文章や語句の洞察力の問題でしょう。 どういうロジックにすれば満足するものが出来るのか、まず文章にでも表現してご覧。それが出来ないならプログラムは組めない。ただし、文章化ができてもプログラムでは難しいことも多かろう。 例えば「さん」を見つける。その前に個人名があれば削除するとする。しかし個人名は沢山あって、個人の力では列挙できないのは常識だろう。質問者は、人名辞書まで当たるコードをつくる力は無いだろう。 だから不可能と思う。普通の人では、「おもちゃ」しか出来ないでしょう。 「さん」がついてない場合も在ろうし、「さま」もあろうし、社長さんもあろう。 こういうのはある程度プログラムにロジックとして組み込んで、あとは、人間が読んで判断するしかないだろう。 エクセルvbaごときが多少出来ても、こういう文章の内容や、文脈まで立ちいったことは出来ないし、エクセルは(vbaは)その道具として適当でない。 文章をセルに入れるのさえ、表計算ソフトの沿革から、当初予想された機能ではないとおもう。 大学院ででも情報処理の研究分野にするならともかく、難しい課題だ。 正規表現などという、概念・ツールがあるが、まだそういうことに近いことを目指しているように思うが(ぴったりというものではなく)、vbaの主流ではないし直ぐには学習が難しい。。 エクセルvbaでは、文章から名詞を抜き出すのさえ難しかろう。 >別々で検索する方法しかないかどうか、ご教授いただきたいです プログラムのチェックルーチンを書き重ねることで、見かけ上一度にやれる手はありそう。 エクセルの操作を前提にして、囚われているから、「別々」とか言う発想(疑問に)なるのだ。