この質問はの観察に基づいているAdamVで彼の答えに私はExcelのセルに曜日名を取得するにはどうすればよいですか?
A1の値が2009-08-01の場合、次のようになります。
=WEEKDAY(A1)
取得します 7
=TEXT(7, "dddd")
取得します Saturday
=TEXT(7,"dddd, yyyy-mm-dd")
取得します Saturday, 1900-01-07
=TEXT(1,"dddd, yyyy-mm-dd")
取得します Sunday, 1900-01-01
=TEXT("1900-01-01","dddd, yyyy-mm-dd")
また取得します Sunday, 1900-01-01
最後の2つは間違っています。1900年1月1日は実際には月曜日です。
さまざまな情報源が次のことを確認しているようです。
何が足りないのですか?Excelがこれを間違っているのはなぜですか?
Microsoft KB 214058で説明されているように:
1900年3月1日より前の曜日がExcelで正しくない
詳しくは
Microsoft Excelの日付システムが最初に作成されたとき、他のスプレッドシートプログラムで使用されている日付システムと完全に互換性があるように設計されていました。
ただし、この日付システムでは、1900年はうるう年として誤って解釈されます。1900年には2月29日(「うるう日」)がないため、1900年3月1日(「うるう日」の翌日)より前の日付の曜日は正しく計算されません。
「その他のスプレッドシートプログラム」は、当時非常に人気があったLotus 1-2-3を指し、1900年がうるう年であると誤って想定していました。これについては、KB214326でさらに詳しく説明されています。
Excel 2000は、1900年がうるう年であると誤って想定しています。
詳しくは
Lotus 1-2-3が最初にリリースされたとき、プログラムは1900年がうるう年であると想定していましたが、実際にはうるう年ではありませんでした。これにより、プログラムがうるう年を処理しやすくなり、Lotus1-2-3のほとんどすべての日付計算に害を及ぼすことはありませんでした。
MicrosoftMultiplanとMicrosoftExcelがリリースされたとき、彼らは1900年がうるう年であると想定していました。この仮定により、MicrosoftMultiplanとMicrosoftExcelは、Lotus 1-2-3で使用されているものと同じシリアル日付システムを使用し、Lotus1-2-3との互換性を高めることができました。1900年をうるう年として扱うことで、ユーザーはワークシートをあるプログラムから別のプログラムに簡単に移動できるようになりました。
この動作を修正して、現在のバージョンのMicrosoft Excelが1900年がうるう年であると想定しないようにすることは技術的には可能ですが、そうすることの欠点は利点を上回ります。
この動作を修正すると、次のような多くの問題が発生します。
- 現在のMicrosoftExcelワークシートおよびその他のドキュメントのほぼすべての日付が1日短縮されます。このシフトを修正するには、特に日付を使用する数式では、かなりの時間と労力がかかります。
- WEEKDAY関数などの一部の関数は、異なる値を返します。これにより、ワークシートの数式が正しく機能しない可能性があります。
- この動作を修正すると、MicrosoftExcelと日付を使用する他のプログラムとの間のシリアル日付の互換性が失われます。
動作が修正されないままの場合、発生する問題は1つだけです。
- WEEKDAY関数は、1900年3月1日より前の日付に対して誤った値を返します。ほとんどのユーザーは1900年3月1日より前の日付を使用しないため、この問題はまれです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加