我正在尝试创建一个公式来根据选定的复选框和下拉菜单中的值执行查询。然后,格式化要显示的数据,如下所示:
我需要将每栋建筑一天内完成的所有单元分组为一排。但由于我正在创建发票系统,并且每种作业类型的计费方式都不同,因此我需要确保每一行上只有 1 种作业类型。
但不知道是否可以用公式实现,这比app Script方便得多。
这是下面共享的电子表格的一部分:
日期 | 客户 | 单元 | 房间 | 工作类型 | 没完成 |
---|---|---|---|---|---|
08/13 | 莫妮卡 | 1号楼 | 1C | dpt | 真的 |
08/13 | 莫妮卡 | 1号楼 | D | dpt | 真的 |
08/13 | 莫妮卡 | 1号楼 | 2 | dpt | 真的 |
08/13 | 莫妮卡 | 1号楼 | 1* | dpt | 真的 |
08/13 | 莫妮卡 | 1号楼 | 3 | dpt | 真的 |
08/13 | 莫妮卡 | 1号楼 | 12 | dpt | 错误的 |
08/13 | 莫妮卡 | 1号楼 | 8 | dpt | 错误的 |
08/13 | 莫妮卡 | 1号楼 | 9 | dpt | 错误的 |
08/13 | 莫妮卡 | 1号楼 | 10 | dpt | 错误的 |
08/13 | 莫妮卡 | 1号楼 | 4 | dpt | 错误的 |
08/13 | 莫妮卡 | 1号楼 | 2 | dpt | 错误的 |
08/13 | 莫妮卡 | 2号楼 | 8 | dpt | 错误的 |
我尝试使用辅助表来实现这一点,但它很混乱,只完成了一半的工作,我将其粘贴,以便您有一个想法,但不要关注它,因为会与共享发生冲突表,我认为不值得您花时间研究它:
辅助表 A2:E
=IF('Units Report'!C4="Yes",filter('Unit Log'!A2:A,NOT(REGEXMATCH('Unit Log'!J2:J,"\!"))),ARRAYFORMULA('Unit Log'!A2:A))
辅助表 AA2:AE:
=sort(let(a,unique({A2:INDEX(A:A,MATCH(3,1/(A:A<>""))),C2:INDEX(C:C,MATCH(3,1/(C:C<>""))),B2:INDEX(B:B,MATCH(3,1/(B:B<>"")))}),map(INDEX(a,,1),INDEX(a,,2),INDEX(a,,3),lambda(y,z,f,{to_date(y),f,z,join(", ",filter(D:D&IF(LEN(E:E)," ("&E:E&")",),A:A&C:C&B:B=y&z&f)),join(", ",filter(D:D,A:A&C:C=y&z))}))))
单位报告 E2:
=QUERY('Helper sheet'!AA2:AG,
"select "&IF(A4="Yes","AA","AA")&
" where "&IF(A4="Yes","AA","AA")&" is not null"&
IF(A2<>""," and AA >= date '"&TEXT(A2,"yyyy-mm-dd")&"'","")&
IF(C2<>""," and AA <= date '"&TEXT(C2,"yyyy-mm-dd")&"'","")&
IF(A6=True,," and AB matches '"&TEXTJOIN("|",TRUE,A7:A)&"'")&
IF(C6=True,," and AC matches '"&TEXTJOIN("|",TRUE,C7:C)&"'")
)
我可以分享一个更完整的电子表格,但为了节省您的时间,我只分享了我的一个具体疑问,所以我可以尝试自己完成其余的工作。