プロが教える店舗&オフィスのセキュリティ対策術

教えてください。

なんと書けばいいかわかりませんので、添付画像をご覧下さい。

Aのような配列があるとき、BやCを作りたく思っております。

B(値のあるのもだけを抜粋したもの)
C(日付に伴って値を抜粋したもの)

==========

これって、関数でできるものでしょうか?

もしできれば関数で

できなくば、マクロでおしえていただけないでしょうか?

どうぞよろしくお願いいたします。

「配列の統計系の関数」の質問画像

A 回答 (4件)

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)
以下コピー。

この回答への補足

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

補足日時:2011/04/14 17:25
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/14 17:25

CについてはNo.1のご回答が最善かと。



Bは、ピボットテーブルではダメなんでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/04/14 17:26

分かり易くしかも計算を重くしないためには作業列を作って対応します。


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セルの間では文字列の入力はあっても数値のデータは入力されていないものとしています。

この回答への補足

すばらしい!
関数でできるとおもってなかったのでびっくりしました。


もしかしてなんですが、
EF列を

F列の数字順(多い順)に並べることも
関数でできるのですか?

補足日時:2011/04/14 17:22
    • good
    • 0

回答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のデータが同じ場合には古い日付が上段の行に表示されるようになっています。
    • good
    • 0
この回答へのお礼

すごすぎる!

これまで苦労してた、ピポットや
並べ替え作業をやる必要がなくなりました!


神!(笑)

本当にありがとうございました。

お礼日時:2011/04/15 13:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!