2011-07-29 13 views
4
= "7/29/2011 12:58:00 PM" > NOW() 

この式がFALSEを返してもTRUEを返すようにしたいと思います。日付文字列をExcelの日付に変換して比較する方法

私は、日付と時刻に私の日時をばらばらにし、次のように一緒にそれらを追加することができます知っている:

= DateValue("7/29/2011") + TimeValue("12:58:00 PM") > NOW() 

しかし、これは私には洗練さそうです。私はシンプルな機能やアプローチが欲しいと思うし、それがそこにあることを確信しているが、私はそれを見つけることができない。

また、CDateという名前のVBA関数があり、文字列をdatetimeに型キャストでき、それが完璧であることがわかりました。しかし、ExcelのセルでVBA関数を呼び出す方法はわかりません。

+1

日付文字列は、そのようなセルに「ハードコード」されていますか?もしそうなら、なぜですか? –

+0

です。それらをタイプする別のフォーマットがありますか? –

+0

なぜ、フォーマットが日付に設定されているセル内に '7/29/2011 12:58:00 PM 'というセルがないのですか?そのような文字列をハードコーディングすると、かなり見えなくなり、柔軟性がなくなります。 –

答えて

4

私は答えにコメントから次のアップグレードだ:あなたがそうする(そして今、私はすべての考えることはできません)非常に特別な理由がない限り、

、日付(およびその他の値)本当にあなたのような文字列としてセル内に「ハードコード」されるべきではありません。そのような文字列をハードコーディングすると、目に見えない、柔軟性に欠けます。ユーザーには、TRUEまたはFALSEが表示され、これが何を意味するのかはわかりません。

私はちょうどあなたの日付を7/29/2011 12:58:00 PMとセルに入れています。 A1に設定し、セルの形式を日付形式に設定します。次に= A1 > NOW()と言うことができます。

@ jonscaと@Tiago Cardosoの回答とは対照的に、この回答はあなたの特定の質問には対処しませんが、もう一度、私には本当に悪い練習のように思われます。

5

カスタム機能でVBA呼び出しをラップすることができます:あなたは自分のシート内の数式のように使用することができます

Function ReturnDate(ByVal datestr As String) As Date 
    ReturnDate = CDate(datestr) 
End Function 

+0

式から直接CDateを呼び出す方法は考えられませんが、そのような方法が存在する可能性があります。 – jonsca

+0

誰かがより良い答えを出さないなら、私はこれを受け入れます。これは素晴らしい回避策ですが、これは回避策のようです。 –

+2

@Gidon VBA自体は長年の解決策ではありませんか? :) – jonsca

3

これを行う最も簡単な方法は、CDATEを使用して比較を返すVBA関数を作成することです。次に、Excelセルから関数を呼び出します。それは古く、「TRUE」であれば、それは今よりも新しい場合

VBA機能

Public Function compareDate(ByVal inputDate As String) As Boolean 
    compareDate = CDate(inputDate) > Now() 
End Function 

は、その後、あなたのスプレッドシートに、ちょうど

=compareDate("YOUR DATE") 

を行う機能は、(「FALSE」を返します)

+0

@ jonscaの答えを保存する化粧品 –

7

乗算一つの文字列との比較機能が動作します:

= 1*"7/29/2011 12:58:00 PM" > NOW() 

あなたの質問に対する答えは、@ Jean-Françoisのコメントと密接に関連しています。日付はExcelでテキストではなく日付で解釈されるのはなぜですか?

これを見つけたら、比較することができます。

文字列がテキストとして取得されているため、単純に1を掛けて比較関数を使用することができます。ただし、文字列形式が地域設定で有効な日付/時刻形式である場合にのみ適用されます。

+0

と同じです。これは素晴らしいです。あなたに+1を与えなければならない。しかし、最終的に日付を分離するつもりです。 –

+0

これは知っておいてよかった!私はそれを知らなかった。 – jonsca

+1

第3段落の真ん中に埋もれていない、この答えの主なポイント(* 1つを乗算して比較関数*を働かせてください)は正面と中央に置くべきです!これを自分自身に許してください。このハックは知っておくと良いです。 +1 –

関連する問題