首页 > 解决方案 > 在excel中为工作时间表制作动态时间卡

问题描述

也许我在问一个非常基本的问题,但我在这里(和其他网站)搜索过答案,但找不到。

我正在 Google 表格上为我的工作场所制定工作时间表,类似于此处以图片形式发布的示例,其中包括每个工人的自动考勤卡(即,回答“哪几天有 [工人]工作了吗?”)。

我设法用过滤器公式制作了一个

=FILTER(A2:A16;{or(COUNTIF(B2:D2;$L$1);COUNTIF(F2:H2;$L$1));or(COUNTIF(B3:D3;$L$1);COUNTIF(F3:H3;$L$1));or(COUNTIF(B4:D4;$L$1);COUNTIF(F4:H4;$L$1));or(COUNTIF(B5:D5;$L$1);COUNTIF(F5:H5;$L$1));or(COUNTIF(B6:D6;$L$1);COUNTIF(F6:H6;$L$1));or(COUNTIF(B7:D7;$L$1);COUNTIF(F7:H7;$L$1));or(COUNTIF(B8:D8;$L$1);COUNTIF(F8:H8;$L$1));or(COUNTIF(B9:D9;$L$1);COUNTIF(F9:H9;$L$1));or(COUNTIF(B10:D10;$L$1);COUNTIF(F10:H10;$L$1));or(COUNTIF(B11:D11;$L$1);COUNTIF(F11:H11;$L$1));or(COUNTIF(B12:D12;$L$1);COUNTIF(F12:H12;$L$1));or(COUNTIF(B13:D13;$L$1);COUNTIF(F13:H13;$L$1));or(COUNTIF(B14:D14;$L$1);COUNTIF(F14:H14;$L$1));or(COUNTIF(B15:D15;$L$1);COUNTIF(F15:H15;$L$1));or(COUNTIF(B16:D16;$L$1);COUNTIF(F16:H16;$L$1))}=TRUE)

这是A2:A16使用手动数组列过滤的日期列,该列检查是否每一行B:D(表示上午班次)或每一行F:H(下午班次)都包含工人的姓名$L$1

这不是最佳解决方案,因为我必须以非常耗时且不灵活的方式手动编写数组(向轮班添加另一列/另一名工人意味着我必须更正每一行)。

还有其他更好的方法来使用 FILTER 吗?到目前为止,我一直在尝试使用 MATCH 或 HLOOKUP,但我是一个菜鸟,对 excel 数组不太熟悉。

工作时间表示例

标签: google-sheetsspreadsheet

解决方案


在您的单元格中发布此公式K2

=query(
  {{A2:A\B2:D};{A2:A\F2:H}}; 
  "select Col1 where Col2 = '"&L1&"' or Col3 = '"&L1&"' or Col4 = '"&L1&"'"
)

它将与您的工作人员一起动态工作:

在此处输入图像描述


推荐阅读