[英]Range.find not working with excel VBA
我在excel VBA中使用range.find方法時遇到問題。
我有兩張床單。 表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代碼遍歷工作表A中的每個項目,並在工作表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也不返回任何內容。 任何幫助,將不勝感激。 謝謝!
這樣的事情會不會更快:
Function getRow(str As String, rng As Range) As Long
str = Left (str, 10)
getRow = Application.Match(str, rng, 0)
End Function
這將使行盡可能長,可用於設置范圍...
或者將單元格作為ref:
Function getCell(str As String, rng As Range) As Range
str = Left (str, 10)
Set getCell = rng(1).Offset(Application.Match(str, rng, 0) - 1)
End Function
假設您使用1列來查看(對於這兩種情況)
您需要將array(i)
值轉換為date - > CDate(arr(i))
。 新的Find行看起來像這樣:
Set rngRow = wsWrite.Range("A:B").Find(What:=CDate(arr(i)), LookIn:=xlFormulas)
沒有CDate(arr(i))
你找不到數據,你可以在excel中手動測試,只用像"Dec-00"
這樣的搜索excel找到的東西
檢查日期或字符串:
If IsDate(Arr(i)) Then
value_to_lookup = CDate(Arr(i))
Else
value_to_lookup = Arr(i)
End If
Set rngRow = Range("A:b").Find(What:=value_to_lookup, LookIn:=xlFormulas)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.