• 締切済み

項目毎に別の表に抽出して表示する。

ご覧いただきまして、ありがとうございます。 もしお分かりになるのであれば、ご指導いただければと存じます。 宜しくお願い致します。 画像を参照していただけますと分かり易いかと思い、添付している画像がございますので、そちらをご覧下さいませ。 日付・項目・金額という表があり、それぞれ日付順に入力して行きます。 全ての入力が終わったところ(入力途中の段階で表示されても構いません)で、項目のAに関係するものを「表A」・項目のBに関係するものを「表B」... という様に、個別の表を作る(あくまで外観的なものは最終的に手動でやるものとします)事は可能でしょうか。 マクロに関して分かりませんので、マクロを使わない方法ですと有り難いです。 何卒宜しくお願い致します。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

回答No2ですが日付の列はシリアル値が表示されますのでお望みの日付の表示形式にすることが必要ですね。 ユーザー定義で e-m-d とでもしているのでしょうか?

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

作業列を作って対応するのが分かり易くデータが多くなっても計算が重くなりません。 次のようにしてはどうでしょう。 D2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2="","",IF(COUNTIF(B$2:B2,LEFT(B2,1)&"*")>0,LEFT(B2,1)&(COUNTIF(D$1:D1,LEFT(B2,1)&"*")+1),"")) 次にお求めの表ですがE1セルにはA、H1セルにはB、K1セルにはC、N1セルにはDの文字をそれぞれ入力します。 E2セル、H2セル、K2セル、N2セルには日付と、また、F2セル、I2セル、L2セル、Oセルには金額と入力します。 E3セルには次の式を入力し横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(E$2="日付",IF(COUNTIF($D:$D,E$1&ROW(A1))=0,"",INDEX($A:$C,MATCH(E$1&ROW(A1),$D:$D,0),1)),IF(E$2="金額",IF(COUNTIF($D:$D,OFFSET(E$2,-1,-1)&ROW(A1))=0,"",INDEX($A:$C,MATCH(OFFSET(E$2,-1,-1)&ROW(A1),$D:$D,0),3)),"")) これでお望の表がE列からO列の間にそれぞれ表示されます。

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

E1セルに抽出したい項目が入力されているなら、以下の式で該当するデータを表示することができます。 E2セル =IF(COUNTIF($B$2:$B$1000,E$1)<ROW(A1),"",INDEX(A:A,SMALL(INDEX(($B$2:$B$1000<>E$1)*1000+ROW($B$2:$B$1000),),ROW(A1)))) F2セル =IF(COUNTIF($B$2:$B$1000,E$1)<ROW(B1),"",INDEX(C:C,SMALL(INDEX(($B$2:$B$1000<>E$1)*1000+ROW($B$2:$B$1000),),ROW(B1)))) 上記の式をコピー貼り付けすれば他の項目も表示することが可能ですが、表示データ数が多くなるとシートの動きが重くなるので推奨できません。 すなわち、1枚のシートに上記の数式を入力しておき、抽出したい項目を入力して(入力規則のリストでドロップダウンリストから選択できるようにする)、必要なデータを表示させるようにした方が実用的です。

専門家に質問してみよう