使用VBA宏在excel行中搜索字符串的完全匹配

时间:2013-01-08 10:32:04

标签: excel vba excel-vba

如何在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)

4 个答案:

答案 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