MW211 EXIT

devlog
Excel/空白を計算するとエラーなのでブランクに…
2018年07月29日
┌─┬──────┬──────┐
│  │     A      │     B      │
├─┼──────┼──────┤
│ 1│=IF(TRUE,"")│=A1*1       │
└─┴──────┴──────┘
上記のような数式の場合、「B1」セルが「#VALUE!」になってしまう。

かといって、下記の様にした場合、「B1」セルは「#VALUE!」にならない(「0」になる)が
「A1」セルには「0」が表示されてしまう。
┌─┬──────┬──────┐
│  │     A      │     B      │
├─┼──────┼──────┤
│ 1│=IF(TRUE,0) │=A1*1       │
└─┴──────┴──────┘

以下だと、「A1」セルは空欄で「B1」セルも「#VALUE!」にならない(「0」になる)
┌─┬──────┬──────┐
│  │     A      │     B      │
├─┼──────┼──────┤
│ 1│            │=A1*1       │
└─┴──────┴──────┘
これをIF文の結果として実現するにはどうすればよいか?


まず、「A1」は空欄ではあるが空文字「""」ではなくBLANKという状態である。
これはISBLANK()関数で識別することができるのだが
数式が入った時点でBLANKという状態ではなくなるので、ISBLANK()はFALSEになる。
「=IF(TRUE,BLANK定数)」みたいな感じに(BLANK()なども)、
BLANK状態とする(BLANK状態を偽装する)方法はないようだ。
→IF文が入力されていているのに未入力という自己矛盾があるから無理か?


従って他の方法での対応となる。

【案1】あきらめて「0」を表示する(もしくは設定で非表示にする)
┌─┬──────┬──────────────────┐
│  │     A      │                 B                  │
├─┼──────┼──────────────────┤
│ 1│=IF(TRUE,0) │=A1*1                               │
└─┴──────┴──────────────────┘
Excel2010の場合、(リボンメニュー「ファイル」中の)「オプション」を起動し
その中の「詳細設定」を表示し、「次のシートで作業するときの表示設定」における
「■ゼロ値のセルにゼロを表示する」のチェックボックスをはずせば
「0」の表示を消すことができる…が、他への影響が大きそうだ。

【案2】参照側で地道にIF文で対処する
┌─┬──────┬──────────────────┐
│  │     A      │                 B                  │
├─┼──────┼──────────────────┤
│ 1│=IF(TRUE,"")│=IF(A1="",0,A1)*1                   │
├─┼──────┼──────────────────┤
│ 1│=IF(TRUE,"")│=IF(ISNUMBER(A1),A1,0)*1            │
├─┼──────┼──────────────────┤
│ 1│=IF(TRUE,"")│=IF(CELL("type",A1)="v",A1,0)*1     │
├─┼──────┼──────────────────┤
│ 1│=IF(TRUE,"")│=IF(ISERR(A1*1),0*1,A1*1)           │
└─┴──────┴──────────────────┘

【案3】参照側でSUM()を使う
┌─┬──────┬──────────────────┐
│  │     A      │                 B                  │
├─┼──────┼──────────────────┤
│ 1│=IF(TRUE,"")│=SUM(A1)*1                          │
└─┴──────┴──────────────────┘
  SUM()は文字列を無視してくれるという特性を利用する。
  これは使えそう?!
分類:Excel