[[20070313094353]] 『複数語のあいまい検索について』(亜美) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『複数語のあいまい検索について』(亜美)
 EXCEL2003/XP-SP2です。
 よろしくお願いいたします。
 あいまい検索でさがしたのですが、
 単一の検索しかないようでしたので
 複数のあいまい単語を
 一括で処理できないか相談に乗っていただけないでしょうか。 

 条件は以下のとおりです。 

 A-Hまでがあいまいな単語です

 A が含まれていれば "1"
 B が含まれていれば "1"
 C が含まれていれば "1"
 D が含まれていれば "2"
 E が含まれていれば "2"
 F が含まれていれば "3"
 G が含まれていれば "3"
 H が含まれていれば "3"

 項目	A	B	C
 JAPAN	1	0	0
 BOXY	1	0	0
 DAC	1	2	0
 GOLF    0	0	3 

 項目の単語に該当のあいまい語が含まれていれば
 該当するあいまい語 A B C に各フラグ"1","2","3"を
 立てたいのですがどのような関数を組み合わせて作成
 したらよいでしょうか。
 よろしくお願いいたします。

 B2に=1*NOT(AND(SUBSTITUTE(A2,{"A","B","C"},)=A2))、
 C2に=2*NOT(AND(SUBSTITUTE(A2,{"D","E"},)=A2))、
 D2に=3*NOT(AND(SUBSTITUTE(A2,{"F","G","H"},)=A2))として、
 これらを下にフィルドラッグ。というものは、どうでしょう? (6UP)

  =OR()を利用するものも書いてみます。    
 B2に=1*OR(COUNT(FIND({"A","B","C"},A2)))、
 C2に=2*OR(COUNT(FIND({"D","E"},A2)))、
 D2に=3*OR(COUNT(FIND({"F","G","H"},A2)))。


 ありがとうございます。
 できました。
 が、実はA-Hまでと記載しておりますが、実データは項目として
 300語位対象があるので、"A","B",・・・"H"のような記載方法では
 厳しいのです。
 ""の中を、テーブル参照のイメージでA-Hを範囲指定みたいな
 方法で検索するする方法はないでしょうか。

 たとえば
 1*NOT(AND(SUBSTITUTE(A2,{"ここに以下のテーブルXのA-Cまで読みこむ"},)=A2)

 テーブルX

 1 A
 1 B
 1 C

 というようなことが可能でしょうか。
 と勝手なことばかりで申し訳ありませんが・・
 いかがでしょうか。


 E1:E5にA、B、C、XXXXXX、XXXXXX(空白には、対象範囲にありえない文字を埋めておきます)
 としておきますと、
 =1*NOT(AND(SUBSTITUTE(A2,E$1:E$5,)=A2))として、Ctrl+Shift+Enterや
 =1*OR(COUNT(FIND(E$1:E$5,A2)))として、Ctrl+Shift+Enterなどと、
 することが、できます。検索する範囲は、検索する文字があるところまでに限定し、
 空白範囲を検索する対象には、しないでください。             (6UP)



 できました。
 ありがとうございました。
 うーん、感心するばかりです。さすがですね。
 ところで、Ctrl+Shift+Enterをするのと
 しないのではなにが違うのですか?
 最初上手くいかなかったのですが、
 Ctrl+Shift+Enterをやったら{}がつき
 うまくいくようになりました。
 自分で調べればいいのでしょうが・・・


 Ctrl+Shift+Enterとするのは、始めてですか?
 何回か経験しますと、自然に体得できると思いますが、取っ付きが悪いものです。

 メニューのヘルプで「配列数式」をご覧になると説明があります。
 しかし、この説明を見て理解できる方は、少数でしょう?

 概略、説明させていただきますと、このようなことなのです。

    A   B   C    D
 1  10  10  TRUE   TRUE
 2  20     FALSE  TRUE
 3  10     TRUE   TRUE
 4  30     FALSE  TRUE
 5  50     FALSE  TRUE
               ↑
               {=A$1:A$5=B$1}
           ↑	
           =A$1:A$5=B$1	

 上の表でC1に=A$1:A$5=B$1と入力し、C5まで複写し同一の数式を配置します。

 このA$1:A$5は、普通は、単一セルを書くところですが、このように書きますと、
 C1に書いたA$1:A$5は、C1と同じ行のA1を指し、
 C2に書いたA$1:A$5は、C2と同じ行のA2を指し、
 C3……          ……  A3  …
 C4……          ……  A4  …
 C5……          ……  A5を指すという仕組みになっているようです。***

 従って、C1は、A1=B1、C2は、A2=B1、C3は、A3=B1、C4は、A4=B1、C5は、A5=B1の意味になり、
 それぞれ、TRUE、FALSE、TRUE、FALSE、FALSEを戻しています。

 しかし、同じ数式=A$1:A$5=B$1をD1に入力し、Enterの代わりにCtrl+Shift+Enterとしますと、
 ***の仕組みの機能をやめて、A$1:A$5のセル参照をエクセルの中間配列に蓄えこれを参照する
 ことになっているようです。D1をD5まで複製しても同じ結果が戻っています。

 D1からD5までの各セルごとにすべて
 {A1=B1;A2=B1;A3=B1;A4=B1;A5=B1}→{TRUE;FALSE;TRUE;FALSE;FALSE}が蓄えられていますが、
 セルの表示は、1個だけしか表示できません。

 この配列を=OR(A$1:A$5=B$1)として、Ctrl+Shift+Enterとしますと、TRUE、
 =AND(A$1:A$5=B$1)として、Ctrl+Shift+Enterとしますと、FALSEを戻します。

 このようなことなのですが、ご不満でしょう?
 しかし、私の現在の実力からしますと、この程度の説明になってしまいます。

 下は、芳坂さんという方の有名なサイトですので、参考に添付します。    (6UP)
http://pc21.nikkeibp.co.jp/special/hr/hr1.shtml


 ありがとうござました。
 ここまでしつこい質問に丁寧にかつ詳細に
 解説いただきまして感謝いたします。
 まだ理解が難しい部分はありますが、
 なんとなくわかりました。ぽうさんのサイトを見たときに
 わたしと同じ質問におもわず笑ってしまいました。
 (6UP)さん、ありがとうございました。
 (亜美)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.