【问题标题】:Find the last instance of a value in a row查找一行中某个值的最后一个实例
【发布时间】:2020-09-01 07:46:10
【问题描述】:

我正在制作一个表格来按人员和任务跟踪项目,有点像this

我有一个单独的表格,看起来像 this

基本上,我想在第二个表的“最新任务”列中编写一个公式,该公式将找到给定项目的人名的最后一个实例,并返回任务名称。 所以对于这个例子,它会在第一个表中查找 ProjectB,找到带有 Joe 的最后一行 (ROW 1) 并返回任务名称 (Task1 )。

在我的研究中,我遇到了这个解决方案:

=MAX(
     INDIRECT(CONCATENATE(ADDRESS(MATCH([@Project],Table1[Project],0)+1,1),":",ADDRESS(MATCH([@Project],Table1[Project],0)+1,7)))=[@Person],
     COLUMN(INDIRECT(CONCATENATE(ADDRESS(MATCH([@Project],Table1[Project],0)+1,1),":",ADDRESS(MATCH([@Project],Table1[Project],0)+1,7)))) -
     MIN(INDIRECT(CONCATENATE(ADDRESS(MATCH([@Project],Table1[Project],0)+1,1),":",ADDRESS(MATCH([@Project],Table1[Project],0)+1,7)))))

但它似乎不起作用,我不知道为什么不。

感谢任何帮助:)

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    尝试以下方法:

    K2中的公式:

    =LOOKUP(2,1/(INDEX(Table1[[Task1]:[Task6]],MATCH([@Project],Table1[Project],0),0)=[@Person]),Table1[[#Headers],[Task1]:[Task6]])
    

    【讨论】:

    • 我检查过(因为我使用的是德语版本)及其#Headers
    • Hej,谢谢,这似乎可以解决问题!如果您有时间,我很想知道 为什么 有效 :)
    • @AnžeOberčMrzel, LOOKUP 是一个数组函数,我们尝试在布尔表达式中查找值 2。由于这不会发生,它将返回最接近的值,即 1。然后我使用 INDEXMATCH 来获取要使用的正确数据。一个提示是逐步测试评估中的公式并检查它的实际作用 =)
    • @JvdV 谢谢! LOOKUP 是我没有真正使用过的,所以我对 2, 1/ 位感到困惑,其余的我都很熟悉。总是很高兴学到新东西
    • 另外,它会返回 last 出现的 1 =)
    【解决方案2】:

    这不是最漂亮的公式,但它确实有效。把它放在第二个表最新任务中:

    =INDEX(Table1[#Headers],AGGREGATE(14,6,COLUMN(INDEX(Table1[Project],MATCH([@Project],Table1[Project],0)):INDEX(Table1[Task6],MATCH([@Project],Table1[Project],0)))*([@Person]=INDEX(Table1[Project],MATCH([@Project],Table1[Project];0)):INDEX(Table1[Task6],MATCH([@Project],Table1[Project],0))),1)-1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 2010-10-06
      • 2018-02-12
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多