我需要一个公式,它将首先根据与表上的列标题匹配的指定单元格的内容来确定要搜索的表的哪一列。因此,假设具有所需单词的单元格位于选项卡1上,单元格A1中包含单词Task。该公式需要搜索选项卡2中第1行中的列标题,以找到具有标题Task的列。
然后需要搜索该列以查找必需的单词,这将出现多次,并返回B列中相邻单元格的内容。
我已经在以下网站上查看了数组公式:
以下公式让我了解其中的一部分,但它不符合我的初始要求,因为它已修复并且正在搜索A列以查找我的搜索字词。
<code><locale en-US="<h3>As Shown Details</h3> <p>6514/1 SN AWH TABLE LAMP AS SHOWN</p> <h3>Item Details</h3> <div class="table-responsive"> <table class="table table-striped table-condensed" width="100%" border="0"> <tbody> <tr> <th scope="row">Manufacturer</th> <td>Holtkotter International</td> </tr> <tr> <th scope="row">Dimensions</th> <td>Width 7.25 x Depth 7.25 x Height 18.5</td> </tr> <tr> <th scope="row">Seat Height</th> <td></td> </tr> <tr> <th scope="row">Arm Height</th> <td></td> </tr> <tr> <th scope="row">Inside Depth</th> <td></td> </tr> <tr> <th scope="row">Fabric Content</th> <td></td> </tr> <tr> <th scope="row">Country of Origin</th> <td></td> </tr> </tbody> </table> </div> <div class="part1">This modern table lamp adds style and versatility to virtually any decor. Equipped with a full-range, turn-knob dimmer and a 100 Watt Halogen bulb by Osram. Pair it with the matching wall sconce 9426, floor lamp 6515, or swing-arm floor lamp 9434.</div><br><br><div class="part2">Available in Hand Brushed Old Bronze (shown), Antique Brass, Brushed Brass, Chrome, and Satin Nickel Finishes.</div><br><br><div class="part3">Halogen Line Voltage 100W bulb included.</div>" /></code>
我还查看了此页Get column by finding value in the row。巴里的INDEX公式似乎就是我所追求的,但我在将这两个公式整合在一起时遇到了麻烦。
非常感谢任何帮助。
答案 0 :(得分:0)
我不是100%肯定你只需要一个数组公式就可以做你想做的事。尽管如此,有些人在数组公式方面比我更难以理解。
如果您不介意使用UDF路由,可以通过将其粘贴到工作簿中的新模块中来使用此UDF:
Function getList(headerValue As String, rowValue As String, lookupRange As Range, returnOffset As Integer) As String
Dim lookupCol As Range, lookupCell As Range
Dim getListOut As String
'find the column to lookup into
For Each lookupCol In lookupRange.Columns
If lookupCol.Cells(1, 1).Value = headerValue Then Exit For
Next lookupCol
'search each cell in the column (for the lookupRange) for matchValue
For Each lookupCell In Intersect(lookupCol, lookupRange).Cells
'See if we have a match
If lookupCell.Value = rowValue Then
'Concatenate if necessary to the output
If getListOut = "" Then
getListOut = lookupCell.Offset(, returnOffset).Value
Else
getListOut = getListOut & "," & lookupCell.Offset(, returnOffset).Value
End If
End If
Next lookupCell
'return
getList = getListOut
End Function
在您的单元格中使用它(如第一个标签上的B1“sheet1”):
=getList(A1,"mandatory", Sheet2!A1:G6, -3)
此处A1
是要搜索的标头值,"mandatory"
是要在该标头列中查找的单元格值,Sheet2!A1:G6
是要搜索的表格,-4
是列偏移量,用于从我们在其中找到的“强制”行获取值。
我将“task”一词放在Sheet2中的A1和标题(F列)中。我把三行写成“强制”一词,在B栏中我为每个mandatory
加上“d”,“e”和“f”。这按预期返回d,e,f
。
它有点像vlookup中的hlookup,它在逗号分隔列表中返回多个匹配,也允许负偏移。
答案 1 :(得分:0)
B1
的{{1}}:
Sheet1
=COUNTIF(INDEX(Sheet2!$1:$1048576,,MATCH(A$1,Sheet2!$1:$1,0)),"mandatory")
C1
,数组公式** :
Sheet1
复制=IF(ROWS($1:1)>B$1,"",INDEX(Sheet2!B:B,SMALL(IF(INDEX(Sheet2!$1:$100,,MATCH(A$1,Sheet2!$1:$1,0))="mandatory",ROW(Sheet2!A$2:A$100)-MIN(ROW(Sheet2!A$2:A$100))+1),ROWS($1:1))))
中的公式(虽然不是C1
中的公式,用于简单计算预期的返回次数),直到您开始获得结果的空白。
请参阅here,了解为何更适合引用其他计数单元格(B1
),而不是在此类结构中使用B1
编辑:这里的关键构造是部分:
IFERROR
利用以下事实:如果传递给INDEX(Sheet2!$1:$100,,MATCH(A$1,Sheet2!$1:$1,0))
的行或列参数中的任何一个(或两个)为零(或等效地,省略)并且INDEX
被正确强制(例如,形成较大公式的一部分),生成对整个指定列或行的引用。
因此,假设INDEX
中的值出现在A1
的{{1}}中,则上述内容将解析为:
column D
是
Sheet2
有关INDEX(Sheet2!$1:$100,,4)
的此属性的更多信息,请参阅here。
此致
**数组公式的输入方式与&#39;标准&#39;相同。公式。您只需按住CTRL和SHIFT键,然后按ENTER键,而不是按ENTER键。如果您已正确完成,您会注意到Excel在公式周围放置了大括号{}(尽管不要尝试自己手动插入这些括号)。