• ベストアンサー

EXELについての質問です。

EXELについての質問です。 「ブック内のシート1に日付がばらばらの状態で打ち込まれた元データがあり、  シート2に、このデータから月別のデータを日付順に並び替えた状態にして反映させたい。」 (例を画像添付で表示しています。) オートフィルターやピポットテーブルを使ってみましたが上手くいきません。 また、VBAについての知識はほとんど持ち合わせて無いのですが、 今回の場合はどうも必要なのでは、と考えたりもします。 いずれにしても、自分の力ではどうしようも出来ない状態ですので、 どうか教えて下さい。

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

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

画像の添付が見られないのでわかりませんが、例えばシート1のA列には日付が2行目から下方にあり、関連のデータがD列までにあるとします。 E列を作業列としてE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",RANK(A2,A:A,1)) 次にシート2のA2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$E:$E,ROW(A1))=0,"",INDEX(Sheet1!$A:$D,MATCH(ROW(A1),Sheet1!$E:$E,0),COLUMN(A1))) 最後にA列は日付ですのでセルの表示形式を日付にします。

freeway1118
質問者

お礼

有り難うございます。 RANK関数で、昇順にするという発想がなかったのですが、 これを使って作り上げることができました! どうもです。

その他の回答 (2)

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

回答No2です。 ある月だけをシート2に順序よく取り出すのでしたら シート2のA1セルに2010/5/1のように入力してセルの表示形式のユーザー定義で m"月" として例えば5月と表示させます。 その上でシート2のA2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$E:$E,INDEX(Sheet1!$E:$E,MATCH($A$1,Sheet1!$A:$A,1))+ROW(A1))=0,"",IF(MONTH(INDEX(Sheet1!$A:$A,MATCH(INDEX(Sheet1!$E:$E,MATCH($A$1,Sheet1!$A:$A,1))+ROW(A1),Sheet1!$E:$E,0)))<>MONTH($A$1),"",INDEX(Sheet1!$A:$D,MATCH(INDEX(Sheet1!$E:$E,MATCH($A$1,Sheet1!$A:$A,1))+ROW(A1),Sheet1!$E:$E,0),COLUMN(A1))))

freeway1118
質問者

お礼

有り難うございます。 かなりレベルの高い数式なので、ちょっと使うのは困難でしたが、 解読して行く中でかなり色々勉強になりました。 色々参考にさせていただきます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

安直ですがデータを日付で並び替え(昇順)では駄目でしょうか。

関連するQ&A