(Excel)TRIMRANGE関数で空白セルが0にならないようにする

 ExcelでTRIMRANGE関数(あるいはトリム参照)で抽出した範囲の途中に空白セルがあると、空白ではなく「0」と表示されてしまいます。
 これを空文字列("")にする方法について紹介します。

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)&""

 対象となるデータが文字列の場合はこれでまったく問題ありませんが、数値は文字列に変換されてしまうのが欠点です。そこから数値に戻すとなると結局は値を判定しなければならず、上記の例より面倒になります。