【问题标题】:Dynymically generate Array动态生成数组
【发布时间】:2017-10-17 09:12:09
【问题描述】:

是否可以通过比较两个数组/范围并在没有 VBA 的情况下查找匹配项来在 excel 函数中动态生成布尔或 1/0 数组?

我有一个带有索引的单元格范围,例如 A1:A10 中的值 1 到 10。

然后是另一个范围,C13:C15,其中包含值 3,6,7。有没有办法将 A1:A10 与 C13:C15 进行比较以生成以下包含十个元素的数组:{0,0,1,0,0,1,1,0,0,0} 用于 sumproduct 函数?然后将这个比较不同的范围拖动到索引。

【问题讨论】:

    标签: excel


    【解决方案1】:

    你可以使用logical_test函数返回一个这样的数组,这取决于你想用什么逻辑来得到你的1或0

    请看下面的例子:

    【讨论】:

      【解决方案2】:

      以下数组公式根据您的单元格范围返回 {0;0;1;0;0;1;1;0;0;0}

      = MMULT((A1:A10=TRANSPOSE(C13:C15))+0,((((C13:C15)=0)+1)>0)+0)
      

      这与您的问题中所需的结果相同,只是它返回一个垂直数组而不是水平数组。如果要返回一个水平数组,只需将上面的整个公式用TRANSPOSE 括起来。 (即= TRANSPOSE(<formula shown above>)

      注意这是一个数组公式,因此您必须在键盘上按 Ctrl+Shift+Enter 而不是仅按 Enter 输入此公式后。

      【讨论】:

        【解决方案3】:

        试试

        =SIGN(COUNTIF(C13:C15,A1:A10))
        

        如果数字在 C13:C15 中只出现一次,则不需要 SIGN。

        所以通常情况下,如您所说,这将是在 SUMPRODUCT 的上下文中

        =SUMPRODUCT(SIGN(COUNTIF(C13:C15,A1:A10)))
        

        【讨论】:

          猜你喜欢
          • 2021-11-15
          • 1970-01-01
          • 2014-09-14
          • 2015-05-23
          • 1970-01-01
          • 1970-01-01
          • 2010-11-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多