【问题标题】:OFFSET / INDIRECT function troubleOFFSET / INDIRECT 功能故障
【发布时间】:2017-12-14 08:10:12
【问题描述】:

我的工作簿中有两张纸,第一张有几千行费用,按个人分开,第二张是总计等的摘要。

在第二张表中,我创建了对第一张表的引用以插入每个人的姓名(即 B4: ='Card Transactions'!D89)。我在返回每个人总数的语法时遇到了困难,该总数位于第一张表中相对于名称的可预测单元格中(向下 1,右侧 7)。

我尝试了以下方法: =offset(indirect(B4),1,7) 只返回一个参考错误。这似乎应该相对简单,但我没有任何运气。 . .有什么建议吗?

【问题讨论】:

  • ='Card Transactions'!K90 落后 7 杆。
  • 完全正确:我希望在第二张纸上将人员的总数列在他们的姓名旁边。
  • 所以将该公式放入 C4 中。 B4 的公式是一个单元格,为什么这个不能是那个?
  • 偏移公式是我在 C4 中尝试过的。它不工作
  • 没有我在第一条评论中给你的公式。

标签: excel


【解决方案1】:

使用这个:

=OFFSET(INDIRECT(MID(FORMULATEXT(B4),2,300)),1,7)

注意:

  • 仅当 B4 中的公式仅包含一个单元格引用时才有效。
  • 这是一个不稳定的函数,如果使用太多次会导致计算明显滞后。

【讨论】:

  • @jay 请点击答案旁边的复选标记标记为正确。
  • @ScottCraner 当我看到你的照片被改成带帽子的笑脸时,我真的很开心。
  • 如果我将字符数从 300 减少,功能延迟会减少吗?
  • @jay 不,不是 MID() 造成了滞后。 INDIRECT 和 OFFSET 是可变函数。
【解决方案2】:

只要您的数据遵循这些规则,以下内容应该适合您:

  • 您的列有标题
  • 名称都在同一列中
  • 您可以使用行号设置范围,而不仅仅是整列

假设您的第一张工作表是这样设置的:

你想要第二张这样的表格

你的工作表被命名为:

  • 表 1
  • 表 2

这是Sheet2的B2中的公式: =INDEX(Sheet1!$A$1:$H$9,MATCH(A1,Sheet1!$A$1:$A$9,0)+1,MATCH("Column 8",Sheet1!$A$1:$H$1,0))

它的作用如下:

  • 您的索引数组是整个蓝色区域,可以是整个工作表但不能是完整的列引用,必须指定行号。在此示例中,索引数组为$A$1:$H$9$ 符号表示当您向下拖动公式时范围不会移动,因此它们很重要!
  • 您的第一个匹配项找到行号,它使用名称(在本例中为“bart”)作为查找值,并将紫色区域作为数组。在此示例中,行数组为 $A$1:$A$9行号必须与索引数组中的行号匹配。匹配的末尾有一个“+1”,因此它会找到匹配的行,然后向下添加一行以获得您的偏移量。
  • 您的第二个匹配项找到了列号,它需要使用您的列名。在此示例中,列数组为 $A$1:$H$1列字母必须与索引数组中的列字母匹配

如果这不适合您的问题,请告诉我,我相信我们可以解决。

谢谢。

【讨论】:

  • 这很有帮助,感谢您的建议 - 此特定工作表中的数据不像您在此处列出的那样位于数组中 - 但我知道这对我在其他地方会派上用场。 . .
猜你喜欢
  • 2012-10-31
  • 1970-01-01
  • 2011-06-26
  • 2015-07-25
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
相关资源
最近更新 更多