0

好吧; 所以这就是我要做的全部事情。

输入与数据工作表 A 列中的数字对应的数字,并返回相邻行数据。

我希望它返回相邻的单元格;例子。如果它在单元格 A5378 中找到 052035,我希望它返回数据或单元格编号 B5378、C5378

编辑:我删除了我的代码;因为它并没有真正遵循一个好的方法来做到这一点。

数据的工作表结构:A 1-7800ish[6 位数字 1-9]

B 1-7800ish 区号

C 1-7800ish 城市/州

顺便说一下数据;是我从 SQL-Server 上的查询中得到的一个相对较大的集合。根据我的原始查询,我要查找的字符串编号不应重复。[我在复制之前分组]

如果您有从编程角度快速介绍 VB 的资源,那将很有帮助。我可以用 C/C++ 编程,但 VB 的语法对我来说有点奇怪。

4

1 回答 1

0

如果您的最终目标是简单地在 A 列中找到完全匹配的值,并返回相应行 B 和 C 列中的值,那么正则表达式是不适合这项工作的工具。使用内置函数,如Match.

我仍然不明白这个练习的意义,因为数据已经排列在 A、B 和 C 列中,你可以简单地使用 AutoFilter... 这个子例程只是告诉你找到了值(并返回相应的数据)或未找到。

我已经对此进行了测试(对尺寸vals变量进行了小改动)

Sub Foo()
    Dim valToLookFor As String
    Dim rngToLookAt As Range
    Dim foundRow As Long
    Dim vals() As Variant

    valToLookFor = "052035"
    Set rngToLookAt = Range("A:A")

    If Not IsError(Application.Match(valToLookFor, rngToLookAt, False)) Then
        foundRow = Application.Match(valToLookFor, rngToLookAt, False)
        ReDim vals(1)
        vals(0) = rngToLookAt.Cells(foundRow).Offset(0, 1).Value
        vals(1) = rngToLookAt.Cells(foundRow).Offset(0, 2).Value

        'Alternatively, to return the cell address:
        'vals(0) = rngToLookAt.Cells(foundRow).Offset(0,1).Address
        'vals(1) = rngToLookAt.Cells(foundRow).Offset(0,2).Address
        MsgBox Join(vals, ",")
    Else:
        Erase vals
        MsgBox valToLookFor & " not found!", vbInformation
    End If

End Sub

这是它有效的证据:

在此处输入图像描述

于 2013-08-21T15:28:23.230 回答