- 締切済み
Excelで、日付をIF文の中に入れたい
エクセルで、あるセルに日付が入っているものに0を返し、それ以外は、 また別のセルの値を返すと言うIF文を作りたいのですが、 日付で引っかかっています。 お分かりの方、教えて下さい。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
この質問の表現があいまい。 (1)あるセルの値が、ある特定の(決まった)日付であるか判定したい (2)あるセルのデータが、日付の意味であるとかどうかを判定したい。 ーー (2)は、日付のセルの値が日付シリアル値で、正整数でしかないので、日付たらしめているものは、表示形式でしかない と思う。 しかし表示形式を判別することは、関数の機能に含まれてない。 しかし例外があるので(LOTUSから来たCELL関数の"format")、それを使おうという回答が出る。 その内容は http://www.vitesse.cc/excel/cell.html 参照。 (1)は、多分質問にもならない事項と回答者は判断して、既回答は、(2)の方向になっているがそうなのだろうか。 日付のケースではないが、(1)のレベルの質問をする質問が時どきあるから思うので確認が必要と思う。 ーー それとVBAでもセルの値が日付になりうるかはIsDateで聞けても、日付で使われているかは、IsDateでは判らないのでは。 その個々のセルの表示形式はVBAで捉えられるが、表示形式の型は多数あり、日付の表示形式かどうか、判定するのは煩雑ではないでしょうか。 設定された表示形式が日付書式かどうかを一括して返してくれるプロパティなど無い様に思う。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
・数値が入ってて表示形式が日付になってると、cell("format",範 囲)で"D"で始まる文字列が返ってきます。 ・「日付ではない数値」に書き換えるには書式を「標準」や「数 値」に変更しないといけないので、次の再計算のタイミングで上記 の返り値がDで始まらなくなります。 ・日付を消したり文字列を入力しても上記は変化しませんが、今度 はisnumber(範囲)がFALSEを返すようになります。 以上を踏まえて、 =if(and(left(cell("format",範囲),1)="D",isnumber(範囲)),0,別のセル) てな感じになるんじゃないかと思います。 ってもういつもの面子が答えてますね。解説書いてる間に出遅れちゃったよ。
- mshr1962
- ベストアンサー率39% (7417/18945)
=IF(AND(COUNT(A1),LEFT(CELL("format",A1),1)="D"),0,B1) 上記でA1が数値で且つセルの書式設定が日付の場合に0を返します。 ※VBAを使ったユーザー定義関数を使うなら、ISDATE関数で一発ですが...
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 A列 に日付が入る可能性がある場合、 =IF(AND(ISNUMBER(A1),LEFT(CELL("format",A1),LEN(A1)>0)="D"),0,B1) ただし、日付は、シリアル値で、書式は日付型になっていなければなりません。 シリアル値のみ、たとえば、39388 という数字では、これは、日付とはみなしません。しかし、仮に、1でも、書式が日付型になっていれば、日付が表示されますから、それは、日付として解釈されます。
- mu2011
- ベストアンサー率38% (1910/4994)
例えば、次の様な事でしょうか。 A1が今年の日付ならば0、以外はB1セル内容を表示。 =IF(AND(A1>="2007/01/01"*1,A1<="2007/12/31"*1),0,B1)