【问题标题】:Excel VBA - Search for string in worksheetExcel VBA - 在工作表中搜索字符串
【发布时间】:2011-10-03 10:17:06
【问题描述】:

我有这个 Excel 工作簿,我想在 Sheet1 中搜索特定字符串。如果找到它,请输入一个新值。但是,工作表非常大,所以我认为循环遍历每个单元格不是很有效。那么,我可以搜索一个范围并以这种方式找到它吗?

这是我目前得到的:

Dim rngSearchRange as range

    With ThisWorkbook.Sheets(1)
      Set rngSearchRange = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With

我要查找的字符串是包含三个值的数组中的第一个值。那么,我怎样才能在这个范围内搜索那个特定的字符串,找到位置然后输入一个新值呢?

我在想一些事情:

Dim rngFindRange as range
Set rngFindRange = rngSearchRange.Find(var(0), LookIn:=xlValues, lookat:=xlWhole)

var(0) 是我要查找的数组中的值。但是这条线并没有真正给我任何结果。我离这儿很远吗?

【问题讨论】:

    标签: arrays excel vba


    【解决方案1】:

    类似的东西

    Sub FindMe()
        Dim ws As Worksheet
        Dim rngSearchRange As Range
        Dim rngFindRange As Range
        Dim Var
        Dim elemVar
        Var = Array("apples", "oranges", "fruit")
        Set ws = ThisWorkbook.Sheets(1)
        Set rngSearchRange = ws.Range(ws.[a2], ws.Cells(Rows.Count, "A").End(xlUp))
        For Each elemVar In Var
            Set rngFindRange = rngSearchRange.Find(elemVar, LookIn:=xlValues, lookat:=xlWhole)
            If Not rngFindRange Is Nothing Then
                MsgBox elemVar & " found in " & rngFindRange.Address(0, 0)
            Else
                MsgBox elemVar & " not found in:"
            End If
        Next elemVar
    End Sub
    

    【讨论】:

    • 这似乎合乎逻辑。但我仍然没有从 rngFindRange 得到任何结果。即使我可以将 rngSearchRange 添加为手表,然后查看 Cell.Formula(1) 并看到那里的确切值与 var(0) 中的完全相同。
    • 好的,现在就单独尝试您的代码。它的工作原理 find :) 所以,我需要查看我自己的代码,看看为什么这不起作用。编辑。如果字符串中有空格,似乎它什么也找不到? Edit2:这也有效。嗯,我会尽快回复你
    • 您在搜索什么值 - 实际公式或公式的结果?如果您检查了公式的结果值中的任何空格吗?
    • 是的,根本没有任何空格。奇怪的是,我可以用与它已经拥有的完全相同的字符串重新分配 Val(0) 的值。它可以找到它!不过,我确实使用 ADODB 连接到单独的工作簿来获取原始字符串。然后我将不需要的值拉入数组。但这应该没关系吧?
    • 只是为了清除最后一点。如果我调暗一个临时变量,它将它分配给 rs.GetRows。然后用 t(0,0) 分配实变量
    猜你喜欢
    • 2012-08-02
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    相关资源
    最近更新 更多