首页 > 解决方案 > 如何根据其他 2 个标准设置单元格的值

问题描述

我有一个这样的 Excel 选项卡。

它为我提供了有关工人计划何时开始生产产品的信息。

我的输入表的列是:

Product Number, Dummy column, Dummy column, Worker ID, Starting Date, Ending Date

我的输入表中的行是:

Product 1,xyz,xyz,Worker 1,13/08/2018 13:50,20/08/2018 15:30
Product 1,xyz,xyz,Worker 2,08/08/2018 03:50,16/08/2018 08:30
Product 1,xyz,xyz,Worker 9,23/08/2018 08:08,03/09/2018 10:00
Product 2,xyz,xyz,Worker 4,10/08/2018 13:50,27/08/2018 15:30
Product 2,xyz,xyz,Worker 9,18/08/2018 03:50,20/08/2018 08:30
Product 3,xyz,xyz,Worker 2,13/08/2018 08:08,13/09/2018 10:00

我的结果表应该有:

结果选项卡中的值应显示给定工人和工人开始工作的产品的给定日期。因此,如果此时 workerX 尚未开始处理产品,则该单元格可能为空。

您知道如何在 Excel 中解决这个问题(或者如果在 Excel 中不可能,则使用 Access)?

标签: vbaexcelms-accessexcel-formula

解决方案


在 A 列中传输您的数据。

在单元格 C2 到 C20 中,键入工人 Worker 1、Worker 2 等的名称,其方式与数据中显示的方式相同。

在第 1 行中,输入日期,从单元格 D1 开始。

在我的示例中,单元格 D1 是 2018 年 8 月 7 日,E1 是 2018 年 8 月 8 日。...</p>

在单元格 D2 中,输入以下数组公式

=IF(MAX(IFERROR(FIND($C2&","&TEXT(D$1,"dd/mm/yyyy"),$A$1:$A$1000,1),0))=0,"-","是的”)

使用Control + Shift + Enter 输入数组公式,而不是 Enter。

将公式拖到所需的单元格中。如果工人在特定日期开始了项目,则结果将为“是”,如果工人在特定日期没有开始任何项目,则结果将为“-”。

根据需要更改单元格引用。

代替“是”,如果您想获取产品详细信息作为结果,请在单元格 D2 中使用以下数组公式

=IFERROR(LEFT(IF((MAX(IF(IFERROR(FIND($C2&","&TEXT(D$1,"dd/mm/yyyy")),$A$1:$A$1000,1),0)>0 ,ROW($1:$1000),"-")))=0,"-",INDEX($A$1:$A$1000,(MAX(IF(IFERROR(FIND($C2&","&TEXT(D$1, "dd/mm/yyyy"),$A$1:$A$1000,1),0)>0,ROW($1:$1000),"-"))),1)),FIND($C2,IF( (MAX(IF(IFERROR(FIND($C2&","&TEXT(D$1,"dd/mm/yyyy"),$A$1:$A$1000,1),0)>0,ROW($1:$1000) ,"-")))=0,"-",INDEX($A$1:$A$1000,(MAX(IF(IFERROR(FIND($C2&","&TEXT(D$1,"dd/mm/yyyy" ),$A$1:$A$1000,1),0)>0,ROW($1:$1000),"-"))),1)),1)-2),"-")

请让我知道这是否是您想要做的。

问候,

维杰库马尔·谢蒂,

电子表格卓越,

印度果阿邦帕纳吉


推荐阅读