【问题标题】:Using CHOOSE and CONCATENATE with ARRAYFORMULA in Google Sheets在 Google 表格中将 CHOOSE 和 CONCATENATE 与 ARRAYFORMULA 结合使用
【发布时间】:2014-10-02 16:56:31
【问题描述】:

我试图在列中创建日期数组,但在使用带有 ARRAYFORUMULA 的 CHOOSE 和 CONCATENATE 公式时遇到了麻烦。有没有办法解决以下问题:

第一列包含日期;第一次约会是在星期三;所有其他日期都在星期一

当我使用
=CONCATENATE(ARRAYFORMULA(文本($I9:$I12,"ddd")),"111") =ARRAYFORMULA(连接((文本($I9:$I14,"ddd")),"111")) =ARRAYFORMULA(连接((ARRAYFORMULA(文本($I9:$I14,"ddd"))),"111"))

我得到以下单细胞响应:
星期三星期一星期一 111

我想要得到的是:
周三 111
周一 111
周一 111
周一 111

当我使用以下方程式时:

=ARRAYFORMULA(CHOOSE( weekday(I10:I14), "1 Sun", "2 Mon", "3 Tue", "4 Wed", "5 Thurs", "6 Fri", "7 Sat"))

=ARRAYFORMULA(CHOOSE(ARRAYFORMULA(weekday(ARRAYFORMULA(I10:I14))), "1 Sun", "2 Mon", "3 Tue", "4 Wed", "5 Thurs", "6 Fri", "7 Sat"))

=ARRAYFORMULA(CHOOSE( ARRAYFORMULA(weekday(I10:I14)), "1 Sun", "2 Mon", "3 Tue", "4 Wed", "5 Thurs", "6 Fri", "7 Sat"))

=ARRAYFORMULA(CHOOSE(weekday(ARRAYFORMULA(I10:I14)), "1 Sun", "2 Mon", "3 Tue", "4 Wed", "5 Thurs", "6 Fri", "7 Sat"))

我得到以下单细胞响应:
2周一

我想要得到的是 1 周三
2周一
2周一
2周一
2 星期一

我可以使用以下等式获得上面列出的日期格式:
=ARRAYFORMULA(weekday(I9:I14)& " "&Text(I9:I14, "ddd"))

但我想知道是否有一种方法可以将 CHOOSE 和 CONCATENATE 函数与 ARRAYFORUMULA 一起使用。有人知道吗?

【问题讨论】:

  • 在这个问题上绞尽脑汁。谢谢提问

标签: google-sheets array-formulas


【解决方案1】:

但我想知道是否有办法使用 CHOOSE 和 使用 ARRAYFORUMULA 连接函数。

不是以您想要的方式使用它们,并且出于不同的原因。

CONCATENATE 是一个“聚合”函数(如 SUM、AVERAGE 等),它将“吞噬”并处理括号内的所有内容。换句话说,它不能在数组上迭代。解决方案是改用 & 运算符(正如您在最终公式中所做的那样)。

CHOOSE 有点奇怪;无论出于何种原因,在最新版本的表格中,谷歌员工已经取消了在第一个参数中迭代数组的能力。您列出的所有这些 CHOOSE 示例都将在旧版本中用作数组公式(尽管您只需要一个 ArrayFormula 函数)。

对于您的具体示例,我认为您的最终公式是最好的。但是如果你想复制以下的预期效果:

=ArrayFormula(CHOOSE(range,"element 1","element 2",...))

你可以使用这个看起来很奇怪的解决方法:

=ArrayFormula(HLOOKUP("element 1",{"element 1";"element 2";...},range,0))

【讨论】:

  • 在我尝试的最后一个公式中:=ArrayFormula(HLOOKUP("1 Sun",{"1 Sun","2 Mon","3 Wed", "4 Thur", "5 Fri" , "6 Sat"}, I2:I, 0)) =ArrayFormula(HLOOKUP("1 Sun",{"1 Sun","2 Mon","3 Wed", "4 Thur", "5 Fri", "6 Sat"}, weekday(I2:I), 0)) =ArrayFormula(HLOOKUP(WEEKDAY(I2:I),{"1 Sun","2 Mon","3 Wed", "4 Thur", " 5 Fri", "6 Sat"}, I2:I, 0)) 两者都返回了“HLOOKUP 计算结果超出范围”。错误。
  • 我也试过 =ArrayFormula(VLOOKUP(WEEKDAY(I2:I),{{1,"1 Sun"},{2,"2 Mon"},{3,"3 Wed"} , {4, "4 Thur"}, {5,"5 Fri"}, {6,"6 Sat"}}, 1, 0))
    返回 N/A “未找到值 '2'在 VLOOKUP 评估中。”我将如何表达该查询?
  • 对于HLOOKUP,您需要在嵌入数组中使用分号(大括号内的位) - 参考答案
  • 哦,第二个是正确的格式(第三个参数中使用了工作日)
  • 对于 VLOOKUP,使用 {{1,"1 Sun"};{2,"2 Mon"};...}
【解决方案2】:

使用 arrayformula 以这种方式集中公式。可以使用&进行组合,如下图:

=arrayformula({B2:B8&text(E2:E8,"ddd")})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2021-10-29
    • 2021-10-10
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多