• ベストアンサー

日付け関数について

日付関数において大小を比較したいのですが、以下のように記述しましたが 認識しません、記述例を教えて下さい、 セルA1に =today() と記載 A2に =DATE(2004,1,1) と記載、 VBAif関数にて、 =if range("A1").select >= range("A2").select then ・・・・・・・・・・と記載しています、

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1に既に回答が出ていますが、その他少し書いてみます。 本日を2002年10月21日とします。 A1に=today()を入れると、2002/10/21となり、A2に =DATE(2004,1,1)と入れると2004/4/1となります。 A1をコピーし、B1をポイントして「編集-形式を選択して貼り付け-値」をしてみると、B1は37550という、日付けシリアル値になります。A1の値(Range("a1").value略してRange("a1"))は37550なんです。 同じくA2の値をB2に値のみ複写すると37987です。 これを比較する(日付けの前後を考える)のですから、 IF Range("a1") >= Range("a2") then End Ifまたは IF Range("a1").Value >= Range("a2").Value then End If にすることになります。 ・Ifの前の=は不要です。 ・Ifは関数でなくステートメントです。勿論エクセルの  関数にIfはありますが、それとは別です。  ・Selectはメソッドですが、セルの値を問題にする時はValueプロパティで参照します。

hoshi7777
質問者

お礼

有り難うございました、正常に動作しました、

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

if range("A1").value >= range("A2").value then にしてみてください。

hoshi7777
質問者

お礼

