我正在尝试在Excel中执行应该在数据库中执行的操作。我有一个包含原始数据的电子表格,我试图根据标准进行查询。给出以下示例表:
A B C D E F
1 Red up 1 4 dn 5
2 Blu up 5 9
3 Yel dn 1 4
4 Gre dn 5 9
我想返回满足E1和F1标准的A列的值,其中在B列中找到E1并且发现F1等于或在C和D列中的值之间。在示例中,我想要返回“Gre”。
我一直用INDEX和MATCH函数拉出我的头发,我可以完成部分任务,但没有找到任何可扩展性来解决整个解决方案。
提前感谢您的帮助!
答案 0 :(得分:2)
请试试这个......
=IFERROR(INDEX($A$1:$A$4,MATCH(1,INDEX(($B$1:$B$4=$E$1)*($C$1:$C$4<=$F$1)*($D$1:$D$4>=$F$1),),0)),"")
答案 1 :(得分:1)
你可以使用这个公式:
=DGET($A$1:$D$5,"Field 1",$E$1:$F$2)
A1:D5 是您的数据库 字段1 是从中返回值的字段 E1:F2 是您的标准(要在该字段中查找的字段名称和值)。
https://support.office.com/en-gb/article/DGET-function-455568bf-4eef-45f7-90f0-ec250d00892e
如@Vityata所述,这对OP不起作用 - 寻找值6会返回#VALUE
错误而不是Gre。
一些更新可以让它发挥作用:
F2和G2中的值计算如下:
="<=" & $H$2
和=">=" & $H$2
然后,当在单元格H2中输入1时,此示例将返回Yel。
答案 2 :(得分:0)
我喜欢这个问题,因此我对sktneer的答案进行了详细阐述。
原因,它的作用是因为我们在以下公式中寻找真理(a.k.a。1
):
=MATCH(1;
INDEX(($B$1:$B$4=$E$1)*($C$1:$C$4<=$F$1)*($D$1:$D$4>=$F$1););0)
然后我们可以通过INDIRECT得到答案:
=INDIRECT(ADDRESSE(I1;1))
如果你想在一个公式中使用它,它应该是这样的:
=INDIRECT(ADDRESS(
MATCH(1;INDEX(($B$1:$B$4=$E$1)*($C$1:$C$4<=$F$1)*($D$1:$D$4>=$F$1););0);
1))