互換性:日付

このエントリーをはてなブックマークに追加  


入力規則の互換性をテストしたとき、日付がシリアル値で表示されていたようなので、Excelで日付を扱っているケースをテストしてみます。
【Excel 2003】


【Excel 2010】
2003と同じだから省略

セルに入力した日付が、そのまま使えないようでは、ちょっと「Excelのデータと互換性がある」はどうですかね。ビジネスの現場で使う表で、日付がないというのはレアケースでしょう。

【Excel 2003のxlsx形式をSpreadsheetで開いた】


【Excel 2010のxlsx形式をSpreadsheetで開いた】
2003と同じだから省略

これは、いろいろと問題がありますね。
まず、Excel側で「標準の表示形式」に設定していると、Spreadsheet側では「d/m/yy」の表示形式が設定されます。Excelの「標準の表示形式」とは、たとえば日付なら「*2001/3/14」みたく先頭に「*」が付いている表示形式です。Excelでセルに日付を入力すると、自動的にこの表示形式が設定されます。ちなみに「*」が付いているのは、Windowsの設定に従うという意味です。Windowsのコントロールパネルで日付の書式を変更すると、Excelでも変わります。

Spreadsheetで日付を入力するとどうなるのでしょう。









なるほど、Spreadsheetでは、日付の標準書式が「d/m/yyyy」なのですね。そのわりには、Excelの「yyyy/m/d」が「d/m/yy」と西暦年2桁表示に変換されましたけど。いずれにしても、これがSpreadsheetの仕様なのでしょう。ということは、自分で「yyyy/m/d」形式の書式を設定してやればいいのか。



あれ?・・・ない(^^; とことん、アメリカ仕様ですね。

さらに、DATEVALUE関数もエラーになってます。SpreadsheetにもDATEVALUE関数はあるんですよ。





DATEVALUE関数は、文字列形式の日付をシリアル値に変換する関数です。SpreadsheetのDATEVALUE関数は、上図のように「"2010/8/11"」みたいな文字列はシリアル値に変換してくれますが、「"2010年8月11日"」と日本語が含まれるとアウトみたいですね。DATEVALUE関数の使い方でも



となっていますね。


互換性のポイント


標準の表示形式が設定されている日付(シリアル値)は、すべて「d/m/yy」の表示形式になります。「○月×日」などの表示形式を設定していると、とりあえずそのまま表示されるし、その通りの表示形式が設定されているようだけど、Spreadsheetにはそんな表示形式が用意されていませんので、表示形式を変更することはできません。ただし、値(日付)が変われば、その表示形式通りに表示されます。

DATEVALUE関数で「○月×日」などの日本語を使っているとエラーになるので注意。

日付に関しては、もう少し調査した方がいいかもしれませんね。
【追記】
日付に対して、上記のような書式が適用されるのは、どうやらExcelで作成したブックだけのようです。Spreadsheetで新規作成したブックでは「yyyy/m/d」が日付の標準書式みたいです。ただ、それならそれで、また困ったもんですけど。


このエントリーをはてなブックマークに追加