• ベストアンサー

エクセル サムイフ関数の合計範囲にエラー値(#VALUE!)がある場合に無視して集計する関数

宜しくお願い致します。 エクセルのA列に個々の商品名を、B列に売上個数を表示していて、C列に検索条件に使う為に商品名を、D列にサムイフ関数の結果を表すようにしています。 (D列には、C列の商品名と同じ物をA列から探して、(B列の)売上個数の合計を出すという事です) そして、B列の売上個数は他の数式を使って持ってきているので、数字の時もあればエラー値(#VALUE!)の時もあります。 質問させて頂きたいのは、サムイフ関数の検索条件で指定した商品の売上個数(B列)のどれか1つでもエラー値(#VALUE!)があったら、計算結果もエラー値(#VALUE!)になってしまうので、エラー(#VALUE!)がある場合はそのセルを無視した売上個数の合計を出したくて、そのエラー値(#VALUE!)が数値に更新された時はその売上個数も集計されるような関数を作りたいのですが、ご存知の方ご指導お願い致します。 過去の質問を調べてみましたら、サム関数の場合はISNUMBERというのを使用した解決方法がありましたので、自分でサムイフ関数の場合を試してみましたが、上手く行きませんでした。 http://okweb.jp/kotaeru.php3?q=883905 (QNo.883905 04/06/07 15:59) 使用しているOSはXP、エクセルは2003です。 わかりずらい質問文ですみません。宜しくお願い致します。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

#1です。 詳しく検証してないですが、 =SUMPRODUCT((A1:A10=C1)*IF(ISERROR(B1:B10),0,B1:B10)) これで、Ctrl+Shift+Enter でそれっぽいのが出ました。 あとはB列をマクロで一括書き換えするとか。 Sub Test() Dim r As Range, f As String For Each r In Selection  If r.HasFormula Then   f = Mid(r.Formula, 2, Len(r.Formula))   r.Formula = "=if(iserror(" & f & "),0,(" & f & "))"  End If Next r End Sub

demand
質問者

お礼

こんばんわ。再びのご回答ありがとう御座います。 上の関数をD列に入れたらあっさりと数値が出ました。 B列のエラー値が他の場合はどうか試してみましたが、#VALUE!、#DIV/0!、#NAME?、#N/A、#REF!の全てで希望どうりの結果になりました。(参照するB列がエラー値の場合はそのセルを無視して合計して、数値の場合は集計される) 非常に助かりました。 本当にありがとう御座いました。

その他の回答 (2)

  • pachikuri
  • ベストアンサー率30% (33/107)
回答No.2

>(最後の手段として1つ1つB列の数式を変えていく方法をとります。) B列の式を書き直すのが大変なら,C列のところに1列挿入して =IF(ISERROR(B1),0,B1) などとすればどうでしょう。 印刷に影響するようなら,列幅を小さくして・・・・

demand
質問者

お礼

pachikuriさん。こんばんわ。 早速のご回答ありがとう御座います。 新しく一列挿入して、B列をふるいにかける方法もまったく思いつきませんでした。 こちらもB列のエラー値が他の場合はどうか試してみましたが、全てで希望どうりの結果になりました。 ポイントの方は先着順ということでご了承下さい。 非常に助かりました。 本当にありがとう御座いました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

> B列の売上個数は他の数式を使って持ってきているので、 > 数字の時もあればエラー値(#VALUE!)の時もあります。 このB列の関数でエラーなら 0 を返すようにするとか。 =IF(ISERROR(元の式),0,元の式)

demand
質問者

お礼

papayukaさん。こんばんわ。 早速のご回答ありがとう御座います。 サムイフ関数でなく、B列の数式を変えることはまったく思いつきませんでした。 しかし、A列B列が数百行あり、B列の数式の参照先がバラバラなので数式のコピー&ペーストが出来ないので、他に方法があればお願い致します。 (最後の手段として1つ1つB列の数式を変えていく方法をとります。) ありがとう御座いました。

関連するQ&A

  • エクセルの関数について

    エクセルの関数にてこういった場合、どうしたらいいでしょうか? 過去の質問をみましたが、探し方が悪いのか、見つけれませんでした。 A列には商品の個々の名前 B列には商品の売上個数 E列にそれぞれの商品が何個売れたのかという 合計を出したいのですが… 何かの関数で出来るのでしょうか?

  • Excelの条件検索による合計計算

    ExcelでA列に日付、B列に商品名、C列に売上金額を入れて、日々の売上管理をしています。最大でも500行と仮定します。 B列のりんごの合計、みかんの合計など商品ごとの合計を算出したいと考えています。B列の商品ごとの合計です。 この場合には、どの様な関数・数式を使用するのでしょうか? 宜しくお願いいたします。

  • Excelの関数でVALUE!(エラー)を無視して、SUMPRODUC

    Excelの関数でVALUE!(エラー)を無視して、SUMPRODUCT関数など計算するにはどうすればよろしいでしょうか? 過去に教えて頂いたのを更に応用したものです。 月度の数字H3の数字を入れると、横のJ4とK4が自動的に金額が入るようになっています。J4が月ごとの合計金額→関数:=IF(H3="","",SUMPRODUCT((MONTH(D3:D20)=H3)*((F3:F20))))を使用し、K4が月ごとの最大金額→関数:=IF(H3="","",MAX(INDEX((MONTH(D3:D20)&""=ASC(H3))*F3:F20,)))を使用しております。また、D列の西暦年月日には、D3から関数:=IF(ISBLANK(A3),"",DATEVALUE(A3&"年"&B3&"月"&C3&"日"))で表示ができるようにしてあります。 そこでD15からD20については、ISLANK関数を使っているのでA3が空白な為、VALUE!(エラーを返す)のを非表示になります。この場合、D15~D20の関数を削除すれば、J4とK4は正常に表示されますが、D15~D20に関数が入ったままだとJ4とK4はVALUE!を返しエラー表記になってしまいます。回避する関数(J4とK4)はどのようにしたらよろしいでしょうか?また、西暦年月日を参照せずに、B列の月項目の数字で月を判別するにはどうすればよろしいでしょうか?(H4の数字入力により) ※参考までにD3より下、関数:=DATEVALUE(A3&"年"&B3&"月"&C3&"日")で通常入力すると、必ず、D15~D20はVALUE!関数エラーで表示されます。

  • VALUE関数で「#VALUE!」のエラーがでます。

    VALUE関数で「#VALUE!」のエラーがでます。 社内のDBからExcel転送したデータの「'12345678」を数値に変換したいのですが、作業列にVALUE関数を入れ引数に「'12345678」を入れると「#VALUE!」となってしまいます。 「'12345678」は文字列だと思っているのですがなにが間違いなのでしょうか。 お詳しい方、ご教示ください。

  • Excelで2列のキーワードからのデータを合計するには?

    A列に日付、B列に支店名、C列に商品名、D列に売上金額が売上ごとに入ってます。 ある支店の売上の合計にはSUMIF(支店名)を使っていますが、ある支店の(且つ)ある商品の売上の合計はどうやって計算すればいいのでしょうか?フィルターやピボットテーブルでなく関数を使いたいのですが。 初歩的な質問ですみませんがよろしくお願い致します。

  • エクセル 項目ごとの合計

    エクセルについて質問です。 何の項目があるのか分からない状態で、項目ごとの合計を出せる関数はありますか? 商品の売上明細のデータがあります。 商品名ごとに合計金額をだしたいが、商品名の列に何の商品があるかわかりません。 ピポットテーブルを使ったり、まず何の商品の明細があるかを調べてからSUMIF等使うといった方法以外で、何かありますでしょうか? 毎月商品ごとの売上金額を調べたいのですが、何の商品が売れるか分かりません。 できれば、予め数式を組んでおいて、売上明細データを貼り付けるだけで結果がでるようにしたいです。 商品数が多いため、全ての商品名の行を作るのは避けたいです。 よろしくお願い致します。

  • エクセルの集計表について

    エクセルで下記のような表があります。 商品コード  商品名   A店(個) B店(個) 12      いちご   3      2 66      バナナ   6      20 12      いちご   55      4 55      メロン   12      9 66      バナナ   100      15 12      いちご   99       38              ↓ 商品コード  商品名   A店(個) B店(個) 12      いちご 合計             157    44 55      メロン 合計             12      9             66       バナナ    合計             106    35 集計表を使って、商品ごとにA店とB店の個数合計を出すのですが、 個数合計が出た行のみを、一括で書式を変えるにはどうしたらよいでしょうか? 商品は、100種類くらいあって、すべてのデーターの数は、3000くらいあります。 合計の列だけを抽出して、ドラックしてコピーしても、その間にあるすべての列が変更されてしまうので。 エクセルは、あまり詳しくないので、詳しいかたどうぞよろしくお願いします。

  • エクセルで集計

    エクセルで集計 シート1に1つの列に各支店名、2つ目の列に各商品名、3つ目の列に商品個数がランダム入力されているデータをシート2に自動で整理し集計したいのですが、2つの列の集計は関数SUMIFできるのですが、例えば、「各支店の商品個数の集計」など、「各支店の各商品の個数の集計」などの3つの列の集計方法を分かる方、いましたら教えてください。宜しくお願いします。

  • エクセル・エラー値を含む合計

    エクセル2000です。 例えば、セルB1からB100まで合計する場合に途中の値がエラーだと合計値もエラーになります。 今はIF関数でエラー値は0として計算していますが、データ-がとても多く計算に非常に時間がかかります。 そこで教えてもらいたいのですが、エクセル2000に初めからこのような機能はサポートされていませんか? もしくはマクロでできませんか? ご回答よろしくお願い致します。

  • EXCEL合計について

    Excelの関数についての質問です。      A列   B列 1行目 1-2-3  1200 2行目 2-3-1  800 3行目 4-5-1  400 4行目 3-2-1  2000 5行目 1-3-2  500 6行目 答え→ ( 4500 ) 上記の表があり、B列6行目に条件に応じた計算結果を出したいです。 条件としては、1-2-3、2-3-1、3-1-2など、同じ数字で構成されているものであれば、順番が違っていても同じものとみなして合計します。 ※1-2-3は文字列です。 ※上記の表では、1-2-3でできる組合せの合計でB6に4500という答えを出してます。 思いつくままに関数を書いてみました。 =SUM(SUMIF(A1:A5,{"1-2-3","1-3-2","2-1-3","2-3-1","3-1-2","3-2-1"},B1:B5)) これでもできなくはないのですが、組合せをたくさん書くのがとても面倒で、 仮に、1-2-3-4 や、1-2-3-4-5 など組合せが多くなった場合はとても上記のやり方では対応できません。また、組合せは1桁だけでなく2桁(1-3-10)、3桁(5-80-100)も存在します。 前回こちらで以下の書き方をおしえていただいたのですが、 =SUMPRODUCT((ISNUMBER(FIND(TRIM(MID(SUBSTITUTE(A6,"-",REPT(" ",100)),1,10)),A$1:A$5))*ISNUMBER(FIND(TRIM(MID(SUBSTITUTE(A6,"-",REPT(" ",100)),100,10)),A$1:A$5))*ISNUMBER(FIND(TRIM(MID(SUBSTITUTE(A6,"-",REPT(" ",100)),200,10)),A$1:A$5))),B$1:B$5) こちらですと 1-12-3と1-2-3が同類とみなされて一緒に合計されてしまいます。 2桁以上でも対応できるやり方か、他にもっと効率の良い求め方があれば教えて下さい。

専門家に質問してみよう