戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
WorksheetFunction.Match で一致する日付

    [189483] WorksheetFunction.Match で一致する日付-

    ■親トピック/記事引用/メール受信=ON■

    □投稿者/ LGK -(2019/06/10(09:57))
    □U R L/
      A1から右に、
      7/1 7/2 7/3 7/4 7/5 7/8 7/9 …と営業日が入力されています。
      これを、7/1 と入力されたら1、7/6 と入力されたら 5、
      つまり、入力された日付以上で1番小さい日付の位置を出したいのです。
      これは、セル上では、
      A2に日付を入力して、
      B2 =MATCH(A2,1:1)
      とすれば出せます。
      
      これをVBA でやりたいのですが。
          Dim StartDate As Date
          Dim StartMatch As Integer
      '
          StartDate = #7/1/2019#
          StartMatch = WorksheetFunction.Match(StartDate, [1:1])
      だと、実行時エラー1004になります。
          [A2] = #7/1/2019#
          StartMatch = WorksheetFunction.Match([A2], [1:1])
      の様に検索値をセルに入れれば、出せます。
      
      仕方がないので、ループで探すようにして解決しました。
      Match の検索値はセル上に無いとできないのでしょうか?
      なぜこうなるのか、どうすれば解決するのでしょうか。
      
      実際は、StartDate はInputBoxを使って取得します。
      A2に日付を入れたのは、実験の為で、実際はこの方法は無しでお願いします。
      実際に出したい数字は、
      7/5 の場合は6、つまり、存在しない場合次の営業日が欲しいのですが、
      IFでどうにでもなるので、どっちを出してもいいです。
      次の営業日が存在しない場合も、IFでどうにでもなるので考慮しなくていいです。
      (最終日又は最終日の後ろの空白セルの位置になるのが理想)
      Match でなくても構いません。ループを使わず出す方法があれば教えてください。
      
      今回、ループを使う方法で作ってしまったので、次回作るときの参考にしたいと考えています。
      
      Windows8.1 Excel2013


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



      ++++++++++++++++++++
      OS      ⇒OTHER
      Version⇒OTHER
      ++++++++++++++++++++




    [189485] Re[1]: WorksheetFunction.Match で一致する日付-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2019/06/10(10:15))
    □U R L/
      >つまり、入力された日付以上で1番小さい日付の位置を出したいのです。
      >これは、セル上では、
      >A2に日付を入力して、
      >B2 =MATCH(A2,1:1)
      >とすれば出せます。
      
      それだと、入力された日付以下で1番大きい日付の位置じゃないですか?
      
      とにかく、その関数でよければ
      
      StartMatch = WorksheetFunction.Match(CLng(startDate), [1:1])
                        ~~~↑~~~~~~~~~~~
                       日付なら、Long型に変えて検索する
      
      「実際は・・」と言う下りはよく読んでおりません m(__)m


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189489] Re[2]: WorksheetFunction.Match で一致する日付-

    記事引用/メール受信=OFF■

    □投稿者/ LGK -(2019/06/10(11:11))
    □U R L/
      ありがとうございます。
      Longにするだけでよかったのですが。
      
      >それだと、入力された日付以下で1番大きい日付の位置じゃないですか?
      確かにその通りです。
      実際ははこの場合6が欲しいのですが、Match だと5になるので5にしました。
      これは、日付が一致しない場合1を足せば済む話なので、どっちの数字を出してもいいです。
      
      今回、時刻はないのですが、時刻がある場合、Doubleにすればいいですか。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189491] Re[3]: WorksheetFunction.Match で一致する日付-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2019/06/10(11:39))
    □U R L/
      >今回、時刻はないのですが、時刻がある場合、Doubleにすればいいですか。
      
      そうなりますね。
      一般論として、Double型なら無難と言えます。
      
      ただ、時刻(=小数部分)が絡むと、検索値と被検索値群それぞれ、
      どんなデータなのか(または、なっているべきなのか)
      よく知っている(または、コントロールされている)必要があります。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189494] Re[4]: WorksheetFunction.Match で一致する日付-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ LGK -(2019/06/10(12:30))
    □U R L/

      ありがとうございます。
      時刻がある場合、ループで探して方が無難ということですか。




    [189495] Re[5]: WorksheetFunction.Match で一致する日付-

    記事引用/メール受信=OFF■

    □投稿者/ 半平太 -(2019/06/10(12:51))
    □U R L/
      >時刻がある場合、ループで探して方が無難ということですか。
      
      そういう意味じゃないです。m(__)m
      
      そちらから時刻付きの具体例を提示して頂いていないので、
      雰囲気だけ書いてしまいました。
      
      一般論として、小数とDate型は厄介なものなんです。
      
      小数演算誤差とDate型のバグが絡んで来ますし、
      セルの表示形式によっても勘違い(ミス判断)が入る余地があります。
      
      網羅的な説明をするのは大変なので、今回は
      
      1.日付が絡む場合
        Match関数の第一引数の型はDouble型にする。
      
      2.第一引数にセルを指定する場合、
        Range(X) の様に、Rangeオブジェクトのままにするか、
       プロパティを書くなら、Range(X).Value2 とする。
      
       惰性で、Range(X).Value としてはいけない。
      
      だけにさせてください。 m(__)m


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [189496] Re[6]: WorksheetFunction.Match で一致する日付-

    記事引用/メール受信=OFF■

    □投稿者/ LGK -(2019/06/10(12:58))
    □U R L/

      わざわざありがとうございます。
      今の所、時刻検索の予定はないけれど、気になったので聞いてみました。
      時刻検索が必要になった時、上手くいかなかったら改めて質問させていただきます。

      時刻誤差だけはどうにもなりませんね。



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G