Excel VBA質問箱 IV

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

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


12970 / 13644 ツリー ←次へ | 前へ→

【7459】日付の検索をしたいんですが。 haru 03/9/5(金) 13:30 質問
【7461】Re:日付の検索をしたいんですが。 Jカーター 03/9/5(金) 13:45 回答
【7464】Re:日付の検索をしたいんですが。 haru 03/9/5(金) 14:26 質問
【7466】Re:日付の検索をしたいんですが。 Jカーター 03/9/5(金) 14:45 回答
【7468】Re:日付の検索をしたいんですが。 haru 03/9/5(金) 15:00 質問
【7471】Re:日付の検索をしたいんですが。 Jカーター 03/9/5(金) 15:12 回答
【7475】Re:日付の検索をしたいんですが。 Jaka 03/9/5(金) 15:51 回答
【7522】Re:日付の検索をしたいんですが。 haru 03/9/7(日) 9:39 質問
【7540】Re:日付の検索をしたいんですが。 Jaka 03/9/8(月) 14:29 回答
【7568】Re:日付の検索をしたいんですが。 Jaka 03/9/8(月) 17:41 発言
【7608】Re:日付の検索をしたいんですが。 haru 03/9/9(火) 17:07 お礼
【7699】間違ってました。 Jaka 03/9/12(金) 9:20 発言

【7459】日付の検索をしたいんですが。
質問  haru  - 03/9/5(金) 13:30 -

引用なし
パスワード
    以下のようにして、日付を入力して、1列目に該当する日がある
か検索しています。
 見た目上は、確かにあるんですが、ヒットしません。
 どう指定すれば良いんでしょうか?
 よろしくお願いします。

  ib$ = InputBox("コピーしたい日付を入力して下さい。", "日付", Cells(rr, 1).Text)
  If ib$ = "" Then Exit Sub
  Set fnd = Sheets(1).Columns(1).Find(ib$, LookIn:=xlValues)
  If fnd Is Nothing Then

【7461】Re:日付の検索をしたいんですが。
回答  Jカーター  - 03/9/5(金) 13:45 -

引用なし
パスワード
   ▼haru さん:
こんにちは。
日付の検索にはMatch関数がおすすめです。
(日付をDouble型に変換にするのがポイントです。)

【7464】Re:日付の検索をしたいんですが。
質問  haru  - 03/9/5(金) 14:26 -

引用なし
パスワード
   ▼Jカーター さん:
 こんにちは。

>日付の検索にはMatch関数がおすすめです。
 検査範囲が飛び飛びで、固まっていなくても、大丈夫ですか?

>(日付をDouble型に変換にするのがポイントです。)
 CDbl(expression)
 というのを見つけました。
 expressionに、ib$を入れたんですが、うまくいきません。
 よろしくお願いします。
 (的外れな質問だったら、すみません。)

【7466】Re:日付の検索をしたいんですが。
回答  Jカーター  - 03/9/5(金) 14:45 -

引用なし
パスワード
   こんにちは。
>検査範囲が飛び飛びで、固まっていなくても、大丈夫ですか?
最初に提示されたコードを参考に一列目を対象としてます。
(変数名イマイチですいません)
****************************************************************
Sub test()
  Dim D As Double
  Dim I As String
  Dim L As Long
  
  I = InputBox("日付")
  If I = "" Then Exit Sub
  D = DateValue(I)
  
  On Error Resume Next
  L = WorksheetFunction.Match(D, Sheets(1).Columns(1), 0)
  On Error GoTo 0
  If L > 0 Then
    MsgBox Sheets(1).Cells(L, 1).Address
  End If
End Sub
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
とりあえずヒットしたセルアドレスが表示されます。
日付以外を入力した場合のエラーは考慮してません。

はずしていたらすいません。

【7468】Re:日付の検索をしたいんですが。
質問  haru  - 03/9/5(金) 15:00 -

引用なし
パスワード
   ▼Jカーター さん:
 こんにちは。ありがとうございます。

>>検査範囲が飛び飛びで、固まっていなくても、大丈夫ですか?
 よく読むと、訳の分からないことを書いていてすみません。
 検査範囲=1列目のデータがが飛び飛びで、3行おきに日付が入っています。

>  I = InputBox("日付")
 これを、
   I = InputBox("日付", , Cells(47, 1).Text)
 に変更して、実行しました。
 ここには、日付が入っています。
 この日付で検索したんですが、

>    MsgBox Sheets(1).Cells(L, 1).Address
 で、セルアドレスが表示されません。

 よろしくお願いします。

【7471】Re:日付の検索をしたいんですが。
回答  Jカーター  - 03/9/5(金) 15:12 -

引用なし
パスワード
   こんにちは。
Cells(47, 1).Text
は実際はどんな値なのですか?
シリアル値ならいけそうですが
書式によってはDateValueで引っかかりそうな気もします。

Dを取得したあとで
MsgBox Format(D,"yyyy/m/d")
とかして
日付が正しいか調べてみてもいいかもしれません。

