Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7121 / 13646 ツリー ←次へ | 前へ→

【41074】セルの検索について peta 06/7/28(金) 16:47 質問[未読]
【41075】Re:セルの検索について Jaka 06/7/28(金) 16:54 発言[未読]
【41100】Re:セルの検索について Kein 06/7/29(土) 15:48 回答[未読]

【41074】セルの検索について
質問  peta  - 06/7/28(金) 16:47 -

引用なし
パスワード
   ある列のセルの値を検索して、それが何行目以降にあるかをInteger型の変数に取得したいと思っています。
検索値はSheet2のB1セルに入っており日付型の値です。
検索したいデータがあるのはSheet1のD列で、日付の小さいもの順にソートされています。
検索値が何行目から開始しているのかを知りたいのです。
D列には何行目までデータがあるかわかりません。(その時々によって変化するデータです。)
Findを使用してみようと思ったのですが、それでは何行目にあるかだけを取得する事ができませんでした。
その行数を変数に取得し、別の処理でそれを活かしたいのです。
どうすればできるのでしょうか?
例えばB1に「2006/07/28」というデータがあり、D列の55行目以降が「2006/07/28」以降のデータである場合、aに55という値を取得したいです。
下記はFindを使い変数aにアドレスを取得したものですが、参考までに載せてみました。

Dim a As String
Dim myRng As Range
  Set myRng = .Cells.Find(what:=Worksheets("Sheet2").Range("B1").Value, _
           LookIn:=xlValues, lookat:=xlWhole)
  If Not myRng Is Nothing Then
    a = myRng.Address
  end if

よろしくお願い致します。

【41075】Re:セルの検索について
発言  Jaka  - 06/7/28(金) 16:54 -

引用なし
パスワード
   こう言うので良いんじゃないですか?
関数の日付も拾えるし...。

mm = Application.Match(Range("B1").Value2, Columns("D"), 0)
If Not IsError(mm) Then
  MsgBox mm
End If

【41100】Re:セルの検索について
回答  Kein  - 06/7/29(土) 15:48 -

引用なし
パスワード
   Sub 行検索()
  Dim MyD As Long
  Dim CkR As Variant

  With Sheets("Sheet2").Range("B1")
   If Not IsDate(.Value) Then
     MsgBox "日付を yyyy/m/d 型で入力して下さい", 48
     .Clear: Exit Sub
   End If
   MyD = CLng(.Value)
  End With
  CkR = Application.Match(MyD, Sheets("Sheet1").Range("D:D"), 0)
  If IsError(CkR) Then
   MsgBox "該当する日付が見つかりません", 48
  Else
   MsgBox CkR & " 行にあります", 64
  End If
End Sub

てな感じで。

7121 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free