将长公式转换为 ARRAYFORMULA

克里斯托弗·鲁辛斯基

文件:https : //docs.google.com/spreadsheets/d/1N4cGw5eUq_3gCJh1w39qVatX9KV1_Hr-AqRHj_nbckA/edit#gid=1770960621


问题

如何将以下简单公式 atSchedule!C20:I29转换为单个简单的 ARRAYFORMULA at Schedule!C20

=Count(Filter(Students!$B$5:$B, Find(C6, Filter(Students!$J$5:$O,Students!$J$4:$O$4 = 'Current Class'!$B$3))))
.

笔记:

  • 上面的代码只是部分解决方案。我会将代码的 ARRAYFORMULA 版本替换为代码的正确部分:Current Class!L6
  • C6上面引用可以在 之间的任何单元格中使用Schedule!C6:I15我已经命名了那个范围Timetable_Code我以为我可以执行以下操作,但我错了...

    =Arrayformula(Count(Filter(Students!$B$5:$B, Find(Timetable_Code, Filter(Students!$J$5:$O,Students!$J$4:$O$4 = 'Current Class'!$B$3)))))

背景

最初,我创建了一个现在位于1st Version - Current Class!L6. 此标签仅供您参考,很快将被删除。每个单元格都有一个稍加修改的公式。这个公式工作正常;然而,它是一个庞然大物,很难修改......

=if(COUNTIF(Meta!$B$5:$B, CONCATENATE("=",if(L$5 = "THURSDAY", "TH", if(L$5 = "SUNDAY", "SU", left(L$5,1))), if(left($K6, 2) = "12", 0, left($K6, 1)))), CONCATENATE(if(L$5 = "THURSDAY", "TH", if(L$5 = "SUNDAY", "SU", left(L$5,1))), if(left($K6, 2) = "12", 0, left($K6, 1)), "     ( ", Count(Filter(Students!$B$5:$B, Find(CONCATENATE(if(L$5 = "THURSDAY", "TH", if(L$5 = "SUNDAY", "SU", left(L$5,1))), if(left($K6, 2) = "12", 0, left($K6, 1))), Filter(Students!$J$5:$O,Students!$J$4:$O$4 = $B$3)))), " )") ,"")
.

优点

  • 我不必创建任何帮助数据。
  • 所有计算都是“内存中”

缺点

  • 太大了
  • 难以修改

我喜欢输出,但我不喜欢缺点,所以我开始创建一个更易于编辑的代码版本,我基本上可以接受。此代码位于Current Class!L6(并且在二次复制Schedule!C33-这将被删除)它有一个单一的式Current Class!L6...

=arrayformula(if(COUNTIF(Meta!$B$5:$B, ("=" & Timetable_Code)), (Timetable_Code & "     ( " & Timetable_StudentCount & " )") ,""))
.

优点

  • 很容易理解
  • 非常容易修改
  • 无需将公式复制到其他单元格

缺点

  • 创建了两 ( 2 ) 个辅助表(我认为其中之一是不需要的)

同样,我喜欢输出,但是我真的不喜欢第二个辅助表(Schedule!C20)。感觉这个表可以去掉,但是一直不知道怎么去掉。

克里斯托弗·鲁辛斯基

从@Sangbok Lee 得到一个很好的答案后,我决定分解他给我的函数的每个部分。在这样做的同时,我发现与我上周在 Google 表格中所做的一些工作之间的联系极不可能。我在另一个标签中的一个帮助专栏做了 Sangbok Lee 试图做的事情。我所要做的就是将该辅助列拆分为两列(1 为之前的最终计算,1 为)并计算额外的计数列

在重新修改我们的两个公式并测试结果后,我找到了一个我更满意的解决方案!

=arrayformula(if(countif(Meta!$B$5:$B, (Timetable_Code)), (Timetable_Code & "     ( " & vlookup(Timetable_Code, StudentCount_Lookup, 2, false) & " )") ,""))
.

查看Google Sheet 中的差异

  • 查看1st Version - Current Class!L6第一个版本的选项卡
  • Current Class!L6第二个版本
  • 寻找Current Class!U6第三个也是最终版本

  • 另请查看选项卡MetaSchedule差异。

注:绿色为旧数据,红色为新数据

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章