【7475】Re:日付の検索をしたいんですが。
回答  Jaka  - 03/9/5(金) 15:51 -

引用なし
パスワード
   こんにちは。
横から失礼します。

Sub appmath()
  ib$ = InputBox("コピーしたい日付を入力して下さい。", "日付", Cells(1, 1).Text)
  If ib$ = "" Then Exit Sub
  sss = Application.Match(CDbl(CDate(ib$)), Columns(1), 0)
  If IsError(sss) = True Then Exit Sub
  Cells(sss, 1).Select
End Sub

【7522】Re:日付の検索をしたいんですが。
質問  haru  - 03/9/7(日) 9:39 -

引用なし
パスワード
   ▼Jaka さん、Jカーターさん
 こんにちは。

 ありがとうございます。うまくいきました。

 ところで、
 1列目(A列)に、以下のようにデータが入っています。

−ここから−
No
(空セル)
日付
(空セル)
(空セル)
(空セル)
−ここまで−

 以上で1データです。

 これが、繰り返されるのですが、
 Noと日付を入力して、該当するデータがあるかチェックしたいのですが、
 A列には、同一No、日付ともにあり、うまくいきません。

 具体的には、空セルを省力して書くと、

a
9/1
b
9/1
c
9/1
a
9/2
b
9/2
a
9/3
c
9/3

 という感じです。
 No、日付ともに昇順とは限りません。
 1セルずつ見ていけばできるんですが、matchとかfindを組み合わせて、
できないでしょうか。
 特にmatchは同じデータが複数ある場合の検索がわかりません。
 よろしくお願いします。

【7540】Re:日付の検索をしたいんですが。
回答  Jaka  - 03/9/8(月) 14:29 -

引用なし
パスワード
   こんな感じでしょうか?

Sub Macth日付()
  ib$ = InputBox("コピーしたい日付を入力して下さい。", "日付", Cells(1, 1).Text)
  If ib$ = "" Then Exit Sub
  ro = 1
  Do
    sss = Application.Match(CDbl(CDate(ib$)), Range("A" & ro & ":A65536"), 0)
    If IsError(sss) = True Then Exit Do
    sss = sss + ro - 1
    Cells(sss, 1).Select
    ii = ii + 1
    Cells(ii, 1).Interior.ColorIndex = 3
    ro = sss + 1
  Loop
End Sub

Sub Find日付()
  Dim 値 As Variant, FCel As Range, FistAd As String
  日付 = InputBox("検索したい日付の入ったセルを黄色くします。" & Chr(13) & _
         "文字を入力して下さい。", "日付の検索")
  If 日付 = "" Then
    End
  End If
  日付H = DateValue(日付)
  If Err <> 0 Then
    MsgBox "日付エラー"
    End
  End If
  検索範囲 = "A1:A65536"
  Application.ScreenUpdating = False
  With ActiveSheet.Range(検索範囲)
     Set FCel = .Find(日付H, LookAt:=xlWhole)
     If Not FCel Is Nothing Then
      FistAd = FCel.Address
      Do
        FCel.Interior.ColorIndex = 6
        FCel.Select
        Set FCel = .FindNext(FCel)
      Loop Until FistAd = FCel.Address
     Else
      MsgBox "「" & 日付H & "」の入ったセルは、全くありません。", vbCritical
     End If
  End With
  Application.ScreenUpdating = True
  Set FCel = Nothing
End Sub

【7568】Re:日付の検索をしたいんですが。
発言  Jaka  - 03/9/8(月) 17:41 -

引用なし
パスワード
   忘れてた。

Set FCel = .Find(日付H, LookAt:=xlWhole)

に after・・・range("A65536")
といれた方が良いです。
もう帰りますので、書き方はヘルプで調べてください。

【7608】Re:日付の検索をしたいんですが。
お礼  haru  - 03/9/9(火) 17:07 -

引用なし
パスワード
   ▼Jaka さん:
 ありがとうございます。返事が遅れて、すみません。
 教えていただいたコードを元に、アレンジしてうまくいきました。

【7699】間違ってました。
発言  Jaka  - 03/9/12(金) 9:20 -

引用なし
パスワード
   4日送れて訂正。4日前に気付いていたんだけど、休暇取っちゃったから....。
違う方貼りつけてました。
すみませんでした。

  Do
    sss = Application.Match(CDbl(CDate(ib$)), Range("A" & ro & ":A65536"), 0)
    If IsError(sss) = True Then Exit Do
    sss = sss + ro - 1
    Cells(sss, 1).Select
    ii = ii + 1
    Cells(ii, 1).Interior.ColorIndex = 3
    ro = sss + 1
  Loop

  ↓

  Do
    sss = Application.Match(CDbl(CDate(ib$)), Range("A" & ro & ":A65536"), 0)
    If IsError(sss) = True Then Exit Do
    sss = sss + ro - 1
    Cells(sss, 1).Interior.ColorIndex = 3
    ro = sss + 1
  Loop

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