[[20180811150139]] 『合計値表示時、IF文で「0」なのに空白になる』(amaryllis) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『合計値表示時、IF文で「0」なのに空白になる』(amaryllis)

1直がA1808.xlsxで、2直がB1 808.xlsxになっており、
1直と2直と合わせた合計値を出すためにC1808.xlsxがあります。

A1808.xlsxとB1808.xlsxは、A1セルに件数を数値入力しています。

C1808.xlsxは、
'C:\フォルダ名\[A1808.xlsx]件数'!A1+'C:\フォルダ名\[B1808. xlsx]件数'!A1
↑.
このように式になっており、毎月の初日に「データ」→「リンクの編集」で「1808」を「1809」に変えています。
※ 1808は18年8月を意味しています。

そこで、質問です。
A1808.xlsxとB1808.xlsxのA1セルの合計値が、
(1) 空白(入力されていない)なら、C1808.xlsxのA1セルを""にする。
(2) 「0」 (データが無い)なら、C1808.xlsxのA1セルを"0"にする。
(3) (1)(2)以外にデータがあって件数が入力されているなら、C1808.xlsxのA1セルに反映する。

それをIF文で、
=IF('C:\フォルダ名\[A1808.xlsx]件数'!A1+'C:\フォルダ名\[B1808.xlsx]件数'!A1="","",IF('C:\フォルダ名\[A1808.xlsx]件数'!A1+'C:\フォルダ名\[B1808.xlsx]件数'!A1=0,0,'C:\フォルダ名\[A 1808.xlsx]件数'!A1+'C:\フォルダ名[B1808xlsx]件数'!A1))
にしてみましたが、(2)が「0」にならず、空白になっています。

「0」で表示させるには、どうしたらよいですか?

因みにそのファイル(C1808.xlsx)は、私自身だけ使うのではなく現場の職制(組長や工長や課長)たちがPCで見る為です(C1808.xlsxをネットワークの共有フォルダにアップ(更新)している)。
そのため、Excelのオプションで「ゼロ値のセルにゼロを表示する」チェックボックスをオフのままで、「0」を表示出来るでしょうか?

尚、結果を見るのは盆休み明け(8月20日)にします。それから、返事またはペストアンサーにしますので、承知ください。

あと、上記の中の「\」は半角の「¥」の事です。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


>A1808.xlsxとB1808.xlsxのA1セルの合計値が、
>(2) 「0」 (データが無い)なら、C1808.xlsxのA1セルを"0"にする。
前提条件がちょっと変な気がします。

合計値と仰ってるので0はデータが無いのではなく、合計値が0です。
データがないという状態は(1)のほうで評価してるように、ブランクセルということになるとおもいます。

そのうえで、合計するといっているので、それぞれのA1には本来数値がはいるのでしょうが、データがない(=ブランクセル)であるかを評価するために、文字列として結合して「""」であるかを見ているのでしょうけど、結合に「+」を使用されています。
この部分、文字列としてみるのであれば、CONCATENATE関数か「&」を使って結合すべきだとおもいます。

また、

 IF 〜〜 =0,0

この部分、0のときに0を返せとなってますが、そのまま0を表示すればいいだけでしょう。

踏まえて、読みづらい&書きづらいので

 [データA]:'C:\フォルダ名\[A1808.xlsx]件数'!A1
 [データB]:'C:\フォルダ名\[B1808.xlsx]件数'!A1
として、

【パターン1】

 ブックA、ブックB、それぞれのA1セルが[共に]がブランクであれば
  ブランクを表示
 そうでなければ
  ブックA、ブックB、それぞれのA1セルを合計して表示

 =IF([データA]&[データB]="","",SUM([データA],[データB]))

【パターン2】

 ブックA、ブックB、それぞれのA1セルが[いずれかでも]ブランクであれば
  ブランクを表示
 そうでなければ
  ブックA、ブックB、それぞれのA1セルを合計して表示

 =IF(OR([データA]="",[データB]=""),"",SUM([データA],[データB]))

ちなみに、この掲示板は「ベストアンサー」という機能は(たぶん)ありません。
また、マルチポストも禁止はされていません。
ただ、別の掲示板にも投稿されているのであれば、その旨書いておいたほうが、変な軋轢を生まなくてよいのではないかとおもいます。(マルチポストしていないなら余計な一言失礼しました。)

(もこな2) 2018/08/11(土) 16:20


もこな2さん、回答をありがとうございます。

ブランク?
どういうことですか?

あと、文字列としておくのではなく、数値でやっています。

 [データA]が「0」で[データB]が「5」であれば、合計は「5」になりますが、[データA]が「0」で[データB]も「0」であれば、合計は「0」となるが、それを表示するには、
【パターン1】や【パターン2】の式でないとダメでしょうか?

別の掲示板に投稿しておりませんので、マルチポストしていません。
確か、「ベストアンサー」という機能はなかったんですね。
失礼しました。
(amaryllis) 2018/08/11(土) 18:42


>ブランク?
>どういうことですか?
いざ説明すると難しいですね。(ちょうどいいサイトが見つからず)
誤解を生むかもしれませんが、何も入力されてない状態。文字が0文字入力されてる状態。ですかね。

