我想检查单元格 A1 的值是否存在于任何位置 来自 sheet2!$ A $ 2:$ z $ 50 。
如果值存在,则在找到匹配项的列处返回第一行的值。
我试过了:
但此功能仅限于检查单行/列是否匹配。
我希望像=IF(A1,sheet2!$A$2:$Z$50,x1,FALSE)
之类的东西
其中x =找到匹配的列。
有类似的东西吗?
答案 0 :(得分:2)
像这样的数组公式可以正常工作
按 Shift Ctrl 一起输入
=IF(COUNTIF(A2:Z50,A1)>0,MIN(IF(A2:Z50=A1,ROW(A2:Z50),51)),"not found")
答案 1 :(得分:0)
我认为如果使用辅助细胞,你可以这样做。
MATCH()
,以查找该列中值的行索引(如果存在)。将其包裹在NOT(ISERROR())
中以将结果转换为true / false二进制数据。 TRUE =匹配; FALSE =不匹配。MATCH()
,这次找到第一个TRUE(即匹配)列; MATCH()
将返回列的索引;然后,您可以使用INDEX()
查找该列中第一行的值。答案 2 :(得分:0)
说 Sheet2 就像:
如果该列包含要查找的值,我们需要 Sheet1 上的公式,该公式将返回标题行中的值。因此,如果 A1 包含 Good Guy ,则公式应返回 Victor Laszlo
将以下UDF放入标准模块中:
Public Function GetHeader(v As Variant, rTable As Range) As Variant
Dim rHead As Range, rData As Range, WhereIsIt As Range
Set rHead = Intersect(rTable(1).EntireRow, rTable)
Set rData = Intersect(rTable.Offset(1), rTable)
Set WhereIsIt = rData.Find(what:=v, After:=rData(1))
If WhereIsIt Is Nothing Then
v = "NOT FOUND"
Exit Function
End If
GetHeader = Intersect(WhereIsIt.EntireColumn, rHead).Value
End Function
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从Excel使用UDF:
<强> = GetHeader(A1,A1 Sheet2的:Z50)强>
要了解有关宏的更多信息,请参阅:
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
必须启用宏才能使其生效!
注意:
我们为UDF提供整个范围,包括标题行 (尽管标题行已从搜索中排除)
答案 3 :(得分:0)
如果在查找表和要向其中输入数据的表中都存在对应的单元格,那么我最喜欢从查找表返回值的是
INDEX('Sheet1'!I:I,(MATCH(D2,'Sheet1'!A:A,0)))
这基本上是Vlookup或Match If公式的一种更灵活的版本。就是说,您在工作表1的A:A列中找到与D2中的值匹配的值,然后从工作表1的I:I列中返回对应的值(来自同一行)。
如果要在两张纸之间匹配数据,例如价格与产品名称或SKU匹配。