在 Google 表格中过滤、索引、匹配

Filter, Index, Match in Google Sheets

提问人:Sarah Savoy 提问时间:3/11/2023 最后编辑:halferSarah Savoy 更新时间:3/11/2023 访问量:144

问:

我试图了解出了什么问题,但我在这方面很糟糕,并试图学习。我需要“发票”表来创建学生在上午和下午在场的日期列表,作为学校前/后护理的临时人员。因此,我需要匹配名称,然后在其下方的单元格中列出带有 P 的列日期。看一下就更容易理解了。https://docs.google.com/spreadsheets/d/1Sd_rTMoKlngcwx8ORyzM7JyK_0Uy8CQYqrMo12eDLlQ/edit?usp=sharing

我以前用 Filter、Index 和 Match 做过类似的事情,但它是在转置公式中,我觉得我不小心让它工作了。现在我不明白为什么这不起作用。

我已经看过很多已经审查过的建议问题,要么它们不是我需要的,要么我没有足够的理解来适应我自己的需求。接下来我可以尝试什么?

Google-Sheets 索引 过滤条件 匹配 转置

评论

0赞 halfer 3/11/2023
涉及公式的电子表格在这里是主题(因为它们更像是编程)。但是,麻烦公式的细节需要在问题本身中。这样做的原因是,如果一个问题依赖于在线工作表,那么一旦给出有效的答案,工作表就会被修复,然后这个问题对未来的读者来说将不再有意义。我们希望在这里提出问题(和答案),人们可以从中学习多年。你能编辑问题以显示公式吗?(链接很好,只要问题不完全依赖于它)。谢谢!
0赞 halfer 3/11/2023
作为电子表格公式的一般提示,有时添加额外的列会有所帮助,以便可以将复杂的公式分解为多个部分,而不是一次性完成所有操作。这有助于调试公式出错的位置。

答:

1赞 rockinfreakshow 3/11/2023 #1

您可以在选项卡中尝试这些Invoicing

单元格 M2

=byrow(A2:A,lambda(z,if(z="",,ifna(join(", ",filter('Drop-In AM Attendance'!GD4:HE4,filter('Drop-In AM Attendance'!GD5:HE,'Drop-In AM Attendance'!A5:A=z)="P"))))))

细胞 N2

=byrow(A2:A,lambda(z,if(z="",,ifna(join(", ",filter('Drop-In PM Attendance'!GD4:HE4,filter('Drop-In PM Attendance'!GD5:HE,'Drop-In PM Attendance'!A5:A=z)="P"))))))

enter image description here

评论

0赞 Sarah Savoy 3/11/2023
这是完美和惊人的。非常感谢!我不知道你做了什么,但我会一点一点地观看视频,试图弄清楚。谢谢!
0赞 BigRed 3/11/2023 #2

使用筛选和匹配是正确的。我认为在这种情况下,偏移量比索引更容易使用。

=ifna(join(", ",FILTER('Drop-In AM Attendance'!$GD$4:$HE$4,offset('Drop-In AM Attendance'!$GD$4:$HE$4,match(A2,'Drop-In AM Attendance'!$A$5:A,0),0)="P")),"None")

让我们先看一下偏移量

offset('Drop-In AM Attendance'!$GD$4:$HE$4,match(A2,'Drop-In AM Attendance'!$A$5:A,0),0)

这是说将 AM 考勤表中的单元格 GD4:HE4 向下移动一定数量的行。行数由哪一行与单元格 A2 匹配决定。因此,这将返回 A2 中显示的学生的 AM 考勤表行。

现在,过滤器:

FILTER('Drop-In AM Attendance'!$GD$4:$HE$4,offset('Drop-In AM Attendance'!$GD$4:$HE$4,match(A2,'Drop-In AM Attendance'!$A$5:A,0),0)="P")

这就是说,取 $GD$4:$HE$4 中的日期,找到我们从偏移量返回的行等于“P”的日期。默认情况下,每个日期都将在新单元格中返回。这就是 JOIN() 函数的原因。

JOIN() 获取学生所有带有“P”的日期,并用“、”分隔它们(在它们之间添加逗号和空格,并将它们缩小为一个单元格)。

最后,IFNA() 函数表示,如果存在 #N/A 错误(如果学生没有日期删除,就会发生这种情况),则返回“无”而不是错误。

您可以简单地为所有学生向下拖动此公式,然后对 PM 执行相同的操作:

=ifna(join(", ",FILTER('Drop-In PM Attendance'!$GD$4:$HE$4,offset('Drop-In PM Attendance'!$GD$4:$HE$4,match(A2,'Drop-In PM Attendance'!$A$5:A,0),0)="P")),"None")

Sample Output