我需要将一列数据等同于一个特定的东西到数组中

基本上我有4列在我的数据页和不同的页面我有一个帐户列表。 在“数据”页面上有多行同名的原因是因为他们在单独的date中多次提交。

我需要查看基金名称等同于数据页面基金名称的账户页面,SB等于数据页面上的SB,SE等于数据页面上的SE,并找出基金具有多less贡献者并将其放入数组中。

在账户页面的D栏中,我需要findSE不是该基金的贡献者,如果他们不是贡献者返回TRUE,则返回FALSE。

在账户页面的E栏中,我需要findSE是该基金唯一的贡献者,如果它们返回FALSE,则返回TRUE。

在帐户页上的列E中,我需要findSE是否是众多贡献者之一,如果它们返回FALSE,则返回TRUE。

我有编程知识的Java,但它需要在Excel中完成,我已经做了VBA在过去,但它是很久以前了!

帐号页面

帐户页面

数据页面

数据页面

如果我正确理解你的问题,只有公式只为你select。

列D的第一个逻辑检查:

=NOT(SUMPRODUCT((A2=$H$2:$H$14)*(C2=$K$2:$K$14))>0) 

这个公式将计算当列名称出现在列K中时,列H中基金名称出现的次数。因此,如果这个结果是0,他们从来不是贡献者。 既然你不希望贡献者是真实的,我们需要NOT公式将0(False)改为1(True)。 如果人名作为贡献者出现一次或多次,那么以2次为例,Excel将任何非0作为真。 所以采取NOT(2)将导致0或False。

列E的第二个逻辑检查:

 =SUMPRODUCT((A2=$H$2:$H$14)*(C2=$K$2:$K$14))=COUNTIF($H$2:$H$14,A2) 

这个公式与第一个相似。 首先计算该人的姓名是该账户的贡献者的次数。 然后计算帐户在列H中出现的次数。如果它们相等,则知道它们是唯一贡献者,并显示TRUE。

列F的第三个逻辑检查:

 =AND(NOT(D2),NOT(E2)) 

这个检查是基于前两个结果。 你需要知道他们是一个贡献者,但他们并不是唯一的贡献者。 换句话说,您的第一个逻辑检查需要为TRUE,而您的第二个逻辑检查需要为FALSE。

这一切都在同一张纸上进行,因此您需要更新地址范围。 用三个公式填写第2行,然后复制下来。

概念validation:

概念验证

那么一个产品如何工作? 当使用sumproduct进行逻辑评估以获得列表时,需要记住对于Excel公式,TRUE> 1,False = 0。 在VBA中不一样。 SUMPRODUCT也有一点作弊,因为它在()内部进行了ARRAY计算。 让我们看看第一个产品,然后一步步走过去。

 =SUMPRODUCT((A2=$H$2:$H$14)*(C2=$K$2:$K$14)) 

第一部分(A2 = $ H $ 2:$ H $ 14)可以作为数组公式input。 它基本上是这样的:

第一个数组公式

现在,如果我们拿第二部分(C2 = $ K $ 2:$ K $ 14)也可以作为数组公式input它看起来像这样:

第二个数组公式

所以现在我们在两个数组公式中有相同的行,这意味着每个数组公式中的相同的行被乘以另一个。 而另一个非常关键的步骤是math行为是导致数组结果从TRUE / FALSE变成1/0的原因。 当你结束乘数组公式时,你正在这样做:

数组乘法

在这种情况下,你可以把*想象成一个AND语句,而一个OR语句就是+。

现在有了产品,这是非常重要的最后一步。 它将所得到的最终数字数组加起来得到一个数字。 所以对于这个例子来说,如果产品内部的条件多次成立,我们可以说三次。 你会在最后的arrays中看到三个1。 当最后一个数组的总和被采纳意味着sumproduct将返回3。

因此,总之,您可以使用sumproduct来计算多个条件为TRUE的次数,您可以对符合条件的值进行求和,如果您将要乘以条件的列相乘,则可以返回唯一结果是通过将条件乘以行(单元格的范围)以及可能的其他一些事物来find的。