我正在尝试自动化一些任务管理流程,但我没有成功。我不能使用宏或类似的,只是公式,而且我不擅长电子表格黑客攻击。
无论如何,这是我的工作簿,其 ** 表 ** :
**Form**
TASK LI DE X
Test 1 3
Test2 2
**LI**
WEEK TASK COMPLETED
1 Test
2 Test
2 Test *
4 Test2 *
**DE**
WEEK TASK COMPLETED
1 Test *
我一直想做的是:
对于此示例,为了更改X,TASK必须在工作表中带有*。例如,如果在Form上,Test在LI和DE中有数字,而Test在LI表中有*,而在DE表中没有,则X必须保持为空。但是如果它们都带有*,那么X必须加载LI和DE之间更大的WEEK。
如果我要用宏来做,我只需要用循环检查每一列,但是使用公式我想嵌套的IF就足够了。
我尝试过VLOOKUP,但它只接受数组中的第一项,虽然顺序无关紧要,但通常(我认为我会将此作为策略)是最后一个值。
有任何疑问,请告诉我!我希望我明白我的问题。
非常感谢你!
答案 0 :(得分:2)
我认为你可以用公式来做,但是你必须循环,你将需要SUMPRODUCT或数组公式。
以下是您可以尝试的公式(使用 Ctrl Shift 输入进行验证):
=MAX((LI!$C$2:$C$5="*")*(LI!$A$2:$A$5)*(LI!$B$2:$B$5=Form!A2),(DE!$C$2:$C$5="*")*(DE!$A$2:$A$5)*(DE!$B$2:$B$5=Form!A2))
一些解释:
MAX
公式将找出两个祭司的两个ARRAY FORMULA之间的最大值(LI!$C$2:$C$5="*")
检查第三列中是否有明星(LI!$A$2:$A$5)
将返回周数(LI!$B$2:$B$5=Form!A2)
将检查任务是否相同我希望我很清楚你打算做什么:)
[编辑]再次尝试感谢您的评论(这两项任务都应该完成才能显示)
=IF(AND((LI!$C$2:$C$5="*")*(LI!$A$2:$A$5)*(LI!$B$2:$B$5=Form!A2),(DE!$C$2:$C$5="*")*(DE!$A$2:$A$5)*(DE!$B$2:$B$5=Form!A2))),MAX((LI!$C$2:$C$5="*")*(LI!$A$2:$A$5)*(LI!$B$2:$B$5=Form!A2),(DE!$C$2:$C$5="*")*(DE!$A$2:$A$5)*(DE!$B$2:$B$5=Form!A2)),"")