我正在尝试在随机单元格中引用另一个工作表中的字符串,并引用其给定行中的值。
原因是我正在使用30多个文档,并且给定的字符串(以及我旁边需要的值)出现在每个文档的不同位置。
我需要从每个文档中收集这些值,并将其合并为一个。
谢谢!
答案 0 :(得分:2)
在 Sheet6 上说,有一些单元格包含短语:
happiness is
我们想要检索它右侧的单元格内容:
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)
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从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
必须启用宏才能使其生效!