我在Libreoffice中使用DGET
函数。我有第一张桌子,如下图所示(上图)。我想制作第二张桌子(下图)。我可以使用DGET函数,其中数据库是包含顶表的单元格范围。和数据库字段是“赢家”。
是否可以在搜索条件中使用不同的单元格区域,以便对于案例#1的行中的每个单元格,可以使用在底部的第一行中给出的不同搜索条件的单独公式表
如果我必须为搜索条件使用单独的连续单元格范围,则会有[n * Chances]单元格范围,其中n =案例总数(在我的情况下约为150)和机会=可能的机会数# (在我的情况下为50)。
Case | Chance# | Winner
-------------------------
1 | 7 | Joe
1 | 9 | Emil
1 | 10 | Harry
1 | 11 | Kate
2 | 1 | Tom
2 | 3 | Jerry
2 | 4 | Mike
2 | 7 | John
Case |Chance#|Chance#|Chance#|Chance#|Chance#|Chance#|Chance#|Chance#|Chance#|Chance#|Chance#|
|="=1" |="=2" |="=3" |="=4" |="=5" |="=6" |="=7" |="=8" |="=9" |="=10" |="=11" | ---- |="=50"
1 | | | | | | | Joe | |Emil |Harry | Kate | ---- |
2 | Tom | |Jerry |Mike | | | John | | | | | ---- |
答案 0 :(得分:1)
为此,您需要更改方法,而不是使用DGET,我使用的方法更为复杂:
考虑你的例子:
A B C D
1 # Case Chance# Winner
2 1 1 7 Joe
3 2 1 9 Emil
4 3 1 10 Harry
5 4 1 11 Kate
6 5 2 1 Tom
7 6 2 3 Jerry
8 7 2 4 Mike
9 8 2 7 John
10
11 Case\Chance# 1 2 3 4
12 1
13 2 Tom Jerry Mike
我使用以下内容:
=IF(SUMPRODUCT(($B$2:$B$9=$A12)*($C$2:$C$9=B$11)*($A$2:$A$9))> 0,INDEX($D$2:$D$9,SUMPRODUCT(($B$2:$B$9=$A12)*($C$2:$C$9=B$11)*($A$2:$A$9))),"")
让我们忽略IF,并专注于真正的交易:
首先,获取符合条件的行,$ B $ 2:$ B $ 9 = $ A12和$ C $ 2:$ C $ 9 = B $ 11将导致TRUE / FALSE数组,乘以它们得到0 / 1个数组,只有一个1用于匹配,现在乘以ID以获取表中的行号。 SUMPRODUCT将从结果数组中获取单个值(行)。 最后使用index来检索所需的值。
IF语句测试是否存在匹配(SUMPRODUCT> 0),以过滤掉没有匹配的单元格。