【问题标题】:How do I look up the same values from a range, multiple times with ArrayFormula如何使用 ArrayFormula 从一个范围内多次查找相同的值
【发布时间】:2020-01-03 22:20:46
【问题描述】:

我有这个范围...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)))

【问题讨论】:

  • 请尝试使用文本连接和分割作为附加

标签: arrays google-sheets google-sheets-formula transpose array-formulas


【解决方案1】:

尝试:

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

【讨论】:

  • 这些都是很好的解决方案,谢谢!我唯一的额外问题是如何为数组的值添加前缀? Textjoin 添加到末尾作为分隔符,但我不能为我的生活添加到前面。例如,我想将“hi”添加到 {"003%salary%bi-weekly%50000";"002%salary%bi-weekly%50000"} 中的每个数组(字符串)值以获得此结果 {"hi %003%salary%bi-weekly%50000";"hi%002%salary%bi-weekly%50000"}
  • 试试:=ARRAYFORMULA(SUBSTITUTE(SPLIT(TRANSPOSE(SPLIT(REPT(TEXTJOIN("♦", 1, FILTER({"♥♠hi"&A2:A, B2:D}, B2:B="salary")), 3), "♥")), "♦"), "♠", ))
  • 刚刚想到 =JOIN("hi",{"",1,2,3,4}, {3,4,5,6}) .....似乎有效。有更好的解决方案吗?
【解决方案2】:

这里可以使用的公式:

= 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) 是多少次重复结果,符号应更改为您的特殊符号,以避免与您的数据冲突

【讨论】:

  • 这些都是很好的解决方案,谢谢!我唯一的额外问题是如何为数组的值添加前缀? Textjoin 添加到末尾作为分隔符,但我不能为我的生活添加到前面。例如,我想将“hi”添加到 {"003%salary%bi-weekly%50000";"002%salary%bi-weekly%50000"} 中的每个数组(字符串)值以获得此结果 {"hi %003%salary%bi-weekly%50000";"hi%002%salary%bi-weekly%50000"}
  • 将 {L2:N5,O2:O5&"$"} 更改为 {left(L2:L5,0) &"Hi",L2:N5,O2:O5&"$"}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-23
相关资源
最近更新 更多