文件: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))))
.
笔记:
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 & " )") ,""))
.
优点
缺点
同样,我喜欢输出,但是我真的不喜欢第二个辅助表(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
第三个也是最终版本
另请查看选项卡Meta
和Schedule
差异。
注:绿色为旧数据,红色为新数据
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句