• ベストアンサー

複数のデータについて正数か負数かを一括して識別したいのですが(ワークシート関数)

例えばセルA1~A20のデータが全て正数もしくは全て負数ならば B1にA1~A20の合計値を、正数と負数両方混じっているならB1には ゼロを出力させたいのですが、この処理を簡潔に記述する方法は ありますか? データの数が多くなるケースもあり、「IF(A1>0 and A2>0・・・」と 一つずつ記述すると冗長になりすぎてしまいます。 OSはWindows2000、エクセルはExcel2000を使用しています。 ワークシート関数での回答をお願いします。

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

  • ベストアンサー
noname#52504
noname#52504
回答No.4

簡潔にということなので、ちょいとテクニカルですが、SUMPRODUCTも配列数式も使わずにやってみました。  =IF(MAX(A1:A20)*MIN(A1:A20)>=0,SUM(A1:A20),0)  [最大値と最小値が同符号なら和を、でなければ0を] ※上記は0が混じる場合でも和を返します。  0が混じる場合に0を返すなら、>=0 の部分を >0 に。

noname#128465
質問者

お礼

うまく処理することができました。 ありがとうございました。

その他の回答 (3)

noname#204879
noname#204879
回答No.3

》 正数と負数両方混じっているなら… 正数でも負数でもない 0 が混じることはない、と考えて構わないのでしょうか?

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.2

◆こんな方法もありますよ =(SUMPRODUCT((SIGN(A1)=SIGN(A1:A20))*1)=COUNT(A1:A20))*SUM(A1:A20)

noname#128465
質問者

お礼

うまく処理することができました。 ありがとうございました。

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

作業列を使うなら、 C1=ABS(A1) C2=ABS(A2) … C20=ABS(A20) の総和と、A列の総和の絶対値を比較すれば良いかと。 -- 配列数式を使えば、1回の式で書けると思います。 =IF(ABS(SUM(A1:A20))=SUM(ABS(A1:A20)),SUM(A1:A20),0) でCtrl+Enter とか?

noname#128465
質問者

お礼

うまく処理することができました。 ありがとうございました。

関連するQ&A