有り難うございました、正常に動作しました、

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelのマクロで基準日から見た日付の前後を判定したい

    Excelのマクロについて質問です。 初歩的な内容かもしれませんが よろしくお願いします。 マクロで日付を扱おうとしたのですが うまくいきませんでした。 ある日付が基準日から見て前の日か後ろの日かを 判定しようとしたのです。 たとえば セルA1に入力した日付が 今日より先ならセルB1に「1」を 後なら「2」を表示しようとして If Range("A1") > "=TODAY()" Then Range("B1") = 1 Else Range("B1") = 2 End If このようにすると セルA1にどのような日付を入れても セルB1は「2」と表示されてしまうのです。 "=TODAY()" の部分に問題があるのでしょうね。 でも、確かこれで今日という日付を 表しているのではなかったでしょうか… 日付はどのように扱われているのでしょう。 回答をお待ちしております。

  • 日付の関数

    エクセルの資料で=TODAY()(今日日付が入るように設定してあるセルがあります。・・でその下のセルには今日の日付の月の末日が入るようにしたいのですが(例えば セルA1に2004年1月14日 セル2に2004年1月31日と表示させたい)どのような関数を使えばいいですか?宜しくお願いします。

  • 日付を含む関数について。

    エクセル2003での質問です。 ある列のセル(A1とします)のセルに日付が書き込まれた時だけ、対応する列のセル(B1とします)に決まった文字(ここでは"済")が入るようにしたいと思いIF関数を使って組み立てたのですが、日付の入れ方が解らず上手く行きません。 =IF(A1="日付","済","") ←B1に書き込んでます。 と式を立てていますが、この・日付・の部分の入れ方を教えて頂けないでしょうか? また、勉強の為他の考え方も有ればお教え下さい。 宜しく御願いします。

  • エクセル日付関数について

     日付関数の初歩的な質問です。  例えばtoday()で、セル書式が日付なら2009/1/4となります。セルの書式を標準にすればシリアル値がでます。そこでyear(today())とし書式が日付なら2009となると思ったのですが、結果は1905/7/1となりました。どういうことなのでしょうか。セル書式を標準にしたら2009となりました。  的はずれの質問かもしれませんが、なぜyear(today())とうつと1905/7/1となるのでしょうか。  

  • Excel VBA 日付の認識など

    こんにちは。 VBA初心者のものですが質問させていただきます。 ※エクセル2003です 「sheet1のD4:FA4のうち、09年8月以外の日付のセルすべてを選択する」 の構文を下記のように作ってみたのですがうまくいきません・・・ (1)「09年8月」の認識 (2)「~以外のセル全て選択」 の2点がネックで困っています。 ちなみに日付のセルには「2009/8/5」のように入力されており、 表示は「09/8/5」です。 すみませんがご教示お願いいたします。 Sub Macro1() Dim 日付 As Range For Each 日付 In Worksheets("sheet1").Range("D4:FA4") If 日付.Value like"*09/8/*"= false Then 日付.select End If Next End Sub

  • EXCEL: 日付を残す関数

    どなたか教えてください。 伝票明細に度々同じような編集を加えるので、自動的に編集した日付を履歴として残すようにしたいのです。 ↓ 明細行の一番左側(A5)に、プルダウンリスト(入力規則)から「入庫」または「出庫」を選ぶと、自動的にとなりのセルにその日の日付が入力されるようにする。 私が考えたのは、次のとおり。 (B5)にひとまずToday関数を入れる。→(C5)に次の関数を入れる。 C5=IF(OR(A5="入庫",A5="出庫"),B5,"") けど、これじゃ値ではなく数式をもってきちゃうので、別な日に開くと日付が更新されてしまうのです。 どうすればよいですか?よろしくお願いします。

  • VBA ある日付の指定

    やりたいこと 例:今日の日付が4/1ならA1セルに『A』という文字を入れる というIF文を書きたいのですができません。 この場合、2022/4/1という限定的な指定方法ではなく 4/1なら(2023年や2024年でも指定できる)という形で コードを書きたいのですができませんでした。 すいませんが回答よろしくお願い致します。 sub test() if date = 4/1 then  range("A1").value="A" end if end sub

  • エクセルVBA If Then 構文でOR条件の場合のVBA記述方法は?

    仮にセル("A1")が空白か Falseの場合は Then 以下のことをする。 と書きたいのですが If Sheets("Sheet1").Range("A1")="" Then ~略 If Sheets("Sheet1").Range("A1")=False Then ~略 と別々に記載する方法しかわかりません。 ワークシート関数のようにIF(OR(A1="",A1=False),~略)というようにまとめて記述するにはどう書けばいいのでしょうか? AND条件の場合も教えてください。よろしくお願いします。

  • 日付を元にカウンター~質問に追加です

    先ほど質問して、ベストアンサーまで選択してしまいました。が追加で質問させてください。  先ほどの質問  WinXp Excel2003 のVBAです。(初心者なので言葉足らずのときは申し訳ありません) 請求書の番号を日付が変更したら、”0”に戻す方法で悩んでいます。 モジュールで、パブリック宣言して Public Sub 初期設定() Dim 本日, 受付1, 受付2 As String, 採番 As Integer 本日 = Today() End Sub ここで行き詰ってしまいました。本日変数ひ日付を代入して、日付が変わったものと比較するのに、 どの段階で比較すればいいのか? パソコンのスイッチを切ってしまったら、変数はクリアになってしまってう・・・等々考えていくうちに わからなくなってしまいました。 多分単純なことなのだと思います。(いろいろネットで調べてみましたが、似たようなものがなかったので、どなたか、似たような参考でもけっこうですので、教えていただけないでしょうか? その回答が    Function 請求書番号取得(ByVal 本日 As Date) As Integer With Worksheets("Sheet1") If CDate(.Range("A1").Text) = 本日 Then '日付が変わっていない場合 .Range("B1").Text = CInt(.Range("B1").Text) + 1 '請求書番号を+1 Else '日付が変わった場合 .Range("A1") = 本日 '日付情報を更新 .Range("B1").Text = 1 '請求書番号をリセット End If 日付確認 = CInt(.Range("B1").Text) End With ActiveWorkbook.SaveAs End Function こんな感じでどうでしょう? Sheet1という名前のシートのA1セルに日付、B1セルに請求書番号を保存します。 そして、本日の日付がSheet1のA1セルと違っていた場合は、A1セルの日付を本日に書き換えてB1セルの請求書番号をリセットします。 このルーチンを使いたい場合は、 Dim Count As Integer '請求書番号 Count = 請求書番号取得(Date) で追加質問です。 日付確認 = CInt(.Range("B1").Text)とあるのですが、”B1”には請求番号がはいっているんですよね また日付確認は変数ですか? 変数宣言したとして、Dateでしょうか? Integer でいいのでしょうか? またFunction からのルーチンはモジュール内でいいでしょうか 基本的なことで申し訳ありませんが、よろしくお願い致します。

  • 日付の検索

    OFFICE2016 マクロでの日付検索でエラーになってしまいます。 状態は次の通り MASTERシートで AK4セル =TODAY() 書式 分類:日付 種類:*2012/3/14 B16セル =AK2&"/"&AK3 (AK2には2019、AK3には9の数値が入っている) 書式 分類:日付 種類:*2012/3/14 D17セル =DATEVALUE(B16) 書式 分類:日付 種類:*2012/3/14 E17セル =D17+1 書式 分類:日付 種類:*2012/3/14 F17セル =E17+1 同様に左のセルに+1した式となっている。AH17セルまで。 動作させたマクロ Sub Macro6() Sheets("MASTER").Visible = True Sheets("MASTER").Select Dim fkey As String Dim frange As Range fkey = Worksheets("MASTER").Range("AK4") Set frange = Range("D17:AH17").Find(What:=DateValue(fkey), LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows) If (frange Is Nothing) Then MsgBox "error" Else Cells(frange.Row, frange.Column).Select End If End Sub 上記マクロの修正をお願いしたく。 webで色々調べたのですが、修正内容が分かりません。