Excel 电子表格多公式mashup

Excel 电子表格多公式mashup,excel,spreadsheet,excel-formula,worksheet-function,Excel,Spreadsheet,Excel Formula,Worksheet Function,我试图自动化一些任务管理流程,但没有成功。我不能使用宏或类似的东西,只能使用公式,而且我不擅长电子表格的破解 不管怎么说,这是我的工作手册,有它的**工作表**: **Form** TASK LI DE X Test 1 3 Test2 2 **LI** WEEK TASK COMPLETED 1 Test 2 Test 2 Test * 4 Test2 * **DE** WEEK

我试图自动化一些任务管理流程,但没有成功。我不能使用宏或类似的东西,只能使用公式,而且我不擅长电子表格的破解

不管怎么说,这是我的工作手册,有它的**工作表**

**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  *
我一直想做的是:

  • 在表单上,检查li或DE中的哪个列>0
  • 对于每个>0的任务,检查其各自的工作表(li或DE)上是否存在任务
  • 如果有,请检查它是否有*
  • 如果有*,则取该行的周数,将其与另一张工作表中的周数进行比较,取较大的数字,并将其加载到表单上任务的X列中。这里的顺序并不重要。我只需要带*的那一周
在本例中,为了使X发生更改,任务必须在其所在的工作表中带有*。例如,如果在表单上,Test在LI和DE中有数字,并且Test在LI表中有一个*而在DE表中没有,那么X必须保持为空。但如果两者都带有*,则X必须在LI和DE之间加载更大的一周

如果我使用宏,我只需使用循环检查每一列,但我认为使用公式嵌套IFs就足够了

我试过使用VLOOKUP,但它只接受数组中的第一个项,虽然顺序不重要,但通常(我想我会将此作为策略)是最后一个值

如果有任何疑问,请告诉我!我希望我把我的问题说清楚


提前非常感谢

我想你可以用公式来做,但由于你必须循环,你需要的是乘积或数组公式

以下是您可以尝试的公式(使用CtrlShift Center验证):

一些解释:

  • MAX
    公式将在两个工作表的两个数组公式之间找到最大值
  • 数组公式的工作原理类似于多循环测试:
    • (li!$C$2:$C$5=“*”)
      检查第三列中是否有星号
    • (li!$A$2:$A$5)
      将返回周数
    • (li!$B$2:$B$5=Form!A2)
      将检查任务是否相同
我希望我能很好地理解你的意图:)

[编辑]由于您的评论,请再次尝试(两项任务都应完成才能显示)


怎么。。。!如果只是阅读“公式”的描述,我永远不会找到答案。非常感谢你!出于好奇,如果其中一个数字为假,是否有办法打破最大值(使单元格保持为空)?我的意思是,就像我说的,如果任务分配给两张工作表,两张工作表都必须有带*的任务,否则X列应该保持为空。再次感谢!我正在阅读更多关于数组公式的内容。太好而不真实,太晦涩而不为人所知。谢谢你的提示!我已经添加了另一个尝试,但我无法在这里测试(也许明天)。告诉我这是否更有效。对于和,我必须对每个逻辑成员单独使用MAX,否则它将只计算第一个任务匹配表单的周值!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))
=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)),"")