電子書籍の厳選無料作品が豊富!

MS EXCEL2003を使用しています。

お客様の利用状況をEXCEL2003にて管理しており、そのデータ入力が正しいものかどうかを判定する関数を教えていただきたいです。

1.列ABCに利用コース別の人数が入る
2.列DEFGに利用時間帯別の人数が入る
3.列HIに性別別の人数が入る
4.列JKLMNに来店手段別の人数が入る

目的 列Pに、お客様総数をカウントしたい。
1~4それぞれで合計人数が出るが、それらがすべて正しいときには列Pに「合計数値」を、1~4のなかで1つでも合計数値に間違いがあったときには列Pも「error」と表示させたい。

よろしくおねがいします。

A 回答 (5件)

列Pに入れる式の一つの案を紹介します



セルP1の例
=if(and(sum(a1:c1)=sum(d1:g1),sum(a1:c1)=sum(h1:i1),sum(a1:c1)=sum(j1:n1)),sum(a1:c1),"error")

もう少しすっきりした関数もあるかもしれません・・・。
    • good
    • 0
この回答へのお礼

ありがとうございます。
これに近いもの=if((sum(a1:c1)=sum(d1:g1)=sum(h1:i1)=sum(j1:n1)),sum(a1:c1),"error")くらいまでは思いついたのですが、うまく機能しなかったので。

もう少しスッキリしたものがわかれば教えてください。

お礼日時:2010/03/01 21:54

例えばP1セルには次の式を入力してはいかがでしょう。



=IF(SUM(A1:N1)=0,"",IF(AND(SUM(A1:C1)=SUM(A1:N1)/4,SUM(D1:G1)=SUM(A1:N1)/4,SUM(H1:I1)=SUM(A1:N1)/4,SUM(J1:N1)=SUM(A1:N1)/4),SUM(A1:N1)/4,"error"))
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

内容は、すべてのセルの合計値を4で割ったものが、「1.2.3.4」それぞれの部門の値と等しいかどうかを判定しているのですね。違った考え方として参考にさせていただきます。

お礼日時:2010/03/03 19:12

たびたび申し訳ありません。

dogsivaです。
No.3の回答に間違いがありましたので訂正です。
最後に紹介した式では
sum(a1:c1)=sum(d1:g1)
sum(h1:i1)=sum(j1:n1)
この2つの比較しかしないため
たとえば
sum(a1:c1)=10
sum(d1:g1)=10
sum(h1:i1)=100
sum(j1:n1)=100
でもTRUEを返してしまうようになっていました。
この式では間違った結果を得てしまいますのでご注意ください。
    • good
    • 0
この回答へのお礼

確かにそうですね。

=if(and(sum(a1:c1)=sum(d1:g1),sum(a1:c1)=sum(h1:i1),sum(a1:c1)=sum(j1:n1)),sum(a1:c1),"error")

が無難なようですね。

お礼日時:2010/03/03 19:06

回答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
こうなり、うまくいくと思います。
    • good
    • 0
この回答へのお礼

詳しい解説ありがとうございます。

「論理式と数値」昔学んだような気がします、ちょっと思い出してきました。2つくらいなら簡単にできたのですが、4つとなるどうしていいか困ったもので。

お礼日時:2010/03/03 19:04

》 1~4それぞれで合計人数が出るが、それらがすべて正しいとき…



「1~4それぞれで合計人数が出るが、それらがすべて」等しいときが「正しい」とは限りません。別の(正しいと判断する総人数の)データが必要です。
「1~4それぞれで」入力ミスがあっても、それぞれの合計人数が等しい場合もあり得るからです。

この回答への補足

確かにのとおりです。正確な合計人数のデータが必要でした。

ただ、今回は4つのデータが正しければ、「正しい」と判断してとある一つのデータ(例えば1.の列ABCの合計)を出力したいと思っています。

補足日時:2010/03/01 21:43
    • good
    • 0
この回答へのお礼

ご指摘ありがとうございました。

お礼日時:2010/03/03 19:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!