如何在excel中的一个特定行中搜索字符串?我在long类型变量中有行索引。
Dim rowIndex As Long
rowIndex = // some value being set here using some code.
现在我需要检查行中是否存在特定值,索引是否为rowIndex。
如果匹配,我需要获取第一个匹配单元格的索引列。
我尝试过使用Match功能,但我不知道如何传递rowIndex变量来代替单元格区域。
Dim colIndex As Long
colIndex = Application.Match(colName, Range("B <my rowIndex here>: Z <my rowIndex here>"), 0)
答案 0 :(得分:12)
试试这个:
Sub GetColumns()
Dim lnRow As Long, lnCol As Long
lnRow = 3 'For testing
lnCol = Sheet1.Cells(lnRow, 1).EntireRow.Find(What:="sds", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
End Sub
可能最好不要将colIndex和rowIndex用作变量名,因为它们已经在Excel对象库中提到过。
答案 1 :(得分:0)
使用worksheet.find(工作表是您的工作表)并使用行范围作为其范围对象。 你可以得到rangeobject,例如:worksheet.rows(rowIndex)作为例子
然后找到它应该找到的所需参数。 如果我没记错,find会默认返回第一个匹配项。 我手头没有Excel,所以你必须自己查找,抱歉
我建议不要使用for-loop它更脆弱,并且比查找慢。
答案 2 :(得分:0)
没关系,我找到了答案。
这样就可以了。
Dim colIndex As Long
colIndex = Application.Match(colName, Range(Cells(rowIndex, 1), Cells(rowIndex, 100)), 0)
答案 3 :(得分:0)
这不是另一个代码,因为你已经帮助了自己;但是,在VBA中使用Excel函数时,您可以查看性能。
PS:
**在后一个注释中,如果您希望pattern matching
,则可以考虑ScriptingObject **Regex
。