【问题标题】:When using the indirect function it does not move data down with it使用间接函数时,它不会随其向下移动数据
【发布时间】:2015-08-28 13:55:31
【问题描述】:

我的工作簿中有一个后端数据,工作表称为“任务列表”。这只是此工作表 A 列中列出的任务列表。

然后我有 4 个单独的工作表,它们使用 =indirect("'Task List'!A"&ROW()-5) 函数和这 4 个工作表引用这些任务。我的问题是,在 4 张工作表中,每一行都有一个与之配套的数据列表,因此当在“任务列表”工作表中添加新任务(在单元格之间添加)时,数据不会随着任务向下移动,相反,数据保持不变,而只是任务列表向下移动...为了更清楚地解释,我在下面显示了这一点:

Task List               Data Sheet 1   Data Items
task 1                  Task 1         Data 1
task 2                  Task 2         Data 2 
task 3                  Task 3         Data 3
task 4                  Task 4         Data 4
task 5                  Task 5         Data 5

现在插入新任务时......

Task List                  Data Sheet 1             Data Items
task 1                     task 1                   Data 1
task 2                     task 2                   Data 2
NEW TASK INSERTED HERE     NEW TASK INSERTED HERE   Data 3
task 3                     task 3                   Data 4
task 4                     task 4                   Data 5
task 5                     task 5                   BLANK

如您所见,示例中的数据保留在上方。有什么方法可以使数据通过间接函数移动,或者有更好的方法吗? - 以这种方式构建工作表的原因是任务列表中的任务必须分成 5 个工作表,这样可以节省在必须添加新任务时将任务复制到每个工作表的时间。

【问题讨论】:

  • '使用间接函数移动数据'意味着不要使用 INDIRECT,只需使用常规直接引用。 INDIRECT,按照您的布局方式,始终指向 网格位置,而不是唯一的“单元 ID”。
  • 这是我在您解决的其他帖子中遇到的问题,如果我使用直接引用并且您将任务添加到任务列表中,它不会在任务列表中包含新任务
  • 这基本上是权衡 - 如果您希望一个单元格引用一个确切的“单元格 ID”,您需要使用直接引用。即使添加或删除了一行,这也会将其锁定在“正确”单元格上。如果您插入一行并想在另一张工作表上说明它,则需要在其中插入一行并复制公式来说明它。请参阅下面我可能的解决方案,它允许您对唯一 ID 使用 INDIRECT 引用,并使用 INDEX/MATCH 为给定任务名称提取适当的信息。

标签: vba excel


【解决方案1】:

如果您致力于使用 INDIRECT 方法来引用单元格,请考虑添加一种方法来索引您的数据并根据任务名称提取其他列。

例如 - 假设在所有工作表中,A 列包含唯一的任务名称。

在数据项选项卡的 B 列中,如果您想从其他工作表中提取与 A 列中唯一任务名称相关联的数据,您可以按如下方式进行操作 [显示为 B2]:

=INDEX(Sheet1!B:B,MATCH(A2,Sheet1!$A:$A,0))

如果您将其复制下来,它将自动按该顺序拾取所有单元格,并与唯一 ID 匹配,该 ID 使用 INDIRECT 引用始终指向给定的 Grid 引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多