質問: excel関数で複数のセルの合計が正しいかどうか判定する ms excel2003を使用しています。 お客様の利用状況をexcel2003にて管理しており、そのデータ入力が正しいものかどうかを判定する関数を教えていただきたいです。 1.列abcに利用コース別の人数が入る 2.列defgに利用時間帯別の人数が入る 3.列hiに性別別の人数が入る 4.列jklmnに来店手段別の人数が入る 目的 列pに、お客様総数をカウントしたい。 1~4それぞれで合計人数が出るが、それらがすべて正しいときには列pに「合計数値」を、1~4のなかで1つでも合計数値に間違いがあったときには列pも「error」と表示させたい。 よろしくおねがいします。
回答: 回答no.1のdogsivaです。再度回答します。 northstarxさんの =if((sum(a1:c1)=sum(d1:g1)=sum(h1:i1)=sum(j1:n1)),sum(a1:c1),"error") これと 私の先述した =if(and(sum(a1:c1)=sum(d1:g1),sum(a1:c1)=sum(h1:i1),sum(a1:c1)=sum(j1:n1)),sum(a1:c1),"error") これは、得られる結果が異なります。 例としてsum(a1:c1)、sum(d1:g1)、sum(h1:i1)、sum(j1:n1)がすべて10となる場合、 上の式では sum(a1:c1)=sum(d1:g1)→10=10→true sum(h1:i1)→10 ↓ true=10→false (論理値trueと数値を比べてしまうので、falseとなってしまう) 論理式と数値が混ざってしまうのでうまくいきません。 下の式では、2辺の式を3つ作っているので問題ありません。 sum(a1:c1)=sum(d1:g1)→10=10→true sum(a1:c1)=sum(h1:i1)→10=10→true sum(a1:c1)=sum(j1:n1)→10=10→true ↓ and(true,true,true)→true このようになるのでうまくいきます。 ただし、これでうまくいくのは、これら4つの合計値が「等しい」場合であって 「正しい」場合とは無関係というのはmike_gさんのご指摘のとおりです。 ちなみに、上の式を使ってうまくいくようにするための一案 =if((sum(a1:c1)=sum(d1:g1)=sum(h1:i1)=sum(j1:n1)),sum(a1:c1),"error") ↓ =if((sum(a1:c1)=sum(d1:g1))=(sum(h1:i1)=sum(j1:n1)),sum(a1:c1),"error") (a=b=c=dから(a=b)=(c=d)に変更) こうすることで sum(a1:c1)=sum(d1:g1)→10=10→true sum(h1:i1)=sum(j1:n1)→10=10→true true=true→true こうなり、うまくいくと思います。