我在Excel VBA中使用range.find方法遇到了问题。
我有两个工作表。 A工作表的格式如下(月份间隔不规则):
表格B有一个A列,其中日期以正常的季度间隔排列,如下所示。
我希望我的 VBA 代码可以遍历 Sheet A 中的每个项目并找到在 Sheet B 中相应的行号。
以下是我的代码片段:
我在下面这行代码遇到了一个错误。
我尝试了我能想到的所有方法,包括查阅微软文档和在这里进行搜索,但都没有找到解决办法。 即使我可以看到存储在strDate中的值是该工作表A2单元格中的一个值,rngRow也没有返回任何东西。 如有帮助,不胜感激。谢谢!
我有两个工作表。 A工作表的格式如下(月份间隔不规则):
Dec-1997
Dec-1999
Dec-2000
Dec-2001
Dec-2002
Dec-2003
Dec-2004
Dec-2005
Dec-2006
Mar-2007
Dec-2007
Dec-2008
Dec-2009
Dec-2010
Dec-2011(a)
Dec-2013
Dec-2014
表格B有一个A列,其中日期以正常的季度间隔排列,如下所示。
Jun-2011
Sep-2011
Dec-2011
Mar-2012
Jun-2012
Sep-2012
Dec-2012
Mar-2013
Jun-2013
Sep-2013
Dec-2013
Mar-2014
Jun-2014
Sep-2014
Dec-2014
我希望我的 VBA 代码可以遍历 Sheet A 中的每个项目并找到在 Sheet B 中相应的行号。
以下是我的代码片段:
Sub sSearch(arr As Variant, j As Integer, rngSearch As Range, ws As Worksheet)
Dim wsWrite As Worksheet
Set wsWrite = ThisWorkbook.Sheets(1) ' Sheet B
Dim rngResult As Range
Dim intRows As Integer
Dim rngRow As Range
Dim strDate As String
For i = 0 To UBound(arr)
Set rngResult = rngSearch.Find(arr(i), LookIn:=xlValues)
intRows = rngResult.End(xlDown).Row - rngResult.Row ' determine number of rows in Sheet A
For k = 1 To intRows '
strDate = Left(rngResult.Offset(k).Text, 9)
set rngRow = wsWrite.Range("A:A").Find(What:=strDate, LookIn:=xlValues)
wsWrite.Cells(intRow, i + j).Value = arr(i)
wsWrite.Cells(intRow, i + j).Value = _
ws.Cells( _
rngResult.End(xlDown).Row, _
rngResult.End(xlToRight).Column).Value
Next
Next
End Sub
我在下面这行代码遇到了一个错误。
set rngRow = wsWrite.Range("A:A").Find(What:=strDate, LookIn:=xlValues)
我尝试了我能想到的所有方法,包括查阅微软文档和在这里进行搜索,但都没有找到解决办法。 即使我可以看到存储在strDate中的值是该工作表A2单元格中的一个值,rngRow也没有返回任何东西。 如有帮助,不胜感激。谢谢!