たとえば、新しいブックを立ち上げて、C1セルに「A1セルになにか」入力されていたら、「入力アリ」と表示させる数式を考えてみて下さい。なんとなく伝わりませんかね。

> [データA]が「0」で[データB]が「5」であれば、合計は「5」になりますが、[データA]が「0」で[データB]も「0」であれば、合計は「0」となるが、それを表示するには、【パターン1】や【パターン2】の式でないとダメでしょうか?

こちらは疑問点がわかりません。そのようになるようにしたと思いますが・・・
「」 「」  →  どちらも 「」が返る
「」 「0」 →  パターン1だと「0」、パターン2だと「」が返る
「0」 「5」 →  どちらも 「5」が返る
「0」 「0」 →  どちらも 「0」が返る

こうなりませんか?

(もこな2) 2018/08/11(土) 20:56


もこな2さんまた、回答をありがとうございます。

>「」 「0」 →  パターン1だと「0」、パターン2だと「」が返る

件数入力時のバータン、これはないです。

「」 「」  →  どちらも 「」が返る
「0」 「5」 →  どちらも 「5」が返る
「0」 「0」 →  どちらも 「0」が返る

この3つだけです。
(amaryllis) 2018/08/11(土) 21:33


 セルが空白(ブランク)だと、0と空白どちらも通るから、その辺注意。
 例えば、A1が全くの空白(ブランク)の場合、
 =A1=""
 =A1=0
 どちらもTRUEと返されます。
 だから、空白と数値だけの比較だけだったら、
 =if(and(ISNUMBER(A1),ISNUMBER(B1)),"どちらも数値","両方または片方が数値で無い")
 Isnumberを使っては・・・。

 =if(and(ISNUMBER(A1),ISNUMBER(B1)),A1+B1,"")
 こんな感じになるのかな?

 COUNT関数使ってもいいけど・・・。
 =COUNT(A1:B1)
 2以外だったら、どちらかまたは両方数値で無い。
(BJ) 2018/08/11(土) 21:51

 >この3つだけです。

 =IF(COUNT(A1,C1),SUM(A1,C1),"")

 こんな感じでええのとちゃいますか。

 >Excelのオプションで「ゼロ値のセルにゼロを表示する」チェックボックスをオフのままで、
 >「0」を表示出来るでしょうか? 

 小数はないんやったら、表示形式のユーザー定義 0;-0;0
 これでできまへんやろか?
 
(よみびとしらず) 2018/08/12(日) 09:52

BJさん、よみびとしらずさん、回答をありがとうございます。
来週に会社でやってみます。
みなさま、ありがとうございました。
(amaryllis) 2018/08/13(月) 10:49

よみびとしらずさんのコメントでようやく理解しました。
IF(〜〜 =0,0,〜〜)の部分
0という"文字"を表示させたいからそうなってるんですね。

 ・[データA]と[データB]は数値しか入力しない
 ・[データA]と[データB]の片っぽだけ空白という状態は生じない

ということであれば、皆さんのCOUNT関数を使う案を拝借して、長くなってしまいますけど、

 =IF(COUNT([データA],[データB]),IF(SUM([データA],[データB]), SUM([データA],[データB]),"0"),"")

という感じでは如何でしょうか。
一応、外側のIF関数で、[データA]と[データB]のデータ個数を確認し、0個じゃなければ(どちらも空白じゃなければ)内側のIF関数で[データA]と[データB]の合計を確認して、0じゃなければその合計値を、0であれば"0"という文字を表示させるようにしたうえで、そもそも外側のIF関数で偽となる、[データA]と[データB]のデータ個数が0個(いずれも空白)の場合は空白が返るようにした(ハズです)。
(もこな2) 2018/08/13(月) 20:33


もこな2さん、回答をありがとうございます。

おっしゃる通り、「0」を表示したかったのです。

従って、今日から仕事が始まり、会社で下記の式でやってみました。
=IF(COUNT([データA],[データB]),IF(SUM([データA],[データB]), SUM([データA],[データB]),"0"),"")
そうしたら「0」が表示されました。
ありがとうございます。

ところが、別の問題が出ました。
A1セルだけではなく、A2セルもあり、
A1が
=IF(COUNT([データA(A1セルの値)],[データB(A1セルの値)]),IF(SUM([データA(A1セルの値)],[データB](A1セルの値)), SUM([データA(A1セルの値)],[データB(A1セルの値)]),"0"),"")

A2が
=IF(COUNT([データA(A2セルの値)],[データB(A2セルの値)]),IF(SUM([データA(A2セルの値)],[データB](A2セルの値)), SUM([データA(A2セルの値)],[データB(A2セルの値)]),"0"),"")

でA3はA1+A2の合計を表示するのですが、A1が「0」A2も「0」の合計で「0」を出したいのに「""」になってしまう。

その場合は、どの式にしたら良いでしょうか?
(amaryllis) 2018/08/20(月) 13:17


上記の質問ですが、自己解決しました。

どうもすみませんでした。
(amaryllis) 2018/08/20(月) 15:29


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.