SIGN()公式返回意外结果

时间:2018-10-09 10:26:21

标签: excel excel-formula

上一个问题:Sumproduct with multiple criteria on one range

Jeeped为我提供了一个非常有用的公式来实现一个sumproduct(),它需要多个条件。但是,我目前的情况更为广泛:

使用这些示例表:

第一列是ID号,第二列是响应者组(A,B)。列标题是问题类型(X,Y,Z)。

表Q1

|    |   | X | Y | Y | Z | Y |
|----|---|---|---|---|---|---|
| 1  | A | 2 | 2 | 1 |   | 1 |
| 2  | A | 1 | 1 |   |   | 2 |
| 3  | A | 1 | 1 |   |   | 1 |
| 4  | A | 2 | 1 |   |   | 1 |
| 5  | A | 1 | 2 | 1 |   | 1 |
| 6  | A | 1 | 1 |   |   | 1 |
| 7  | A |   |   |   |   |   |
| 8  | A |   |   |   |   |   |
| 9  | A | 1 | 1 |   |   | 1 |
| 10 | A | 2 | 2 | 2 |   | 2 |
| 11 | A |   |   |   |   |   |
| 12 | A | 1 | 2 | 1 |   | 2 |
| 13 | B |   |   |   |   |   |
| 14 | B | 1 | 1 |   |   | 1 |
| 15 | B | 2 | 2 | 1 |   | 1 |

表Q2

|    |   | X | Y | Y | Z | Y |
|----|---|---|---|---|---|---|
| 1  | A | 1 | 2 | 1 |   | 1 |
| 2  | A | 1 | 1 |   |   | 1 |
| 3  | A | 1 | 1 |   |   | 1 |
| 4  | A | 1 | 1 |   |   | 1 |
| 5  | A | 1 | 1 |   |   | 1 |
| 6  | A | 1 | 1 |   |   | 1 |
| 7  | A |   |   |   |   |   |
| 8  | A |   |   |   |   |   |
| 9  | A | 1 | 1 |   |   | 1 |
| 10 | A | 1 | 1 |   |   | 1 |
| 11 | A |   |   |   |   |   |
| 12 | A | 1 | 2 | 1 |   | 1 |
| 13 | B |   |   |   |   |   |
| 14 | B | 1 | 1 |   |   | 1 |
| 15 | B | 1 | 2 | 1 |   | 1 |

现在,我想知道每个问题类型(X,Y,Z)的受访者在Q2上回答1(是)的次数。问题在于,如果某人在Q1上回答1(是),则应该“替代”在Q2上的答案,因为我们假设当某人在Q1(一项措施的执行)上回答“是”时,他们在Q2(该措施的知识)上的回答是也必须是。

第二个陷阱是,对于前两次出现的Y,在两列之一中只能有一个是,因此,对于每个受访者,对于问题类型Y,实际上只能有两个是。

我使用以下公式(第3页):=SUMPRODUCT(SIGN(('Q1'!$C$2:$G$16=1)+('Q2'!$C$2:$G$16=1))*('Q2'!$B$2:$B$16=Blad3!$D5)*('Q2'!$C$1:$G$1=Blad3!E$4))获得以下结果。

|   | X | Y  | Z |
|---|---|----|---|
| A | 9 | 19 | 0 |
| B | 2 | 4  | 0 |

对于X来说,这些结果是正确的,因为表Q2中有9个1。 对于Y,对于B的结果是正确的,对于A却是不正确的,因为只有9位受访者,回答最多2个问题将导致最多18个问题,但是我们有19个问题。

1 个答案:

答案 0 :(得分:0)

事实证明,该公式没有任何问题,只是该公式不适合此数据的组织方式。如果您查看第5行:

第一季度

|    |   | X | Y | Y | Z | Y |
|----|---|---|---|---|---|---|
| 5  | A | 1 | 2 | 1 |   | 1 |

第二季度

|    |   | X | Y | Y | Z | Y |
|----|---|---|---|---|---|---|
| 5  | A | 1 | 1 |   |   | 1 |

如果我们将其压缩到所有Y列中的任何一个,我们都会得到此表:

|    |   | X | Y | Y | Z | Y |
|----|---|---|---|---|---|---|
| 5  | A |   | 1 | 1 |   | 1 |

当我要求此组合表使用sumproduct()时,结果将为3。

为防止这种情况,我在表中添加了一个辅助列(在两个Y列和Z列之间),其公式如下:IF(OR(D1=1,E1=1),1,"")。从双Y列中删除标题,然后重新运行查询产生正确的结果。

然后,新表Q1如下所示:

|    |   | X |   |   | Y | Z | Y |
|----|---|---|---|---|---|---|---|
| 1  | A | 2 | 2 | 1 | 1 |   | 1 |
| 2  | A | 1 | 1 |   | 1 |   | 2 |
| 3  | A | 1 | 1 |   | 1 |   | 1 |
| 4  | A | 2 | 1 |   | 1 |   | 1 |
| 5  | A | 1 | 2 | 1 | 1 |   | 1 |
| 6  | A | 1 | 1 |   | 1 |   | 1 |
| 7  | A |   |   |   |   |   |   |
| 8  | A |   |   |   |   |   |   |
| 9  | A | 1 | 1 |   | 1 |   | 1 |
| 10 | A | 2 | 2 | 2 |   |   | 2 |
| 11 | A |   |   |   |   |   |   |
| 12 | A | 1 | 2 | 1 | 1 |   | 2 |
| 13 | B |   |   |   |   |   |   |
| 14 | B | 1 | 1 |   | 1 |   | 1 |
| 15 | B | 2 | 2 | 1 | 1 |   | 1 |