• ベストアンサー

関数整列で、数値の0は拾われないで計算されるようにしたい。

 初めまして、よろしくお願いします。  以前  エクセルでランダムに入力されていく数値ごとの価格帯別で集計をとれる関数式を知りたいのですが、どのようにすればいいのでしょうか。よろしくお願いします。 例)     A   B    1 102  1 2 106  8 3 110  3 4 102  2 5 105  9 6 103  6 7 105  2 8 102  6 9 111  4 10  11  12  入力されたA列の数値の最小値から最大値までを自動で順に整列させ、入力されたB列の数値を集計する。     A    B 1  102  9 2  103  6 3  104  0 4  105 11 5  106  8 6  107  0 7  108  0 8  109  0 9  110  3 10 111  4 11 12 13  よろしくお願いします。  と言う質問に対して、 ★Sheet2のA1 A1=MIN(Sheet1!A:A) A2=IF(A1="","",IF(MAX(Sheet1!A:A)<A1+1,"",A1+1)) ★A2の式を下にコピー B1=IF(A1="","",SUMIF(Sheet1!A:A,A1,Sheet1!B:B)) ★下にコピー  と言う答えをいただきました。しかしこの関数式ですと、A列整理番号に0が入っていると、0から整理番号がふられてしまいます。何とか0は拾われないで整列させる方法は無いでしょうか。よろしくお願いします。

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

  • ベストアンサー
回答No.1

A1:=SMALL(Sheet1!A:A,COUNTIF(Sheet1!A:A,0)+1) でいかがでしょうか?

kei__2000
質問者

お礼

 回答ありがとうございます。すばらしい!!うまくいきました。ありがとうございます。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

元のシートをSheet1とするとき、別シートに以下のデータを抽出する式です。 102 9 103 6 105 11 106 8 110 3 111 4 重複しない値だけを出現順に抽出するなら簡単なのですが、それを小さい順に並べるところで随分はまりました(^^; かなり「おバカな式」になってしまったと思いますが「こんな式もあるんだ」と笑って流していただければ結構です。 別シートのA1セルに =IF(COUNT(INDEX(1/(MATCH(Sheet1!A$1:A$100,Sheet1!A$1:A$100,0)=ROW(Sheet1!A$1:A$100)),))-ROW(A1)>=0,LARGE(INDEX((COUNTIF(INDIRECT("Sheet1!A$1:A"&ROW(Sheet1!A$1:A$100)),Sheet1!A$1:A$100)=1)*(Sheet1!A$1:A$100),),COUNT(INDEX(1/(MATCH(Sheet1!A$1:A$100,Sheet1!A$1:A$100,0)=ROW(Sheet1!A$1:A$100)),))-ROW(A1)+1),"") その右隣のセルに =SUMIF(Sheet1!A:A,A1,Sheet1!B:B) これらを下方向にコピー。 ただし範囲は100行目までにしていますので、もっと多いなら置換で100を大きな数字に変更してください(手作業では直せないでしょう)

kei__2000
質問者

お礼

 回答ありがとうございます。参考にさせて頂きたいと思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

前質問の#3で答えたものです。 #2のご回答の方法をとると、連続して番号が出るが、私のフィルタの方法だと、存在するものだけ出てくるから、本質問のようなことにはならないと思うが。 私のは番号順の整列が説明してなかったと思うが、番号でソートすればすむとおもう。 良く回答の中身まで見てくださいな。

kei__2000
質問者

お礼

 前回も、今回も回答ありがとうございます。私、なにぶん初心者のため、うまく説明を理解できず、#2の方法をとりました。気を悪くなさらないよう、よろしくお願いします。

関連するQ&A