繁体   English   中英

如何使用 ArrayFormula 从一个范围内多次查找相同的值

[英]How do I look up the same values from a range, multiple times with ArrayFormula

我有这个范围...A1:D5

在此处输入图片说明

我想查找 b = "salary" 的行并将它们放在一个新表中。 这部分非常简单,可以使用查询、过滤器、索引/匹配、vlookup 和/或 {arrays} 以多种方式完成。

我遇到问题的部分是我希望初始结果重复可变次数。 例如,如果我想搜索 B = "salary" 的所有行,并且我想在新表中重复该结果 3 次,我希望它看起来像这样......

在此处输入图片说明

我已经使用上述所有函数和技术进行了尝试,并且在将它们与 ArrayFormula 结合使用时,我只能让第一行出现。

我尝试过的一些方法如下

=ARRAYFORMULA(INDEX ('Employees'!A2:D5, MATCH("salary", 'Employees'!B2:B, 0)))

=ARRAYFORMULA(VLOOKUP("salary",Employees!B2:D, {1,2,3}, FALSE))

=ARRAYFORMULA(QUERY('Employees'!A2:D, "Select * where B = 'salary'", 0))

=ARRAYFORMULA(TRANSPOSE(QUERY(TRANSPOSE(QUERY(Employees!$A$2:$D, "SELECT * WHERE B = 'salary'", 0 )),"SELECT Col"&((row(J9:J30)-1)-(ROUNDDOWN((row(J9:J30)-1)/3,0)*3))+1&"",0)))

尝试:

=ARRAYFORMULA(SUBSTITUTE(SPLIT(TRANSPOSE(SPLIT(REPT(TEXTJOIN("♦", 1, 
 FILTER({"♥♠"&A2:A, B2:D}, B2:B="salary")), 3), "♥")), "♦"), "♠", ))

0

这里可以使用的公式:

= iferror(arrayformula 
  (
    split ( 
      transpose (
        split (
          substitute ( 
            textjoin (
               "%",true, 
               if (
                    sequence(3)=sequence(3),
                    textjoin("%",false,filter({L2:N5,O2:O5&"$"} ,M2:M5="Salary"))
               )
            )
            ,"$%","$"
          )
          ,"$",true,false
        )
      )
      , "%", true,false
    )
  ),"")

数据在 L1:O5 范围内,Sequence(3) 是重复结果的次数,应将符号更改为您的特殊符号,以避免与您的数据发生冲突

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM