• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フィルター結果を反映させる為には?)

フィルター結果を反映させる方法は?

このQ&Aのポイント
  • 毎回3社ではなく、1社の場合もある場合についてシート1のC2、C4、C6に反映させたい
  • シート2のオートフィルター条件選択用のセルとしてC2、C4、C6(会社名)D2、D3、D4、D5、D6、D7(年度)F2、F3、F4、F5、F6、F7(取引内容)を使用したい
  • シート2の更新時にシート1のオートフィルター条件も追加更新されるようにしたい

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

んーと? 誤り: >(1)~(3)の(会社名)(年度)(取引内容)のオートフィルタ―の条件は >(2)、(3)の条件を入力する際には、(1)の条件などが反映されないように >全てが選択された条件から開始したい アナタが言いたかったこと: シート1のC列,D列,F列を入力規則のリストから選択できるようにしたい その際,D列やF列の入力規則は,C列などの選択によらずにシート2に出てくる全てのデータから選択できるようにしたい #画像が不鮮明で見えませんが,次のようだという前提で  シート2のA列に会社名,B列に年度,D列に何某かが書いてある 手順: シート2のマクロを削除し,下記に差し替えます。 private sub worksheet_change(byval Target as excel.range)  dim i as long, c as long  dim h as range, ha as range  dim myDic as object  set ha = application.intersect(target, range("A:B,D:D"))  if ha is nothing then exit sub  set ha = application.intersect(ha.entirecolumn, range("1:1"))  for each h in ha  set mydic = createobject("Scripting.Dictionary")  if h.column = 1 then c = 3 ’A列→C列  if h.column = 2 then c = 4 ’B列→D列  if h.column = 4 then c = 6 ’D列→F列  on error resume next  for i = 2 to cells.specialcells(xlcelltypelastcell).row  if cells(i, h.column) <> "" then  mydic.add cells(i, h.column).value, cells(i, h.column).value  end if  next i  with worksheets("Sheet1").cells(1, c).entirecolumn.validation   .delete   .add type:=xlvalidatelist, formula1:=join(mydic.keys, ",")  end with  set mydic = nothing  next end sub

roadsky353
質問者

補足

お付き合いくださり有難うございます。 ほぼ希望通りの動作確認ができました。 私の伝え方が悪くkeithin様にはお手数をおかけしました。 1つだけ伝えきれていない部分として >その際,D列やF列の入力規則は,C列などの選択によらずにシート2に出てくる >全てのデータから選択できるようにしたい この部分が D列の入力規則は同じ行のC列の選択によって絞り込まれたデータから選択したい D列の入力規則は同じ行のC列とD列の選択によって絞り込まれたデータから選択したい というところです 例えば C2:C3(結合セル)のセルで●●会社を選択した場合は ●●会社での絞り込み結果に応じた年度のデータを選択したい 同じくD2で△△年度を選択した場合は ●●会社の△△年度絞り込み結果に応じた 取引内容のデータを選択したいという意味です 組み合わせとして C2:C3はシート2に出てくる全てのデータ D2はC2:C3によって絞られたデータ D3はC2:C3によって絞られたデータ F2はC2:C3とD2によって絞られたデータ F3はC2:C3とD3によって絞られたデータ C4:C5はシート2に出てくる全てのデータ D2はC4:C5によって絞られたデータ D3はC4:C5によって絞られたデータ F2はC4:C5とD2によって絞られたデータ F3はC4:C5とD3によって絞られたデータ C6:C7はシート2に出てくる全てのデータ D2はC6:C7によって絞られたデータ D3はC6:C7によって絞られたデータ F2はC6:C7とD2によって絞られたデータ F3はC6:C7とD3によって絞られたデータ 画像の件は自分がアップロード写真の サイズを把握していなかったもので小さくなってしまいました。 D列は取引内容を記載しておりました。 申し訳ございませんでした。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

二度手間ならぬ三度手間ですが, >D列の入力規則は同じ行のC列の選択によって絞り込まれたデータから選択したい >D列の入力規則は同じ行のC列とD列の選択によって絞り込まれたデータから選択した >というところです いやいやいや,どこをどう読んでもそれと真逆のことで書いてあります。 いずれにしても,やって出来ないことはありません(プログラムを作成することは出来ます)が,今の延長線ではレスポンスが極端に悪化する恐れがあるのでお薦めしません。 とりあえず今のマクロでしばらく使ってみて,また「オートフィルタ」と「入力規則」がちゃんと区別できるようになるとか「どんなレイアウトでご自分のエクセルを作成している」とかしっかり把握できるようになるのと,今回回答のマクロがやっていることをまず一度理解してから,改めて応用として自作してみてください。

roadsky353
質問者

お礼

お手数をおかけしました 今、頂いたマクロや自分が探してきた情報を元に あれこれ変更をしております。 そのなかで、これだけ解決すれば… という状況までは至りましたので 次回の質問で目にとまりましたら、ご教授願います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

添付した画像がはっきり見えない(拡大しても) データ例と、結果例をシートのセルの列行の体裁で テキスト(文字数字)で上げるように 前問で、アドバイスしたはず。 何回も質問を繰返すのは、質問者が例データも含め、説明する力が不足 しているからではないか。そちらの勉強経験が肝心。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

で,結局やりたいことは 1.シート1にご質問では「オートフィルタ」と書いているのは間違いで「入力規則」を使い,会社名をプルダウンメニューから選択できるようにしたい  それをB1セル単独じゃなくC列に設定したい →前回回答のシート2のマクロで 変更前: with worksheets("Sheet1").range("B1").validation 変更後: with worksheets("Sheet1").range("C:C").validation 2.シート1でC,D,F列にデータを入れたら,それを条件にしてシート2にオートフィルタをかけて絞りたい →ご利用のエクセルのバージョンが不明ですが,ふつーにオートフィルタでは1列あたり2件までしか絞り込めないので,そういう事はできません。諦めてください。 #Excel2007以降を使えるなら,一応可能です。 #オートフィルタを使うのをやめて,ごりごりと1行ずつ全データをチェックして「行を隠す・再表示する」マクロでゼロから作り直すような手も可能は可能です。どうしてもそういう事をしなきゃならないということなら,検討してみてください。 3.オートフィルタで絞ったあとでも,入力規則のリストの拾い出しは全データを対象にしたい →気付かなかったかもしれませんが,先の回答で対応済みです 4.シート2の更新の都度,シート1の「入力規則」のリストにも反映させたい →先の回答で最初から対応済みです。 5.丸投げしますので作ってください →まぁ,こちらの掲示板では丸投げありという事になっていますが,一応自助努力の姿勢は示しておいた方が,皆さんも気持ちよく回答してくれると思います。

roadsky353
質問者

補足

ご回答頂き有難うございます 2番目の質問内容ですが、私がうまく伝えられないのが問題なのですが C2で会社名を選ぶ(リストに有る全ての会社名から選択できる)→ D2で年度を選ぶ(先ほど選択した会社名を条件とした上で絞り込まれた年度が選択できる)→ F2で取引内容を選ぶ(C2、D2を条件とした上で絞り込まれた取引内容が選択できる D3で年度を選ぶ際は、C2で選択された条件を保持したままにし F3で取引内容を選ぶようにしたい C4やC6で会社名を選ぶ際は、上記と同じ条件にしたいという意味です。 判りにくくて申し訳ないです。

関連するQ&A