Name Day 1 Day2 Day 3
John 3 2
John 2 1 4使用双Xlookup,当我搜索John和Day 2时,我无法得到值1,并且我尝试Index/Xmatch/xmatch返回我1,但没有运气。有什么办法吗?
@更新示例图片此处@ 在这里输入图像描述
这是我目前的公式
=XLOOKUP("John",$A$2:$A$3,XLOOKUP("Day 2",$B$1:$D$1,$B$2:$D$3),,2)发布于 2022-11-20 08:27:24
请注意,您的评论显示了与您的问题不同的情况(名称中的通配符搜索)。
下面的公式将导致通配符搜索名称的第一个找到的值,从F2中的搜索字符串开始,并在F3中匹配日期
=LET(range,A1:D3,
c,1-COLUMNS(range),
r,1-ROWS(range),
days,TAKE(range,1,c),
names,TAKE(range,r,1),
data,TAKE(range,r,c),
x,FILTER(data,days=F3),
TAKE(
FILTER(x,
(ISNUMBER(XMATCH(F2&"*",names,2)))*
(x<>"")),
1))

发布于 2022-11-22 05:24:26
您不能使用XLOOKUP双向精确匹配,因为它返回第一个匹配,并且在列名称中有重复的值。
此解决方案根据查找值从输入数据返回第一个非空白值。在单元格H2中放置以下公式:
=LET(colIdx, XMATCH(G3,A1:D1), tb, A2:D5, lkCol, INDEX(tb,, colIdx),
INDEX(TAKE(FILTER(tb, (A2:A5=G2) * (lkCol<>0), "Not Found"),1),colidx)
)这是输出:

我们使用LET来简化阅读和作文。首先,我们需要确定我们感兴趣的那一栏。名称colIdx具有列索引。注意,为了只处理一个数据范围(tb),我搜索所有列名,包括Name。现在,我们需要标识相应的列值。名称lkCol表示这一点。
现在,我们有了筛选和选择要查找的信息所需的所有元素:
FILTER(tb, (A2:A5=G2) * (lkCol<>0), "Not Found")输出将是来自tb的行,用于名称G2,而对于来自G3列名的非空行,则进行筛选。输出包含所有列,现在我们需要选择我们感兴趣的列,并且只需要选择第一个非空值。TAKE只提取第一行,INDEX提取相应的列。
https://stackoverflow.com/questions/74505088
复制相似问题