[[20191125093442]] 『一つのセルから取得した値で複数の列を検索したい』(エクセル初心者) ページの最後に飛ぶ

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

 

『一つのセルから取得した値で複数の列を検索したい』(エクセル初心者)

オートフィルターを使ってセルに入力された値を検索する機能を作成しています。
一つのセルに入力された値で二つの列を検索(操作?)したいのですがどういったコードを書いたらいいでしょうか…?
自力で書いていたのですがどうやっても二つのうちどちらか片方しか検索できず困っています…

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 おはようございます ^^
あまりピンときてませんので外していましたらお許しを
フイルター、詳細で、いろいろ、条件設定出来たと思い
ます。 m(_ _)m

(隠居じーさん) 2019/11/25(月) 09:51


■1
>自力で書いていたのですがどうやっても二つのうちどちらか片方しか検索できず困っています…
とりあえず、個人情報なんかの部分は隠して、コードを提示してみてはどうでしょうか?

そのうえで、××になるとおもっていたいのに、どういう結果になるのか(どのように片方しか検索されない?のか)を説明いただいた方がレスがつきやすいように思います。

■2
>オートフィルターを使って
そもそも”複数列”から1つの条件に合致するものを探すのにオートフィルタでいいのかちょっと疑問です。

(もこな2 ) 2019/11/25(月) 10:27


 すでに回答がついていますが

 オートフィルターでは 複数列のOR検索は無理でしょう

 フィルタオプションを使えば可能だと思います。

 サンプルです

 こんなレイアウトだとして

     |[A]  |[B]  |[C]  |[D]|[E]   |[F]|[G]  |[H]  
 [1] |項目1|項目2|項目3|   |検索値|   |項目1|項目2
 [2] |AAA1 |AAA1 |CCC1 |   |AAA2  |   |AAA2 |     
 [3] |AAA2 |BBB1 |CCC2 |   |      |   |     |AAA2 
 [4] |AAA3 |AAA2 |CCC3 |   |      |   |     |     
 [5] |AAA4 |BBB2 |CCC4 |   |      |   |     |     
 [6] |AAA1 |AAA3 |CCC5 |   |      |   |     |     
 [7] |AAA2 |BBB3 |CCC6 |   |      |   |     |     
 [8] |AAA3 |AAA4 |CCC7 |   |      |   |     |     
 [9] |AAA4 |BBB4 |CCC8 |   |      |   |     |     
 [10]|AAA1 |AAA5 |CCC9 |   |      |   |     |     
 [11]|AAA2 |BBB5 |CCC10|   |      |   |     |     
 [12]|AAA3 |AAA6 |CCC11|   |      |   |     |     
 [13]|AAA4 |BBB6 |CCC12|   |      |   |     |     

 G2セル、H3 セルにはそれぞれ =E2 という数式を入れておきます
 E2セルにはOR検索をしたい値を入力して

 標準モジュール

 Option Explicit

 Sub myフィルタ開始()

    Range("A1:C13").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("G1:H3"), Unique:=False

 End Sub
 Sub myフィルタクリア()

    ActiveSheet.ShowAllData

 End Sub

 として myフィルタ開始 を実行すれば、OR検索ができると思います。

(渡辺ひかる) 2019/11/25(月) 10:42


皆様、お忙しい中ご回答ありがとうございます。
お教えいただいたものを参考にしながら
もう一度よく考えて作り直してみようと思います。
ありがとうごさいました。
(エクセル初心者) 2019/11/25(月) 14:24

 >そもそも”複数列”から1つの条件に合致するものを探すのにオートフィルタでいいのかちょっと疑問です。

 私は作業列使う方法で、複数列の条件に対応するコード書いてたけど・・・。
 おまけにそれなりに複雑でも可。
(BJ) 2019/11/25(月) 15:07

書き方がわるかったかも。
BJさんの仰るとおり、例えば↓で項目1と項目2いずれかが"みかん"の【行をオートフィルタで抽出したい】のであれば、作業列を使えばできるとおもいます。
  _____A_______B_________C______
 1   項目1  項目2   作業列
 2  いちご  りんご  =IF(COUNTIF(A2:B2,"みかん"),"●","") 
 3  みかん  ばなな             ↓フィルコピー
 4  みかん  いちご
 5  ばなな  いちご
 6  いちご  みかん

ただ、そういうことであれば、オートフィルタを使わずともFind(FindNext)メソッドで【該当するセル】をすべて探しておいてから、EntireRowプロパティで行をするという手も使えると思います。

いずれにせよ、コードの提示がないため、最終的に何をしたいのか(何(行/セルどちらなのか)を取得したいのか、取得したものをどうしたいのかなど)が不明で、どういう結果になって困っているのかよく分からないので、そもそもオートフィルタというアプローチでいいのかなぁという率直な疑問を書き込んだところです。

(もこな2 ) 2019/11/25(月) 17:35


コメント返信:

[ 一覧(最新更新順) ]


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