• ベストアンサー

配列の統計系の関数

教えてください。 なんと書けばいいかわかりませんので、添付画像をご覧下さい。 Aのような配列があるとき、BやCを作りたく思っております。 B(値のあるのもだけを抜粋したもの) C(日付に伴って値を抜粋したもの) ========== これって、関数でできるものでしょうか? もしできれば関数で できなくば、マクロでおしえていただけないでしょうか? どうぞよろしくお願いいたします。

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

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

回答No3です。 EF列をF列の数字順(多い順)に並べることも 関数でできるのですか? その場合にはC4セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(A$4:A4,A4)=1,SUMIF(A:A,A4,B:B)+1/A4,"") その後にE4セルには次の式を入力し下方にオートフィルドラッグします。 =IF(ROW(A1)>COUNT(C:C),"",INDEX(A:A,MATCH(LARGE(C:C,ROW(A1)),C:C,0))) F4セルは前回と同様に次の式を入力して下方にオートフィルドラッグします。 なお、E列については表示形式を日付にします。 また、Fのデータが同じ場合には古い日付が上段の行に表示されるようになっています。

deepimpact
質問者

お礼

すごすぎる! これまで苦労してた、ピポットや 並べ替え作業をやる必要がなくなりました! 神!(笑) 本当にありがとうございました。

その他の回答 (3)

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

分かり易くしかも計算を重くしないためには作業列を作って対応します。 C4セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(A$4:A4,A4)=1,A4,"") E4セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>COUNT(C:C),"",SMALL(C:C,ROW(A1))) F4セルには次の式を入力して下方にオートフィルドラッグします。 =IF(E4="","",SUMIF(A:A,E4,B:B)) H4セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)=1,MIN(A:A),IF(MIN(A:A)+ROW(A1)-1<=MAX(A:A),MIN(A:A)+ROW(A1)-1,"")) I4セルには次の式を入力して下方にオートフィルドラッグします。 =IF(H4="","",SUMIF(A:A,H4,B:B)) なお、C,EおよびH列についてのセルの表示形式は時刻にします。 なお、A列などではA1セルからA3セルの間では文字列の入力はあっても数値のデータは入力されていないものとしています。

deepimpact
質問者

補足

すばらしい! 関数でできるとおもってなかったのでびっくりしました。 もしかしてなんですが、 EF列を F列の数字順(多い順)に並べることも 関数でできるのですか?

  • chiune
  • ベストアンサー率24% (30/124)
回答No.2

CについてはNo.1のご回答が最善かと。 Bは、ピボットテーブルではダメなんでしょうか。

deepimpact
質問者

お礼

そうなんです。 データが山ほどあるんで、 ピポットでひとつひとつやるのが、つらくて…

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

Bについてはデータメニュー(データタブ)の統合などを使った方が簡単に結果を得られますが,結局は関数じゃないとイヤなんでしょうから D4: =IF(ROW(D1)>COUNT(1/FREQUENCY(A:A,A:A)),"",INDEX(A:A,SMALL(IF(ISNUMBER(1/FREQUENCY($A$4:$A$20,$A$4:$A$20)),ROW($A$4:$A$20)),ROW(D1)))) をコントロールキーとシフトキーを押しながらEnterで入力,日付の書式を付けて以下コピー E4: =SUMIF(A:A,D4,B:B) 以下コピー。 Cについては G4: =MIN(A:A) G5: =G4+1 以下コピー H4: =SUMIF(A:A,G4,B:B) 以下コピー。

deepimpact
質問者

お礼

ありがとうございました!

deepimpact
質問者

補足

すばらしい! ありがとうございました!

関連するQ&A