在DGET函数中,如何使用多个单元格范围作为搜索条件?

时间:2013-11-28 05:10:18

标签: excel spreadsheet libreoffice-calc

我在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  |       |       |       |       | ---- | 

1 个答案:

答案 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),以过滤掉没有匹配的单元格。