Powered By Blogger

暇がない。自力じゃ無理な人はこちらへ。

2015年5月24日日曜日

Excel Onlineとデータ入力規則と日付表示形式

エクセルで作ったファイルをexcelOnlineで開いたら・・・うまく動かない。
どうも日付を比較する数式のところの動作がおかしい。
表示形式が違うので見た目には確かに違うが、内部的には同じなので、エクセルではちゃんと意図した動作をしている。しかし、Onlineでは意図したようには動いていない。

起こった現象:



青枠のセルに赤枠のリストから選択できるように、入力規則を設定する。そして、これらのセルには表示形式として上にあるようなユーザ定義の表示形式を設定する。
そして、青枠と緑枠のセルを比較して結果を表示する。
というような処理だ。
いくつかのパターンで実験してみたが、エクセルでは、すべて、上のように見た目は違うが青と緑は同じと判定された。

このファイルをOneDriveに保存してExcelOnlineで開くと、














上の図は開いた直後だ。一見、問題なさそうに見える。
数式バーにも表示されている形式ではなく、"2015/6/1"と表示されている。
ちなみに他のパターンの青枠もすべて"2015/6/1"だ。

ところが、ドロップダウンリストから改めて、今と同じ6月1日を選択し直すと、












判定はNGとなり、数式バーの表示も"平成27年06月01日(月)"と見た目と同じになってしまった。

面白いのは、さらに3番のパターン以外も試してみたところ、













と、問題ない場合もあることが分かった。
数式バーも"2015/6/1"と変わっていない。
なお、4番の青枠には"2015/6/1"と直接入力した。

以上の現象から問題点を確認すると、
ドロップダウンリストから選択したときに、エクセルでは日付シリアル値としてセルに入力されるがOnlineでは文字列となる場合がある。
というところだ。

原因推測:

ExcelOnlineでは入力規則で範囲をリストにしたときに、表示形式を適用した文字列データになって、元のデータが失われているのではないか?

確認:

表示形式を数値にして確認。まずはエクセルから。














ドロップダウンリストの表示は赤枠内の表示と同様に表示形式適用後のデータが表示されるが、実際に選択してセルに入力されると、青枠内の表示形式に従って、日付シリアル値がそのまま表示された。
1~3すべて同じだ。
確かにエクセルでは、元データはちゃんと保持されている。

一方Onlineでは、













ドロップダウンリストの表示はエクセルと同じだが、選択後のセルには日付シリアル値ではなく、リスト表示と同じ文字が入力されてしまった。
確かに、元データは失われているように見える。
しかし、3番のパターンではこのようになったが、1,2はまたちょっと違った。













こんな風に、ドロップダウンリストの表示とは関係なく、ちゃんと日付シリアル値が入力される。
これは、どう考えればいいのか?元データが残る場合もあるのか?
最初はまったく訳が分からなかったが、どうもエクセル(Onlineでも)の自動解釈で文字列が日付と判断されているようだ。
しかし、1番の”平成27年06月01日”なら解るが、2番の”6月1日”とか日付シリアル値に変換できないだろ。年が解らない。
と思ったが、一応、実際に入力して確認してみたところ・・・

これはエンターキーを押す前。





エンターキーを押すと、こうなる。




という具合に、(おそらく今年が)自動的に補完されるとは思わなかった。
次に一応、曜日が入るとやっぱりだめなのか、を確認。

エンターキーを押す前。






エンターキーを押すと・・・
やっぱりダメか。





結論:
1.入力規則のドロップダウンリストにリスト化されるのは、
    エクセル→元データと表示形式適用後のデータ両方
    Online  →表示形式を適用後のテキストデータのみ

2.年の情報はなくてもエクセルは補完してくれる。

今回の調査の発端になった現象を回避するには、
ドロップダウンリストには、エクセルが日付と解釈可能な表示形式を使う。
ということだな。

最後にいうのもなんだが、
実はExcelOnlineにはドロップダウンリスト(データの入力規則)もユーザ定義表示形式もない。
ただし、エクセルで作成したファイルを開いた場合には、ちゃんと機能した状態が再現されている。

というわけで、まあこんな現象もしょうがないのか。
以上。

0 件のコメント:

コメントを投稿