goo blog サービス終了のお知らせ 

平日は葵タワーにいます。

静岡駅前葵タワーで働くIT社員が徒然なるままに・・・

Excel Tips(長さ0の文字列)

2011年06月07日 | グロデ社員の徒然日記

こんばんは、けんじろうです。

Excelの「長さ 0 の文字列」ってご存知ですか?

先日、仕事中にこいつに出くわしました。
調べてみて「そうなんだ~」と思ったので書いてみます。


その日は、仕事中にExcelで次の様なことをしました。

・ExcelのA列にはデータが入っているセルと入っていないセルがある。
・A列にデータが入っているときは、B列に「○」と記入する。
・A列にデータが入っていないときは、B列には何も記入しない。
(仕事中にやってたことは、もう少し複雑なことでした。)

Excelのデータが数千行あったので、B1セルに「=IF( LEN(A1) > 0 , "○", "" )」と入力し
A列のデータが入っている行までコピーしました。

その後、B列をコピーし、C列に「形式を選択して貼り付け」 > 「値」で貼り付けました。

その結果、パッと見では意図とした結果になったのですが
よく確認してみると、なんか変でした。
B1セルにカーソルを置いて、Ctrl + ↓キーを押してみると、
空欄セルの1つ手前の「○」が入っているセルまでジャンプするかと思ったら
A列のデータが入っているデータの終端の行まで一気にジャンプしました。

つまり、空欄に見えるセルも、Excelにはデータが入っているように認識されているようでした。

google先生に聞いてみたら、空欄セルの値が「長さ 0 の文字列」というのが原因らしいです。

直し方としては、2つの方法があるそうです。

1.「長さ 0 の文字列」が入力されている範囲を選択して、
置換前の文字列「」(空っぽ)、
置換後の文字列を任意の文字列(例えば、置換用削除見たいな)
で一括置換をする。
空欄が任意の文字列になったら、今度はその逆、
置換前の文字列を任意の文字列(一回目の置換で置換後の文字列に指定した文字列)
置換後の文字列「」(空っぽ)、
で一括置換をする。

2.「長さ 0 の文字列」が入力されている範囲を選択して、
メニューの「データ」>「区切り位置」をクリックする。
ダイアログが表示されるため、何もしないで、「完了」をクリック。
(なぜこれで直るんですかね?バッドノウハウ?)

(参考 http://kaiketsu.athome.jp/qa6310133.html)


どうしてこうなるかと言うと、少し専門的になってしまいますが
Excel VBA ではNullと「長さ 0 の文字列」を区別します。
そのため、Excelでも同様に、Nullと「長さ 0 の文字列」は別物になります。
未入力セルの値 = Null
なのですが、上記の例では、「=IF( LEN(A1) > 0 , "○", "" )」と言う関数を使ったので
A列に値が無い場合はB列に明示的に「長さ 0 の文字列」を入れたことになっていた訳です。

未入力セルか、「長さ 0 の文字列」が入っているセルかを見分けるには、ISBLANK関数を使うとのことです。
例えば、「=ISBLANK(B1)」とすれば、B1が未入力セルなら「TRUE」が
「長さ 0 の文字列」が入っていれば、「FALSE」となります。

そもそもA列に値がなかった時には「長さ 0 の文字列」を入れるのではなく
未入力セルとする(Nullを入れる)と言う風にIF関数を書けば、問題なさそうなのですが
Excelでどうすれば、未入力セルにできるのかが結局わかりませんでした・・・。

出来ないんでしょうか?
ご存知の方いらしたら、教えてください。

最新の画像もっと見る