【问题标题】:Spreadsheet multiple formulas mashup电子表格多个公式混搭
【发布时间】:2011-09-21 14:43:39
【问题描述】:

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

不管怎样,这是我的工作簿,里面有它的**工作表**

**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)上是否存在 TASK。
  • 如果存在,请检查它是否有 *。
  • 如果它有 *,则取该行的 WEEK 编号,将其与另一张表中的 WEEK 进行比较,取较大的数字,并将其加载到 Form 上 TASK 的 X 列中。这里的顺序并不重要。我只需要带有 * 的那一周。

对于此示例,要更改 X,TASK 必须在其所在的工作表中带有 *。例如,如果在 Form 上,Test 在 LI 和 DE 中有数字,并且 Test 在 LI 表中有 *,但在 DE 表中没有,则 X 必须保持为空。但如果两者都带有 *,则 X 必须加载 LI 和 DE 之间较大的 WEEK。

如果我用宏来做,我会简单地用一个循环检查每一列,但我认为使用公式嵌套 IF 就足够了。

我尝试过使用 VLOOKUP,但它只取数组中的第一项,虽然顺序无关紧要,但通常(我认为我会将此作为政策)最后一个值。

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

非常感谢您!

【问题讨论】:

    标签: excel spreadsheet excel-formula worksheet-function


    【解决方案1】:

    我认为您可以使用公式来做到这一点,但由于您必须循环,您将需要 SUMPRODUCT 或数组公式。

    这是一个您可以尝试的公式(使用 CtrlShiftEnter 验证):

    =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)),"")
    

    【讨论】:

    • 怎么...!仅仅阅读“公式”描述,我永远不会找到答案。非常感谢你!只是出于好奇,如果其中一个数字是假的,有没有办法打破 MAX(使单元格保持为空)?我的意思是,就像我说的那样,如果任务被分配给两张纸,那么两者都必须有带有 * 的任务,否则 X 列应该留空。再次感谢!
    • 我正在阅读有关数组公式的更多信息。好得令人难以置信,太晦涩难懂。感谢您的提示!
    • 我已经添加了另一个尝试,但我无法在这里测试它(也许明天)。告诉我这是否效果更好。
    • 对于 AND,我必须对每个逻辑成员单独使用 MAX,否则它只会评估第一个 TASK 匹配 Form!A2 的 WEEK 值。我会继续测试。逻辑应该没问题(只返回带有 * 的那个),但由于某种原因,它没有。无论如何,就目前而言,与成员中的 MAX 似乎做得很好。我还要测试性能...非常感谢!
    • 只使用公式让一切工作变得一团糟,但您的帮助正是我想要的。至少是我需要的最难找到的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多