はてなブログ大学文学部

読書日記と哲学がメインです(毎日更新)

スプレッドシート 実務用 メモ3

つづきを展開

 

nainaiteiyan.hatenablog.com

 

社員番号をVLOOKUPで拾い上げ、右に時給が出たとする、それは値か、文字列か?
 

基本的には、時給は「値」である

ただし、正確にはこう言うべきである。

VLOOKUPで右から返ってきたものは、元のセルに入っているデータ型を引き継ぐ
だから、

  • 元の時給欄が数値なら →
  • 元の時給欄が文字として入っているなら → 文字列

になる。

社員マスタがこうだとする。

社員番号 時給
1001 1200
1002 1350

このとき、

 
=VLOOKUP(A2, D:E, 2, FALSE)
 

で返ってくる時給は、ふつうは 数値 である。
なぜなら、時給は通常、計算対象だからである。

たとえば返ってきたあとに、

  • 残業時間と掛け算する
  • 月額を集計する
  • 平均時給を出す

といったことができるなら、それは値である可能性が高い。

ただし例外がある

見た目が 1200 でも、元データが

  • '1200
  • 1,200円 を文字として入力
  • 空白つきの "1200 "

のようになっていれば、VLOOKUPで返るのも文字列寄りになることがある。

つまり、「時給だから必ず値」ではなく、普通は値として管理すべきもの」という理解がよい。

実務上の答え

  • 社員番号 → 文字列で管理しやすい
  • 時給 → 値で管理すべき

この組み合わせが自然である。

見分け方

返ってきた時給が値かどうかは、たとえば次で確認しやすい。

 
=B2*2
 

これで普通に計算できれば、値である可能性が高い。
逆にうまく計算できなかったり、関数で不自然な挙動をするなら文字列の可能性がある。

GoogleスプレッドシートやExcelなら、ISNUMBER でも確認できる。

 
=ISNUMBER(B2)
 
  • TRUE → 値
  • FALSE → 数値ではない

ひとことで言うと

VLOOKUPが時給を返したから値になるのではなく、元の時給データが数値なら値として返る
そして、実務では時給は基本的に値として扱う。