Excel:我可以使用没有波动性的文本引用吗?

Excel:我可以使用没有波动性的文本引用吗?

A1包含Namedrange,1,23,3,bla

在行上,我将其拆分为将每个以 分隔的条目放在其自己的单元格中。B1 =LEFT(A1,FIND(",",A1)-1), C1= formula results in 1, D1 = formula results in 23, etc

问题是我想将名称提供给索引函数,因为它不使用间接之类的易失性内容。

有什么办法吗?

=Index(THIS_IS_A_NAME_FFS(B1),1,1)没有波动性?+-VBA 对我来说无所谓。

您建议如何进行此事?

我将使用剩余数字数据的一部分来表示索引应该转到哪一行和哪一列,例如=Index(THIS_IS_A_NAME_FFS(B1),C1,D1)

答案1

如果您想用函数而不是 VBA 编写自己的函数(看起来是这样),那么您需要超越现在的状态。

自从 Excel 4 Macros 出现以来,我们就能够做到这一点,尽管在 Excel 的宏语言时代,我们只是在宏页面上执行此操作。一旦它转移到 VBA,我们仍然可以在命名范围中使用某些宏(并非所有宏在宏页面上下文之外都有意义)(仍然可以),或者,就此而言,只需激活宏语言并仍然使用宏页面,尽管概念是没有实际的宏。毕竟,如果这样做,为什么不使用更好的 VBA 呢?

GET.CELL(41,reference)FORMULATEXT()是您添加之前用来获取公式文本的方法。IFERROR()比 更容易使用ISERROR()。现在LET()我们不必使用辅助命名范围,但由于用户函数中的长度很重要,并且由于在LET()添加长度的定义中添加了开始,所以它会随着您的操作不断变化,不确定它能使事情变得多么简单。

您永远无法Named Range(B1)直接将其作为函数工作。您仍然需要一个IFERROR()包裹它来拦截的故障Named Range(B1),提取参数(在本例中为“B1”),并将使用参数的实际公式作为其故障模式。

实际上,这种并非真正可供任何人大量使用的功能的主要优点LAMBDA()是:1)它将允许您以 Excel 接受参数的所有方式直接输入参数,因此您不必费尽心思提取参数字符串并将其拆分为合理的部分,也不必限制用户只能输入某些类型的参数(例如,单元格与范围,或地址与命名范围等),因为输入所有可能的参数类型的复杂性;2)您再也不需要使用任何 Excel 4 宏函数,EVALUATE()这很好,因为在过去 25 年里,Excel 一直表示它们可以随时永远消失,但现在它只为组织增加了一项功能,即不让其 Excel 席位将这些宏命令带入其信任中心,因此“没有足够多的人使用它们,导致对我们产生足够大的冒犯(并陷入困境,然后事情失败)”,因此我们终于开始了坚定而永久地结束它们。

因此,LAMBDA()它将使一个人的范围更广,既可以接受什么,也可以输出什么,而且编写起来也更容易。最后这一点限制了我多年来只编写了大约 20 次自己的 Function 函数。我敢打赌,我写的每个电子表格(某个期待已久的日子……呃……一年)都会LAMBDA()有几个。或更多。

OURLOOKUP()不过,它们万岁。如果值得的话(我记得20 年前我推出它时老板有多高兴,当时他无法INDEX/MATCH很好地理解并改变VLOOKUP(),并且总是发现使用奇妙的东西VLOOKUP/INDEX几乎同样难以理解。它做了XLOOKUP()今天所做的,只需要三个参数,没有额外的,但它采用了一种非常接近的参数形式VLOOKUP(),他马上就明白了。大多数都是为我做的,很难做,但后来我用简单的结构做了业务需要我做的事情。

但是,虽然我显然相信您遵循上述内容,但如果您确实只想获取 B1 内容并以与组成命名范围名称的任何文本一致的方式对其进行操作,那么您绝对可以在结构中设置它IF()。没有必要,除非您做了一些非常奇怪的事情INDIRECT()

如果不告诉我们您对命名范围和 B1 内容分别做了什么,我就无法更详细地说明,否则会占用 20 英尺的屏幕空间。而且由于这个问题来自 2016 年,获取更多信息似乎不太可能……

相关内容