これを空文字列("")にする方法について紹介します。
IF関数を使って変換する方法
まず問題となるケースについてみてみます。
次の画像ではTRIMRANGE関数を使い、B3:B10の範囲にあるデータから先頭及び末尾にある空白セル(B3,B9,B10)を除いています。
しかし途中にあるB6セルの空白セルがD5セルにおいて「0」に変換されてしまっています。一方でD4セルの「0」はB5セルの値が表示されているだけなので問題ありません。
このようにデータの内容によっては「空白セルによる0」であることが分かりにくくなったり、あるいはまったく区別がつかなくなる恐れがあります。
後で紹介するように数式に「&""」を加える方法もありますが、数値が文字列に変換されてしまうといった欠点があります。
そこで次の画像では、異なる方法で空白セルを空文字列("")に変換しています。
D3セル
=IF(ISBLANK(TRIMRANGE(B3:B10)),"",TRIMRANGE(B3:B10))
ISBLANK関数を使い、TRIMRANGE関数で抽出した各セルが空白セルかどうかを判定しています(上の画像のようにTRIMRANGE関数の結果をセルに表示させると0という数値になりますが、数式の段階では空白セルとしてISBLANKで判定できます)。そして空白セルならば空文字列("")に変換し、そうでなければTRIMRANGE関数で抽出した値をそのまま表示するという内容です。
ちょっと動作がイメージしにくい感じもしますが、TRIMRANGE関数で抽出された5つのセルを起点にして考えればわかりやすいかもしれません。
次の画像ではTRIMRANGE関数の代わりにトリム参照「.:.」を使用し、式を大幅に短縮しています。
D3セル
=IF(ISBLANK(B3.:.B10),"",B3.:.B10)
次の画像は、複数行複数列の表に対して実行した例です。
式の内容的には上記例と変わりませんが、意図通りの結果となっていることが確認できます。
H3セル
=IF(ISBLANK(TRIMRANGE(B3:F10)),"",TRIMRANGE(B3:F10))
「&""」を加える方法
TRIMRANGE関数の後ろに「&""」をつけることで、抽出された空白セルを空文字列にしてしまう方法です。
H3セル
=TRIMRANGE(B3:B10)&""
対象となるデータが文字列の場合はこれでまったく問題ありませんが、数値は文字列に変換されてしまうのが欠点です。そこから数値に戻すとなると結局は値を判定しなければならず、上記の例より面倒になります。