みなさん,こんにちは。
シンノユウキ(shinno1993)です。
Excelでは,セルの値と表示されている値は,区別されます。VBAでは,RangeオブジェクトのValueプロパティとTextプロパティでそれぞれ取得できるものです。
セルの値と表示されている値が異なる場合は,Excelの「セルの書式」が設定されている場合が多いです。基本的には,セルの値と表示されている値が異なっていても,問題にならないことが多いですが,VBA等を使用する場合,前述のようにValueとTextで取得できる値が異なってくるため,注意が必要になります。また,データとしての整合性を考える場合,書式設定がされているセルとされていないセルとを混在させるのは望ましくありません。
そこで今回は,セルの書式設定がなされているセルを検出する方法を紹介したいと思います。VBA等を使用せず,基本的な関数のみを用いますので,難易度はそれほど高くないのではと思います。
それではやってみましょう!
書式設定がされているセルを検出する方法
CELL関数を使用する
書式が設定されているセルを検出するために,Cell関数を使用します。参照先のセルに関する情報を取得できる関数です。たとえば,セルのアドレスや,列番号、セルがロックされているかどうかも取得できます。もちろん,今回取り上げているセルの書式設定も取得できます。
セルの書式設定を取得するための,Cell関数の使い方は下記です:
たとえば,セルA1の書式設定を取得する場合には,下記のように使用します:
なお,"format"
の部分を変更することで,前述したような,他の情報を取得することもできます。
CELL関数の戻り値
CELL関数の戻り値は,それぞれの書式設定に対応した特定の表示形式コードとして返されます。下記に一例を示します:
上記のように,セルに設定されている表示形式がそのまま取得できるわけではありません。この点には注意が必要です。
「標準」以外を抽出できるように
CELL関数では,セルに設定されている書式設定に関する情報を抽出できます。これを使用して,「標準」以外が設定されているセルを目立たせるようにしてみましょう。
たとえば数式を下記のようにすることで,標準以外が設定されている場合に「TRUE」が表示されるようになります:
この数式の結果を別のシート上に表示することで,「標準」以外のセルを検索等により検索できるようになります。この手順は少し面倒ですが,VBA等を使用せずに済むので,利便性は高いのではないでしょうか。
セルに表示されている値を取得するためには?
書式が設定されているセルを識別したい方にとっては,セルに表示されている値を取得したい場面もあるでしょう。この方法については,別記事にまとめてみました。下記の記事を参考にしてみてください。
まとめ
今回は,VBAを使用せず,書式が設定されているセルを検出する方法を紹介しました。CELL関数をうまく使用することで,書式が設定されているセルを見つけることができます。