* Calcでコンボボックスの内容でフィルタをかけたい [#zfd107b4]
 |RIGHT:|LEFT:|c
 |~ページ|[[OpenOffice.org FAQの登録ページ]]|
 |~投稿者|枕帰り|
 |~分類|#listbox3(Q&A,faq03,class)|
 |~優先順位|#listbox3(低,faq03,priority)|
 |~状態|#listbox3(回答中,faq03,state)|
 |~状態|#listbox3(完了回答待ち,faq03,state)|
 |~カテゴリー|#listbox3(Calc 表計算,faq03,category)|
 |~投稿日|2010-02-11 23:35:42 (木)|
 |~OS|winXP|
 |~依存するページ||
 |~バージョン|#listbox3(2.4,faq03,version)|
 
 ** メッセージ [#qad03863]
 |LEFT:|c
 |回答ページでは行末に「~」を付加する必要はありません|
 タイトル通りですが、コンボボックスの内容でフィルタをかけたいのです~
 オートフィルタでいいのですが、検索内容がひとつではなくて~
 例えば一行に アーティスト名、アルバム名、曲名 のようにデータがあり~
 それをコンボボックスで検索をかけた場合(アーティスト名)で~
 デュエット曲などの検索ができません。~
 現在、ひとつの曲に複数のアーティストがいる場合は、アーティスト部分を、改行で分けています。~
 そういった場合の検索方法にいいものはあるでしょうか?~
 後で簡単に触れるよう、インターフェースはコンボボックスのような簡単なものにしたいです。
 
 ----
 ***無題 [#i449bf50]
 >tani (2010-02-12 09:44:54 (金))~
 ~
 直接の回答ではありませんが、参考までに。~
 なんとなくBaseで正規化されたDBを構築したほうがいいんじゃないかなと思いました。~
 ~
 曲テーブル ─ 曲アーティストテーブル ─ アーティストマスタ~
  └アルバムマスタ~
 ~
 みたいな感じで。で、検索用のフォームを作成するとか。~
 
 //
 ***オートフィルタについて [#t14723fa]
 >M.Kamataki (2010-02-12 12:14:24 (金))~
 ~
 >(アーティスト名)でデュエット曲などの検索ができません。~
 ~
 ここの発言ですが、確認しますね。~
 ~
 >ひとつの曲に複数のアーティストがいる場合は、アーティスト部分を、改行で分けています。~
 ~
 オートフィルタを設定した後、ドロップダウンボタンをクリックすると、複数のアーティスト名が半角スペースで区切られて表示されるはずです。それでフィルタリングできると思うのですが。~
 
 //
 ***無題 [#ef701d25]
 >投稿者 (2010-02-12 17:10:15 (金))~
 ~
 お返事ありがとうございます~
 >taniさん~
 baseは触った事がなく、全然わからないのですがやってみようと思います。ありがとうございます~
 >M.Kamataki~
 あります。が、~
 例えばアーティストがAとBがいたとして~
 AとBのディエット曲は「A B」で検索ではなく~
 Aで検索しても出る、Bで検索しても出る。という風にしたいのです~
 
 //
 ***標準フィルタはどうでしょうか [#u4f8eab2]
 >M.Kamataki (2010-02-12 21:49:54 (金))~
 ~
 Calcを使う場合ですが、抽出に利用出来るのはオートフィルタや標準フィルタです。一応、標準フィルタを使うと複数行にわたるデータのうち一部の文字列をフィルタ指定できます。~
 ~
 例えば下図のようなデータを例にします。オートフィルタの設定済みです。~
 ~
 &attachref(faq5_260_1.jpg,nolink);~
 ~
 アーティスト列のオートフィルタボタンから「標準フィルタ」を選び、下図のように[詳細]ボタンをクリックして、オプション欄の「正規表現」にチェックを入れ、値欄には「.*BBB.*」のようにフィルタしたいアーティスト名を「.*」で囲って指定します。~
 ~
 &attachref(faq5_260_2.jpg,nolink);~
 ~
 [OK]をクリックすれば、下図のようにアーティスト名「BBB」でフィルタリングできます。~
 ~
 &attachref(faq5_260_3.jpg,nolink);~
 ~
 同じように「.*AAA.*」と指定すれば、IDが1と3、「.*DDD.*」と指定すれば、IDが4の曲名を抽出できます。~
 ~
 コンボボックスのようなコントロールを使う場合は、マクロを組んでその変数にコンボボックスの値を渡すように作成しなければなりません。一応、faq/4/1600「オートフィルタを利用したマクロの作成ができません。」のように、参考になる過去の質問はありますが、マクロは使わないとなると標準フィルタが無難ではないでしょうか。~
 
 //
 #article