Vba 如果搜索值不存在,则使用嵌套查找选择范围中的下一条记录
我有一系列从2000年到2020年的每日日期和股票收盘价。这些历史数据很容易从公共互联网站点下载。下面的子例程查找每个月的第n天,并将行值复制到工作表其他位置的列表中。问题是,在240个月中,对于任何给定的第n天,子程序只返回170个月,因为无论选择哪一天,例如,一个月的第9天,有许多月份的这一天不是交易日。宏适用于选定的第n天,但如果第n天未交易,我希望能够选择并复制下一行。例如,2000年9月9日是星期六,市场关闭,所以我想捕捉第11个星期一。我不知道如何嵌套循环以捕获第二天Vba 如果搜索值不存在,则使用嵌套查找选择范围中的下一条记录,vba,loops,nested,find,Vba,Loops,Nested,Find,我有一系列从2000年到2020年的每日日期和股票收盘价。这些历史数据很容易从公共互联网站点下载。下面的子例程查找每个月的第n天,并将行值复制到工作表其他位置的列表中。问题是,在240个月中,对于任何给定的第n天,子程序只返回170个月,因为无论选择哪一天,例如,一个月的第9天,有许多月份的这一天不是交易日。宏适用于选定的第n天,但如果第n天未交易,我希望能够选择并复制下一行。例如,2000年9月9日是星期六,市场关闭,所以我想捕捉第11个星期一。我不知道如何嵌套循环以捕获第二天 Public
Public Sub FindDte()
Application.ScreenUpdating = False
Dim num As Integer
num = 9
With Range("A1:D" & ActiveSheet.UsedRange.Rows.Count)
Dim c As Range
Set c = .Find(What:=num, LookIn:=xlValues)
If Not c Is Nothing Then
Dim NextRow As Long
NextRow = Application.WorksheetFunction.CountA(Sheets("Sheet1").Range("F:F")) + 1
Dim firstAddress As String
firstAddress = c.Address
Dim record() As Variant
Do
record = Range("A" & c.Row, "D" & c.Row).Value
Range("F" & NextRow, "I" & NextRow).Value = record
NextRow = NextRow + 1
Set c = .FindNext(c)
Loop While Not c Is Nothing And Not c.Address = firstAddress
End If
End With
Application.ScreenUpdating = True
End Sub
列表在A到D列中,我将日期分为monthdate、daydate和yeardate,以便于搜索。列表正在转储到数组中。我发现上面的代码不能按需要工作。它选择了第n天,但它应该为每个月选择第n条记录。所以我想找到一种方法,将变量num设置为每个月的第n个记录。