• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで、抽出したいデータがあります!! )

エクセルで個人の支給額と支給年月日を簡単に抽出する方法はないでしょうか?

このQ&Aのポイント
  • エクセルで抽出したいデータがあります!個人で年1回、支給額も支給年月も異なるデータを抽出したいのですが。
  • 上記のような表があり、個人の支給額と支給年月日を抽出するのに、いちいち上から一つずつ探して以下のような表に記入しています。
  • 個人の支給額と支給年月日を簡単に抽出する方法はないでしょうか?

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

取り出すデータが     A         B      C      D  E 1 支給年月日    H22.4.20  H22.5.15  H22.6.30 2 番号  氏名     4月     5月     6月 3 1    A     1000                4 2   B                   1500  5 3   C            1200         となっている場合 支給額 =INDEX(C3:E3,1,MATCH(1,C3:E3,-1)) 支給年月日 =INDEX($C$1:$E$1,1,MATCH(1,C3:E3,-1)) でいかがでしょう

m03a
質問者

お礼

求めていたものがおかげで作れました!!ありがとうございました!! いくら人数を増やしても、問題なく抽出でき、とても助かりました。

その他の回答 (2)

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

シート1のA1-B1セルに支給年月日、C1セルから横方向に日付があるとします。 A2セルには番号、B2セルには氏名の文字列があるとします。 3行目からデータが入力されているとします。 そこでお求めの表ですがシート2に表示させるとしてA1セルには番号、B1セルには氏名、C1セルには支給額、D1セルには支給年月日の文字列を入力します。 A2セルから下方に表示させたい人の番号を入力します。氏名では同じ氏名があることも考えられますので番号で管理することにします。 B2セルには次の式を入力し右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR($A2="",COUNTIF(Sheet1!$A:$A,$A2)=0),"",IF(COLUMN(A1)=1,INDEX(Sheet1!$B:$B,MATCH($A2,Sheet1!$A:$A,0)),IF(COLUMN(A1)=2,MAX(INDIRECT("Sheet1!C"&MATCH($A2,Sheet1!$A:$A,0)):INDIRECT("Sheet1!U"&MATCH($A2,Sheet1!$A:$A,0))),IF(COLUMN(A1)=3,INDEX(Sheet1!$1:$1, MATCH($C2,INDIRECT("Sheet1!C"&MATCH($A2,Sheet1!$A:$A,0)&":U"&MATCH($A2,Sheet1!$A:$A,0)),0)+2),"")))) 最後にD列を選択してセルの表示形式を日付にすれば完成です。

m03a
質問者

お礼

魔法のような計算式を作成していただき、ありがとうございました!! B2セルに上記式を入れて、右横下方にオートフィルドラッグし、 日付セル部分の表示形式を日付にすれば、あっという間に完成し、 ただオートフィルドラッグしかしていないのに、 全てのデータがぱっと抽出されたので、本当に驚きました!! まだまだエクセル初心者のため、式は意味不明で、何かでエラーになった場合に 対応できなさすぎるのが恐ろしくて今回は参考にだけさせていただきますが、 こんなすごい方法を教えていただき、本当にありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 色々方法はあるかと思いますが・・・ 一例です。 各人1年で一度しか入力がないということなので、 ↓の画像で説明させていただきます。 Sheet1のデータをSheet2に抽出するようにしてみました。 Sheet1のQ列を作業用の列に使わせてもらっています。 Q3セルに =IF(A3="","",MAX(INDEX((C3:N3<>"")*COLUMN($A:$L),))) という数式を入れ、オートフィルで下へずぃ~~~!っとコピーします。 これで金額が入力されている列番号が表示されるはずです。 そして、Sheet2のB2セルに =IF(A2="","",VLOOKUP(A2,Sheet1!$A$3:$B$100,2,0)) C2セルに =IF(A2="","",INDEX(Sheet1!$C$3:$N$100,MATCH(A2,Sheet1!$A$3:$A$100,0),INDEX(Sheet1!$Q$3:$Q$100,MATCH(A2,Sheet1!$A$3:$A$100,0)))) D2セルに =IF(A2="","",INDEX(Sheet1!$C$1:$N$1,,INDEX(Sheet1!$Q$3:$Q$100,MATCH(A2,Sheet1!$A$3:$A$100,0)))) という数式を入れます。 最後にB2~D2セルを範囲指定し、D2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 これでSheet2に番号を入力すればそのデータが表示されると思います。 数式はSheet1の100行目まで対応できるようにしています。 以上、長々と書きましたが、参考になれば幸いです。 尚、他に良い方法があれば読み流してくださいね。m(__)m

m03a
質問者

お礼

毎回丁寧に教えていただき、本当にありがとうございます!! 実際にコピーして作ってみると、確かにできました!! 今回は仕組みが難しくて、何かの拍子にエラーとなった場合に 対応できなくなったら困るので、参考にだけさせてもらいましたが、 もっとエクセルが理解できるようになれば、ぜひ使わさせていただきたいと思います。

関連するQ&A

専門家に質問してみよう