• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルSUMの計算を効率的に行う)

エクセルSUMの計算を効率的に行う方法

kagakusukiの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

>(1=2)とあるのですが、(このあとも1=2)(2=2) と続きますが、この前者の数字(=より前の数字)がどうやって出てきたのかがわかりません。  4番目の COUNTIF(OFFSET($A$1,,,ROW($A4)),"><") の箇所を例として説明させて頂きます。  ROW関数は括弧内で指定しているセルの行番号を返す関数です。  ですから、、ROW($A4)の括弧内にはA4セルが指定されていますから、ROW($A4)の表す値は4になります。  因みに、 ROW() という関数は、その数式が入力されている行の行番号を返します。  従って、 COUNTIF(OFFSET($A$1,,,ROW($A4)),"><") =COUNTIF(OFFSET($A$1,,,4),"><") という事になります。  OFFSET関数は、 OFFSET(基準,行数,列数[,高さ][,幅]) という形式ですから、 OFFSET($A$1,,,4) は、A1セルを先頭(1番左上のセル)とする、縦方向が4行に渡るセル範囲を示す関数です。(幅が指定されていないため、横幅は1列のみになります)  従って、 OFFSET($A$1,,,ROW($A4))=$A$1:$A4 COUNTIF(OFFSET($A$1,,,ROW($A4)),"><") =COUNTIF(OFFSET($A$1,,,4),"><") =COUNTIF($A$1:$A4,"><") という事になります。  $A$1:$A4の範囲で空欄ではないセルは、A1とA3の2つだけですから、 COUNTIF(OFFSET($A$1,,,ROW($A4)),"><") の値は2になります。  それから、申し訳御座いませんが、ANo.5で記した数式は、Excel2007よりも前のバージョンのExcelでは使えない事が判りました。  Excelにはネストという概念があるのですが、それは関数や括弧の中に、更に関数を入れ子にした数式を作成した場合において、関数や括弧が何重の入れ子になっているのかを表す数です。  例えば、 =COUNTIF($A$1:$A4,"><") は単純な関数ですから、ネストレベル1、 =COUNTIF(OFFSET($A$1,,,4),"><") はCOUNTIF関数の範囲を指定するのに、OFFSET関数を使用した複合的な関数ですから、ネストレベル2、 COUNTIF(OFFSET($A$1,,,ROW($A4)),"><") はCOUNTIF関数の中に、OFFSET関数があり、更にその中にROW関数がありますから、ネストレベル3になります。  Excel2007より前のバージョンでは、ネストレベル7までの関数しか扱っていないため、ネストレベルが8以上の関数は入力する事が出来ないのです。  そのため、Excel2007より前のバージョンでは、ANo.5で記した数式を入力する事が出来ません。(Excel2007以降のバージョンでは、ネストレベル64まで可能)  ですから、ANo.6の数式を御使用下さい。

ami0607
質問者

お礼

大変、お世話になります。ありがとうございました。 私はどうもOFFSET関数を理解していないのでしょうか。。今回ももう一度OFFSETをいろいろ勉強してみたのですが、こちらがまだ理解できません。 =COUNTIF(OFFSET($A$1,,,4),"><") =COUNTIF($A$1:$A4,"><") このCOUNTIF(OFFSET($A$1,,,4),"><")についてですが、 私の理解では、A1から右にも左にも動かず4つだけ下に動く。 なので、A5のセルのことを指すと思っていました。 たしかにOFFSETで範囲を指定できるのも勉強したのですが、この場合、幅にあたる数字がないことから、A5のセルのみを指すと考えてしまいました。 そして、いろいろ調べたのですが、やっぱりわかりません。 これはどう考えたらよいか、お手すきのときで良いので教えていただけませんか。

