根据特定单元格值在列中提取数据

时间:2018-03-19 08:51:42

标签: excel excel-vba excel-formula array-formulas vba

https://www.dropbox.com/s/zag18z5f13fugn3/Coverlog%20Rota.xlsm?dl=0

您好

需要一点帮助。尝试了几种方法,但似乎无法让它发挥作用。

以下是我使用的论坛:

足够公平。以下是我使用的公式。

=INDEX('Cover LOG'!$E$1:$AR$89,MATCH(A3,'Cover LOG'!$C:$C,0),MATCH($B$1,'Cover LOG'!$E$1:$AR$1,0)*2)

它适用于第一个日期,但是当它到达第二个日期时,最后四个列会返回 #REF!

当它进入第三个日期时,这次最后六列带回 #XREF!

Sample of error

我已将该文件上传到链接上,因为这是我完全解释它的唯一方法。

基本上当日期在 FC Dash 的顶部发生变化时,我希望 Cover LOG 中的相关列能够通过。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

问题可能是其中一个Match函数不匹配,因此Index函数失败。或者列/行超出Index函数中的给定范围。

因此,您需要逐步评估您的公式:

  1. 选择要评估的单元格。一次只能评估一个单元格。
  2. 公式标签上的公式审核组中,点击评估公式
  3. 点击评估以检查带下划线的参考的值。评估结果以斜体显示。

    如果公式的下划线部分是对另一个公式的引用,请单击单步执行以在评估框中显示其他公式。点击 Step Out 返回上一个单元格和公式。

  4. 继续,直到评估公式的每个部分。
  5. 更多信息:Evaluate a nested formula one step at a time

    通过评估,您可以看到函数的哪个部分返回了哪个值。因此,您可以轻松查看哪个Match函数返回一个值,哪个函数因为不匹配而失败。

    调试结果的说明:

    =INDEX('CoverLOG'!$e$1:$AR$89,3,68)
    

    上述Index公式表示工作表row 3中的范围column 68获得$e$1:$AR$89CoverLOG

    如果我们现在分析范围$e$1:$AR$89,则89 rows40 columns。您可以使用以下公式对此进行测试:

    =ROWS($E$1:$AR$89)    '=89
    =COLUMNS($E$1:$AR$89) '=40
    

    但您尝试访问的column 68超出了仅40 columns的范围总列数。