• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[Excel2000]フィルタ後に1種別時の内容)

[Excel2000]フィルタ後に1種別時の内容

このQ&Aのポイント
  • Excel2000でのフィルタ後に、各行のデータ種別件数が1である場合、その1種別に該当するデータ内容を行単位で表示するための制約や方法について教えてください。
  • VBAを利用せず、Excel2000の標準のExcel関数のみを使用して、フィルタ後に1種別時の内容を表示する方法について教えてください。
  • Excel2000でフィルタを行った後に、1種別のデータ内容を行単位で表示する方法について詳しく教えてください。VBAの使用はできません。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

No1の回答の補足です。 数式を吟味してみましたが、今回のケースなら単純に表示されている行の最大行の値を求める数式のほうがすっきりして簡単ですね。 =IF(B3=1,INDEX(B:B,MAX(SUBTOTAL(3,INDIRECT("b"&ROW(10:50)))*ROW($B$10:$B$50))),"") Ctrl+Shift+Enterで確定しなくてもそのまま計算できる式にしたいなら、以下のような関数になります。 =IF(B3=1,INDEX(B:B,MAX(INDEX(SUBTOTAL(3,INDIRECT("b"&ROW(10:50)))*ROW($B$10:$B$50),))),"")

1050YEN
質問者

お礼

前回に引き続きありがとうございます。 昨日は会議続きで、席にほとんどいることが出来ず、お礼も遅くなってしまいました。 すいません。。。 自宅にて教えていただいた方法を試してみました。 完璧です! INDEX INDIRECT という関数に今まで触れることが無かったので、今回はかな~りの勉強になりました。 MackyNo1さんから ・#1の最適化されていない手法 ・#2の最適化している手法 の二つの発言をいただけたことで、 「どの関数部分が、どのような目的をもっているのか」 というのも読み取り易いです。 この度は本当にありがとうございました!

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

式をあまり吟味していないので、効率的な数式になっていない可能性もありますが、例示のレイアウトで希望のデータを表示したいなら、たとえば以下のような配列数式で表示することができます。 =IF(B3=1,INDEX(B:B,MAX(((MATCH(IF(SUBTOTAL(3,INDIRECT("b"&ROW(10:50))),B$10:B$50,""),IF(SUBTOTAL(3,INDIRECT("b"&ROW(10:50))),B$10:B$50,""),0)=ROW($B$10:$B$50)-9))*ROW($B$10:$B$50))),"")

1050YEN
質問者

お礼

前回に引き続きありがとうございます。