関連するQ&A

  • エクセル2003 計算されないようにしたい

    例 A列     B列  1     =A1+A2  2     =A2+A3  3     =A3+A4 (A4は空白です) となっている場合に B1=3 B2=5 B3=3 になると思うんですが この時に空白のセルと計算結果を出すときは0もしくは 計算されないようにしたいです。 最終的にB列にSUM関数を使って合計を出したいのですが A列に求めたい数字が片方しか入ってない場合 (数字が入っているセル+空白セル)はSUM関数の合計に入れたくないです。 なので上記の例では B列にSUM関数をした場合11ではなく8にしたいです。 それには文字列を入力して#VALUE!にするしかないですか? でもその状態にしてSUM関数で合計を出したときも#VALUE!になってしまいます。 よろしくお願いします。

  • Excel2003でif関数を使うとSUM関数で反映されません

    A1セルに金額を入力すると、B1に1と表示させる為に=IF(A1,"1","")といった数式を入れております。 さらにC1にBセルの合計値を表示させる為に=SUM(B1)C2には=SUM(B1:B2)と入力しているのですが、B列のセルにIF関数を使った数字『1』が表示されてもC列セルに反映されないので困っています。 ここで質問ですが、A列セルに金額が入力されるとB列セルに数字『1』が表示され、更にC列セルにB列セルの合計値が表示される様な関数等はありますでしょうか?解り難い説明ですいません。 因みにA、B、C列共に1~31までのセルがあります。

  • エクセルの計算で・・・

    A列に50個ほどの商品の個数 B列にその単価  があります。 A列×B列の全体の答えの合計をC1に入れたいのです。 普通は、A1×B1をC1に入れてC51にSUM するのが簡単なんですが、依頼者の都合上できないのです。 関数1つでC1に合計が入りませんかね~。 この説明で意味お分かりでしょうか? もしお分かりの方がいらっしゃいましたら お助けください。

  • エクセル イレギュラーなSUM関数

    会社で使うエクセル表を作っていますが困っています。 A列B列があり A5にはA1~A4の合計のSUM関数が入っています。 B5にもSUM関数を入れたいのですが B1~B4はイレギュラーな事があった場合のみ数字を入力し B5にはB1~B4に入力された数字の合計と B列に何も入力されていない隣のA列の合計を表示させたいのです。 例えるなら A1~A4に3を入力 A5はSUM関数がはいっているので12が表示されているとして B列はB1~B3は未入力 B4に7が入力された場合 B5にはA1~A3とB4の合計の16が表示されるようにしたいのです。 B4に7を入力したので隣のA4の3は合計しないという事です。 どうぞ宜しくお願い致します。

  • SUM関数の範囲に#N/Aがあっても合計してくれる計算式

    A列に氏名、B列に金額(計算式が入っている)があります。 B列の最終行に合計金額を出したいのですが、 B列に、#N/Aとなるセルがあり、 SUM関数を使うと結果がエラーになります。 なんとかエラー値のセルは無視して合計金額を出す計算式は ないでしょうか。 よろしく御指導下さい。

  • excelの計算式のコピーが出来なくなった。

    Excelで表を作成して、A列の下部にSUMで合計を出して、選択をして 右にドラッグして、B,C,D,E,の合計を出していたのですが、 突然、計算式のコピーが出来なくなり、A列の合計が そのまま B,C,D,Eにコピーされるのです。  B列に移動したときはB列のSUMとなっているのですが、確定しますとAの値になります。 理解できなくて?  助けてください。

  • こんな関数お願いします

    こんな関数お願いします ドングリを拾った数の合計 Excel2003です、A列 月日 B列 氏名 C列 数量 行は2~60 氏名はA君B君C君D君です、 シート2のA列に氏名 B列に合計数量です。 B列の合計数量セルの関数式をお願いします、 シート1に記入するとシート2のB列に合計数量が出る方法A君でお願いします。

  • エクセル(excel)の計算式(関数)について

    エクセル(excel)の計算式(関数)でよいアイディアがありましたら教えてください。 1行目は項目行です。 セルA1から右に15列=セルO1まで、 a | b | c | d | e | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 と入っています。 2行目からデータとして、 セルA2から右に5列=セルE2まで、 4 | 2 | 2 | 1 | 1 と入力したとします。(データ例(1)) あるいは、 セルA3から右にセルE3まで、 6 | 3 | 0 | 0 | 0 と入力したとします。(データ例(2)) 1つのデータの5個の数字のルールは2つで、 「合計で10以下である。」 「左から順に小さくなるか、同じ数字となる。」 です。 (目的は、) このとき、F列からO列にかけて、 データ例(1)のケースでは、 a | a | a | a | b | b | c | c | d | e データ例(2)のケースでは、 a | a | a | a | a | a | b | b | b | と表示されるように、 つまり、項目行の下にある数だけ、その列の1行目の記号を 1(F列)から右に向かって順に埋めていくような、 F列からO列までの2行目以下に入れる適当な計算式(関数)は ないでしょうか。 拙い説明で申し訳ありません。どなたかよい考えをお持ちの方がいらっしゃいましたらと存じます。 どうぞよろしくお願い致します。

  • 続 エクセル イレギュラーなSUM関数

    先程こちらでhttp://oshiete1.goo.ne.jp/qa5428194.html イレギュラーなSUM関数を質問しお答えいただきましたが 新たに問題が出ましたのでもう一度質問いたします *さきほどの質問の内容はこちらです* A列B列があり A5にはA1~A4の合計のSUM関数が入っています。 B5にもSUM関数を入れたいのですが B1~B4はイレギュラーな事があった場合のみ数字を入力し B5にはB1~B4に入力された数字の合計と B列に何も入力されていない隣のA列の合計を表示させたいのです。 例えるなら A1~A4に3を入力 A5はSUM関数がはいっているので12が表示されているとして B列はB1~B3は未入力 B4に7が入力された場合 B5にはA1~A3とB4の合計の16が表示されるようにしたいのです。 B4に7を入力したので隣のA4の3は合計しないという事です。 *回答はこちらです* 回答1 配列関数で =SUM(IF(B1:B4="",A1:A4,B1:B4)) と入力して、Ctrl+Shift+Enterで決定したら、式が{}でくくられて配列関数になります。 式の意味は B1~B4が空白の場合は、A1~A4の値を、それ以外はB1~B4の値を出して合計 回答2 =SUMPRODUCT(NOT(B1:B4)*A1:A4+B1:B4) あたりですかね。not関数のかわりにisblank関数の方が判りやすい かもしれないけど。 TRUE/FALSEの論理値は、四則演算にぶち込むと1/0の数値として扱 われます。また、空は四則演算にぶち込むと0の数値として扱われ ます。だから、「B列が空である」がFALSEならA列とのかけ算はゼ ロになりB列の値が加算され、TRUEならA列の値に1をかけて0を足し たことになります。後はそれを1行目から4行目にわたって配列とし て計算して合計してくれるsumproduct関数に放り込むだけ。 問題はこの方法だと B列に何も入力しない場合、A列の合計がB5に出て来てしまいます。 B列に何も入力しない場合、B5にも何も入力しないようにしたいのです。 ちなみに先程は記述しませんでしたが B列には自動で数字に〔〕が付くようにユーザー定義で指示していて B5はB列が未入力で合計が0でも〔0〕と表示されないように ユーザー定義で "〔"#"〕";;;が入っていてます。 やりたい事をまとめると ●B列には自動で数字に〔〕を付ける ●B1~B4に数字が入力された場合はB5に  B1~B4の合計とB列に何も入力されていない隣のA列の合計を表示させたい  がB列が未入力ならB5に何も表示しない ややこしくて申し訳ありません。 そして確認不足で申し訳ありませんでした。 どうぞ宜しくお願い致します。

  • 条件付のsum,max,min関数の書き方

    sum関数なので、合計欄のセルに ex.=SUM(B1:B6)などと書くときに、 a列が"1"の場合のみ合計欄のセルに加算したい場合は どうやって書けばいいでしょうか? __ A B 1 1 100 2 0 200 3 1 300 4 0 400 5 1 500 6 0 600 合計欄の値=900にしたいのですが.... もしも書き方があるのであれば、 MAX,MINの場合も同じでしょうか?