我正在尝试创建一个公式,根据单元格中的值使用不同的工作表。所以我的基本公式是 =TRIM('5'!U103:U198)。在这里,我从名为 5 的工作表中获取所需的信息。
我有 31 个工作表,名为 1-31。有没有办法让我在单元格中输入所需工作表的编号,然后公式会自动更改,然后我就可以获取所需工作表中的信息?我尝试使用选项 INDIRECT > INDIRECT("'"&sheet&"'!"&name),但无法正常工作。
有什么办法可以做到这一点吗?
答案1
您尝试的公式中的“名称”不能表示“某个有效的单元格、范围、地址”,因为在这种情况下您的公式才会起作用。
所以我猜测,你所说的“名字”是指命名范围。
因此,请考虑您告诉 Excel 做什么。它Refers to
从命名范围中寻找值。这通常是输入的内容=A1:A2
,然后对其进行评估,并返回到 Excel 正在执行的操作。
但是,使用 时INDIRECT
,需要为其提供一个字符串,该字符串最终将变成有效的单元格或范围地址。它可以识别并查找的内容。但定义命名范围时通常的想法是,=A1:A2
它根本不是字符串,而是实际范围。然后,Excel 会查看该范围的位置并找到那里的内容,然后将其作为字符串呈现给INDIRECT
。这可能会导致简单的 #REF 错误,但是,如果它提供的字符串INDIRECT
确实指向某个有效字符串(可以解释为地址的字符串),则结果实际上可能是一个看似有效的返回,完全隐藏了它严重失败的事实。
那么,该怎么办呢?视情况而定。对于这两种基本情况,首先,您必须将Refers to
要使用的任何命名范围输入到字符串中。最明显的方式是当您有一个地址时,就像=A1:A2
我上面提到的那样。只需将其更改为字符串: ="a1:a2"
即可。(请注意,我使用了小写字母,以便引起人们的注意,他们看到的不是“真实”地址(因为 Excel 会将字母大写)...可能会有所帮助,不会有害,所以...)
但是,您可能有一个公式,旨在使您寻找的范围(或单元格)“动态化”。在这种情况下,您必须在那里保留一个公式……因此,在您这里的单元格公式中,您需要做更多的事情。您必须更改公式以从动态创建的范围中生成字符串。由于您可能有多种创建该范围的方法,因此解决这个问题会有点复杂,所以我不会解决这个问题。(这将是一个不错的新问题,但如果您这样做,请务必包含一整套材料。缺少一个部分,答案对您没有任何帮助。)
不过,我敢打赌,您遇到问题的另一个主要方式是我上面提到的第二个问题。那就是,您已经解决了所有问题,一切都很好,只是您想在单元格中输入命名范围名称,而不是在公式中。如果您在其定义中有一个真正的字符串,则直接在公式中使用它就可以了,但是如果您在某个单元格中输入它(例如,一个用于工作表名称的单元格和一个用于您为每个工作表定义的任意数量的此类范围之一的单元格),您会发现它不行。
这个问题可以在公式中解决,但需要付出相当大的努力。不过,您可以在输入名称的单元格中做一件简单的事情:只需以 开头输入=
。因此,如果命名范围是horse
,请输入=horse
,而不是horse
直接输入。全部完成,问题解决。是的,这看起来不太自然,因为通常不需要输入等号,但这是一件小事,对许多人来说,可能不难习惯。毕竟,如果他们忘记了,他们应该看到错误,因此可以轻松地立即补救。它不会在评估全是错误的结果时迷失,因为......不会有结果。