Excel - 通过随机单元格中的字符串引用另一个工作表,并引用其给定行中的值

时间:2016-09-25 19:33:46

标签: excel excel-formula

我正在尝试在随机单元格中引用另一个工作表中的字符串,并引用其给定行中的值。

原因是我正在使用30多个文档,并且给定的字符串(以及我旁边需要的值)出现在每个文档的不同位置。

我需要从每个文档中收集这些值,并将其合并为一个。

谢谢!

1 个答案:

答案 0 :(得分:2)

Sheet6 上说,有一些单元格包含短语:

happiness is

我们想要检索它右侧的单元格内容:

enter image description here
首先在标准模块中输入以下 UDF

Public Function Find_Range(Find_Item As Variant, _
    Search_Range As Range, _
    Optional LookIn As Variant, _
    Optional LookAt As Variant, _
    Optional MatchCase As Boolean) As String

    Dim c As Range
    If IsMissing(LookIn) Then LookIn = xlValues 'xlFormulas
    If IsMissing(LookAt) Then LookAt = xlPart 'xlWhole
    If IsMissing(MatchCase) Then MatchCase = False
    With Search_Range
        Set c = .Find( _
        What:=Find_Item, _
        LookIn:=LookIn, _
        LookAt:=LookAt, _
        SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, _
        MatchCase:=MatchCase, _
        SearchFormat:=False)
        If Not c Is Nothing Then
             Find_Range = Search_Range.Parent.Name & "!" & c.Address
        End If
    End With
End Function

UDF 将搜索Find_Item并将地址作为字符串返回。所以:

=find_range("happiness is",Sheet6!1:1048576)

将返回:

Sheet6!$E$13

请注意,搜索范围是整个 Sheet6 。但是我们想要一个 OFFSET(),所以在 Sheet5 中选择一些单元格并输入:

=OFFSET(INDIRECT(find_range("happiness is",Sheet6!1:1048576)),0,1)

enter image description here

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      = Find_Range(A1,C1:X100)

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!