• ベストアンサー

関数整列で、数値の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/17068)
回答No.2

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

kei__2000
質問者

お礼

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

関連するQ&A

  • ランダムに入力されていく数値ごとの価格帯別で集計をとれる関数式

     初めまして、よろしくお願いします。  エクセルでランダムに入力されていく数値ごとの価格帯別で集計をとれる関数式を知りたいのですが、どのようにすればいいのでしょうか。よろしくお願いします。 例)     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  よろしくお願いします。

  • 入力された整理番号の最小値から最大値までを通し番号にしてデーターを振り分け、集計する

     初めまして、よろしくお願いします。  前回同じような質問で、  セル上にランダムに整理番号をA列に、そのデーターをB列に順に乗せていきます。 例)     A    B    C     1   3   100 2   5    50 3   2    10 4   9     1 5   7    20 6 7 8 9 10 11  これを任意の場所(別シート)に     A    B    C 1 2   2    10 3   3   100 4   4     0 5   5    50 6   6     0 7   7    20 8   8     0 9   9     1 10 11 12  となる様な表を作りたいと思います。A列に入力された整理番号の最小値から最大値まで、入力されなかった番号まで(ここでは4,6,8)自動で通し番号となるよう表示し、B列のデーターを振り分けられる関数をよろしくお願いします。  と質問したところ、 ◆別シートのA1の式 A1=IF(AND(ROW()>=MIN(Sheet1!$A$1:$A$10),ROW()<=MAX(Sheet1!$A$1:$A$10)),ROW(),"") ★下にコピー ◆別シートのB1の式 B1=IF(A1="","",IF(COUNTIF(Sheet1!$A$1:$A$10,A1),VLOOKUP(A1,Sheet1!$A$1:$B$10,2,0),0)) ★下にコピー という答えをいただき、実行したのですが、A列に同じ番号が再び入力したら合算して表れるようにならないでしょうか。 例)A10に整理番号2が入力された場合、データーの10が、合算され、集計場所に20と表示されるようにする。     A    B    C     1   3   100 2   5    50 3   2    10 4   9     1 5   7    20 6 7 8 9 10  2    10 11  これを任意の場所(別シート)に     A    B    C 1 2   2    20 3   3   100 4   4     0 5   5    50 6   6     0 7   7    20 8   8     0 9   9     1 10 11 12  このようになるようにしたいのですが、どうすればいいのでしょうか。また、紹介して頂いた関数の指定範囲を広げても、関数を貼り付ける位置をA1、B2ではなく、A5、B5と、下の位置に貼り付けるとずらした分の最初の数字が表示されなくなりました。何とか下へずらして貼り付ける方法は無いでしょうか、紹介された関数でなくてもかまいませんので、よろしくお願いします。

  • Excel 関数で上から順に数字を整列させる

    Excelで、下記表(例)に入力された数字を上から順に関数を用いて隣のB列に整列させたいです。 ・例 A1:A60の表があります。 ※以下A列に入力された数字とします 1 空白 2 20 3 空白 4 15 5 25 ・(省略、この間空白と考えて下さい) ・ ・ 59 10 60 空白 上記表(例)は、A2に20,A4に15,A5に25,A59に10それ以外は空白を表します。 上記表のセル内数字は全て手入力とします。 全てのセルが空白の場合もあります。 B列はB1:B5の5行です。 この入力された数字を関数を用いて、B列に上から順にB1に20,B2に15,B3に25,B4に10,B5は空白となるように整列させたいです。 B列セル結果は他シートに参照されますのでセルはロックを掛けています。 上記のことからデータの並べ替えも使えませんし昇降順でもありません。 上から順に整列させた数字を、B1:B5の5行内で上位5まで表示させます。 A列の行数が多いのでif関数も使えません。 なお、上記質問内に不明な点がありましたら補足させて頂きます。 以上、宜しくお願いします。

  • EXCEL関数 数値○○○.○○○○を二つに分類したい

    タイトルにも書きましたが、エクセルシートで○○○.○○○○という、途中コンマで区切られた7桁の数値を入力すると、二つに分類し、分類に応じた文字列が表示されるようにしたいのです。  367.2000 と入力すると A  456.3010 と入力すると B といった感じです。 分類する数値は355番台はA、340番台はBといったように、ある程度まとまりはあります。 IFとVLOOKUPの組み合わせで、ある数値を入力すると決まった文字列が出るようになる関数はわかるのですが、7桁全部を入力して分類、という関数(の組み合わせ)があればと思い質問させていただきました。 拙い文章で申し訳ありません。補足が必要でしたらおっしゃってください。 よろしくお願いいたします。

  • VLOOKUP関数についての質問です。

    VLOOKUP関数についての質問です。 例えば、シート1に、 A列    B列  C列 番号  品物  送り先 1   ばなな スーパー 2   ミカン 学校 3   イチゴ ケーキ店  あるとします。 VLOOKUP関数を用いて、 シート2に A列    B列 送り先  品物 ・   ・ ・   ・ ・   ・ とそれぞれ入力したいとして、以下のセルも同様の式を使い入力しますが いちいち式を立てて入力していくと大変です。 セルにVLOOKUP関数をコピーして使うにはどうしたらいいですか?? お願いします。

  • VLOOKUP関数で取得した数値を加算したい

    はじめまして、初めて質問をさせていただきます。 以下のような処理を行いたいのですが教えてください。    シート1     |   シート2   A   B      |   A    B  1りんご        | 1バナナ  10 2バナナ  25     | 2スイカ  3 3みかん  5      | 3みかん  15 4イチゴ  30     | 4ナシ   5 シート1の数量B列に、品目A列を検索キーとして、シート2の品目A列と一致する品目の数量を「加算」する形で入力したいのです。 関数を入力して、式を下にコピーしていきますが、この際に ・一致するものがない場合は、以前入っていた数値をそのままにする。 ・数値が未記入のセルもValueなどのエラーを出さないで空白セルのままにする。 結果として、このような表になって欲しいのです。   A   B    1りんご    ←空白セルは空白のまま 2バナナ  35 ←一致する品目があったので加算 3みかん  20 ←一致する品目があったので加算 4イチゴ  30 ←シート2に一致する品目がないので変化無し としたいのですが、どのような記述の式にすればよろしいでしょうか? よろしくお願いします。

  • Excelで特定の文字のある列の数値を合計する関数

    Excelで、特定の文字列を含む列の数値の合計を、自動で集計してくれる関数はあるでしょうか。 複数シート(シートA、シートB)で構成されるExcelファイルで、シートAにはすべての取扱い商品が記載されています。現在は、シートBに入力されている商品ごとの販売個数の合計をシートB上でsumにより求め、その数値をシートAの該当箇所に、手で入力しています。シートAに記載されている商品が多いため、この手作業を関数で代替したいのです。 ただし、シートBに、次のような条件があります。 シートBの1行目(A1,B1,C1,D1...)には、見出しとして"氏名" "りんご" "バナナ" "いちご"...などがあり、2行目以降は、販売者の名前と、その人が販売した商品の個数が入力されています。掲載人数は40人(行数で41行)ほどです。 ところが、誰も"りんご"を販売していなければ、その列自体がなくなります。シートBには販売された商品しか記載されておらず、たとえばB1は、必ずしも"りんご"ではありません。 シートAからBを参照し、シートBの1行目に、もし"りんご"の文字があれば、そのりんごの列の2行目以降にある販売数の合計を、"バナナ"があれば同じくバナナの販売数の合計を、じかにシートAのそれぞれの合計欄に表示させたいのです。 なお、シートBの行と列を入れ換えたシートB'を作るのは、避けたいと思っています。理由は、販売者の名前でも、全商品の販売個数をシートAにsumif関数で集計していること。また、シートは1週間ごとに、今後30枚程度まで増え、その各週合計もシートAに集計する予定のため、シートは各週1枚だけにしたいのです。 このような条件のもと、Excelの関数で集計する方法があれば、教えてくださいますか。

  • ある条件下でIF関数により取り出した数値を計算する方法

    エクセル関数です。2つの数字の変化が A列  B列 100    1 103    1 109    1 120    1 105    -1 102    -1 120    1 123    -1 ・    ・ の時に,以下の2つの条件を満たす式を作る。(1)B列の数字を3行ずつ見てゆく。3行目までずっと1が続き,数字が変わらなければ(-1が出なければ)3行目のA列の数値(109)を取り出す。(2)数字を取り出してから次の3行目までの間でB列の数字が変わったとき(1→-1,-1→1)には,変わった行のA列の数値(105)を取り出す。次はB7なので120,次はB8なので123…と数字を取り出す度にリセットして,新たに3行の中から新しい数字を取り出す。 (頂いた回答) 3列使います。C4=IF((B3=B2)*(B4=B3)*(SUM(C$2:C3)=0)=1,1,0)。D4=IF(B4<>B3,1,0) E4=A4*(C4+D4)。 リセットする毎に,リセットした時点のA列の数字から取り出したA列の数字を引き算したいのですが,良い関数が思いつきません。

  • エクセル関数について教えてください

    AからZまでのチームにAさんからZさんがそれぞれ点数をつけます。 各チームが対戦して勝ったチーム名を入れるとそれぞれつけた点数を反映させる表をつくりたいのです。 私が使ったのは、 「=VLOOKUP($B$2,sheet1!$B$1:$AH$26,2,FALSE)」 なのですが、この式を横にコピーすると列番号が2のままなので数値が正しく反映されません。 列番号を2,3,4と繰り上げるにはどうしたらいいのでしょうか? それとも使おうとしてる関数が違うのでしょうか? よい方法があれば教えてください。

  • SUMPRODUCT関数で複数条件適用されない

    Sheet1 A列:日付 B列:注文番号 C列:品名 D列:整理番号 E列:数量 集計 A列:品名 B~AF列:日付(1~31日) 【集計】B~AF列の日付、A列の品名が 【Sheet1】A列の日付、C列の品名と一致したら 【Sheet1】E列の数量を【集計】の該当するセルに抽出する 式をSUMPRODUCT関数で作成しました。 例)10/1 りんご 20 【集計】B3セルに以下の数式を入れましたが なぜか数量が「0」のままになります。 =SUMPRODUCT('Sheet1'!$A$3:$A$200='集計'!B$2)*('Sheet1'!$C$3:$C$200="りん ご")*('Sheet1'!$E$3:$E$200) 特に数式のミスはないと思うのですが どうしても正しい値が入りません。 数式に間違いがあればご指摘いただけませんでしょうか。 また、他に良き方法があればご教示いただけるとありがたいです。

専門家に質問してみよう