8

如何在excel中的一个特定行中搜索字符串?我在长类型变量中有行索引。

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

4 回答 4

16

试试这个:

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 对象库中提及。

于 2013-01-08T10:45:30.663 回答
1

这不是您已经帮助自己的另一个代码;但是让您看看在 VBA 中使用 Excel 函数时的性能。

PS:**在后面的说明中,如果您愿意,pattern matching可以考虑ScriptingObject **Regex

于 2013-01-08T11:05:06.573 回答
0

使用 worksheet.find (工作表是您的工作表)并将行范围用作其范围对象。您可以获得 rangeobject,例如:worksheet.rows(rowIndex) 作为示例

然后给出 find 所需的参数,它应该可以为您找到它。如果我没记错的话, find 默认返回第一个匹配项。我手头没有Excel,所以你必须自己查找,对不起

我建议不要使用 for 循环,它比 find 更脆弱且老化更慢。

于 2013-01-08T10:39:36.477 回答
0

没关系,我找到了答案。

这会成功的。

Dim colIndex As Long    
colIndex = Application.Match(colName, Range(Cells(rowIndex, 1), Cells(rowIndex, 100)), 0)
于 2013-01-08T10:43:17.850 回答