3

文字列の説明が含まれる列があります。

例えば:

ボブ・デイビッド
芝生を刈る
転倒牛

さらに、別のシートまたは列にキーワードのリストを表示します。たとえば、作業キーワード リスト 1:

デイビッド
仕事

再生キーワード リスト:

草刈り
牛

メインの列にはこれらのテキスト文字列が入力されているので、各キーワード リストを自動的にチェックして、それらの単語が存在するかどうかを確認し、一致する場合はリストのタイトル (仕事/遊び) を次のセルに配置します。それに。

これは VBA で可能であり、関数内で「オンザフライ」で実行することもできSelectionChangeます。しかし、これは条件付き書式などの VBA なしで実行できますか?

4

2 に答える 2

9

これは、単語の一部を不適切に検索する可能性をあまり気にしない限り、数式だけで行うのは非常に簡単です。ただし、その警告を少し無視してください。最初に、いくつかの文字列のいずれかがソース文字列内のどこかにあるかどうかを示す数式を次に示します。

=OR(NOT(ISERROR(FIND(<array of strings to look for>,<string to look in>))))

これを機能させるには、配列数式として入力する必要があります。これを行うには、Ctrl-Shift-Enter で入力します。それがどのように機能するかを理解するために、実際の例を評価する際に Excel が行うことを考えてみましょう。

=OR(NOT(ISERROR(FIND({"a","b","c"},"q b q"))))

'FIND' は、別の文字列内の 1 つの文字列の位置を検索します。最初の引数に配列を指定して呼び出すと、位置の配列 (検索文字列が見つからない場合は #VALUE!) が返されます。その式を入力し、その中の式で F9 キーを使用すると、評価を追跡できます。

=OR(NOT(ISERROR({#VALUE!,3,#VALUE!})))
=OR(NOT({TRUE,FALSE,TRUE}))
=OR({FALSE,TRUE,FALSE})
=TRUE

たとえば、検索したい文字列が $B$6:$B$8 にあり、作業用の文字列が $D$2:$D$3 にあり、再生用の文字列が $E$2:$E$3 にあるとします。あなたは式を置くことができます

=OR(NOT(ISERROR(FIND(D$2:D$3,$B6))))

セル D6 に配列数式として入力し、D6:E8 の範囲内でドラッグして、B のどの文字列が機能または再生されているかを検索します。次に、それらの結果を使用して、さらに数式や条件付き書式を設定できます。

ただし、前述のように、検索対象の文字列内の任意の部分文字列が検出されることに注意してください。

=OR(NOT(ISERROR(FIND({"a","b","c"},"bad"))))

TRUE と評価されます。(そして、fun リストに「id」が含まれている場合、「davids」の「id」が一致します。)

Excel でよくあることですが、限られたデータ セットで理解していることを行っている場合、これは気にしないかもしれません。しかし、この種の式を一般的な「アプリケーション」の一部として使用しようとする試みは、複雑な配列のトリックや正確に 'FIND' が何をするかを知らないユーザーがいる場合には失敗する可能性があります。(検索語の後にスペースを入れるなどして、これを回避することもできますが、他の人に渡すと壊れるのを待っている神秘的なブードゥー教です。)ただし、すばやく汚いスキャンを行うには問題ありません。 .

于 2011-03-22T23:01:02.980 に答える
1

少数のためにこれを行う別の方法をまとめました。暗示されているように、これはすぐに面倒になります。

A列に次のように入力します。 1: 馬 牛 豚 鶏 2: 犬 猫 鳥 3: 魚 猫 4: 馬 猫 ねずみ 5: 類人猿 人間 イルカ 6: 犬 猫 シマリス

セル B1 に次のように入力します (B2:B6 にコピーします)。

=if(sum(iserror(find("cat",A1)),iserror(find("dog",A1)),iserror(find("fish",A1)),iserror(find("bird",A1)))<4,"House pet","")

との結果は空白で表示されますが、B1、、、の結果は「ハウス ペット」と表示されます。B5B2B3B4B5

キーワードのリストが大きくなりすぎる場合は注意してください。私はこれを短いリストにもうまく使用しましたが(質問で暗示されているように)、長すぎる場合はすべての可能性を入力するスペースが限られています-式のリスクエラーは言うまでもありません.

配列を機能させることができませんでした-上記の投稿に感謝します。長いリストでもこれを試してみます。

ps。私が自分の配列で何をしていたか覚えていませんOR ISERRORが、あなたが提供したこの配列は、私の 80 個のキーワードのリストで見事に機能しました。ありがとう!

于 2013-03-13T01:48:37.330 に答える