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

问题描述 投票:0回答:2

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

enter image description here

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

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

enter image description here

我已经使用上面提到的所有功能和技术进行了尝试,将它们与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)))
arrays google-sheets formula lookup repeat
2个回答
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)是重复结果的数量,应将符号更改为您的特殊字符,以避免与您的数据冲突


0
投票

尝试:

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

0

© www.soinside.com 2019 - 2024. All rights reserved.