Excel 2013 - 通过表名动态引用表

Excel 2013 - 通过表名动态引用表

TLDR

我正在寻找有关如何在公式中按名称动态引用表格的信息。明确地说,我指的是实际的表格对象,而不是命名的范围,我想根据单元格的值来选择要从哪个表格中选择。

详细描述

我正在处理一系列具有通用格式的表格(例如,列名:[Level]、[Feature]、[Notes] 等。

每个表都有一个独特的、有意义的名称:[牧师]、[战士]、[德鲁伊]等。

我想允许用户在单元格中输入给定表的名称,然后使用 INDEX-MATCH 提供有关该表的信息以供其他计算使用。

例如:=INDEX(<??TableName??>, MATCH(Character.Level, <??TableName??>[Feature], 0), 2)

有没有什么方法可以在不借助代码或自定义插件的情况下实现这一点?

我确实看到了这样的选项:将其制作成一个大表,其中包含所有单独的表以及一个附加列(例如 [class]),然后动态地将该表的信息复制到第二个表并在那里执行查找,但这似乎很笨拙。

是的,对于那些好奇的人来说,我正在为 DnD 第 5 版制作基于 Excel 的角色表。我想在 OGL 标准出台时准备好数学运算。

感谢您的时间。我只能定期检查答案,但我希望在周末完成。

答案1

我假设您对 Excel 表格和公式有所了解,如果这样应该会有所帮助:

http://www.cpearson.com/excel/indirect.htm

INDIRECT 用于创建引用动态地。由于表名只是一个引用,所以这将起作用。简单示例:

使用 INDIRECT 引用 Excel 中的表格的示例

答案2

您可以使用嵌套的 IF 函数,但这很麻烦。另一种选择是使用 INDIRECT。如果您将它与 CONCATENATE 一起使用,您几乎可以完成您想要的操作。

=INDEX(INDIRECT(A12),MATCH(B12,INDIRECT(CONCATENATE(A12,"[Level]")),0),2)

见截图:

在此处输入图片描述

相关内容