公式适用于一些数据(不是全部)

时间:2017-12-23 06:18:35

标签: excel excel-formula

my file here

在附件中,公式适用于多个第一个客户ID,但在客户ID列表末尾的某个点处失败。例如,当您输入客户ID" 8010001"时,在单元格B2中的工作表2上,从工作表1中获取与此客户相关的所有请求。然后,如果您再创建包含请求ID的单元格(在这种情况下) 8234276)激活并按"列出政策"按钮所有与此请求ID相关的策略都是从表单1中获取的。但是此过程失败,例如客户ID如8010112,8010198 ......即使客户ID 8010093也不能完全正常工作。你可以尝试一下。

1 个答案:

答案 0 :(得分:1)

在Sheet 2单元格B2(CTRL + SHIFT + ENTER)下面的公式:

=IFERROR(INDEX(Sheet1!$E$1:$E$122,SMALL(IF($C$1&$B$1=Sheet1!$J$1:$J$122&Sheet1!$A$1:$A$122,ROW(Sheet1!$E$1:$E$122),"a"),ROWS($A$1:A1))),"")

复制。

已编辑的公式后的工作表2单元格I2(CTRL + SHIFT + ENTER)中:

=IFERROR(INDEX(Sheet1!$D$1:$D$122,SMALL(IF($C$1&$A$1=Sheet1!$K$1:$K$122&Sheet1!$E$1:$E$122,ROW(Sheet1!$D$1:$D$122),"a"),ROWS($A$1:A1))),"")

复制。

你应该得到正确的结果。

<强> EDIT2

SMALL(IF部分

)的说明

$C$1&$B$1 - 两个单元格的简单连接,然后用于与工作表1中的完整连接数组进行比较,即Sheet1!$J$1:$J$122&Sheet1!$A$1:$A$122,这会产生布尔结果数组{TRUE,FALSE,TRUE...}

如果condition为TRUE,则IF公式返回ROW(Sheet1!$D$1:$D$122),用于计算行号。如果FALSE结果,则返回字符串"a",这会导致SMALL公式出错。终极结果数组看起来像{1,"a",3....}

现在使用SMALL我们逐个使用数字结果。在第一个单元格中,ROWS($A$1:A1)计算为1,当我们将其复制时,它会生成后续数字,如2,3,4,5等。因此,我们从IF构造上一次选择一个结果。

您可以使用公式评估来查看小数据集上的演示,以便更好地理解。