动态命名范围的实际工作方式

问题描述 投票:0回答:1

所以我的问题是关于动态命名范围的功能。我已经完成了一些研究,我所看到的一切似乎都涉及到解决具体问题,其中没有一个是我遇到的问题。所以,我要陈述我想做的事情,希望你们中的一个能够帮助我理解为什么我得到了我得到的结果!

我正在尝试使用动态命名范围来创建数据验证列表。我更喜欢这样做无宏,所以我可以为我的同事创建一个更加用户友好的界面,他们不懂电脑。我遇到的问题是,当我使用公式从范围中拉出(在单独的隐藏工作表上),而不是拉动范围内的所有项目时,公式从同一行中提取一个项目。

例如,如果我在$ J $ 6中有“苹果”作为我的命名系列水果的一部分,则公式如下:

`=SEARCH(fruits, "I ate fifteen bananas today.")` 

将编译为

`=SEARCH("apples", "I ate fifteen bananas today.")` 

代替

=SEARCH({"pears";"bananas";"mangos";"grapes";"apricots";"apples";"oranges";"raspberries"}, "I ate fifteen bananas today.")

我已经尝试输入公式作为数组无济于事。我不一致地让我的公式贯穿DNR中的每个项目,而不仅仅是一个,我想要澄清它们如何在Excel中运行。有什么模式我不见了?我将包括一些我尝试过的其他公式以获取更多信息;我不知道是否有任何帮助,但更多信息是更多信息。

我正在从我正在处理的单独工作表中提取这些,因为我不想发布学生信息。这是我正在设计的游戏,但它是完全相同的问题(我实际上是用一个来帮助构建另一个 - 嘻嘻)。

在此先感谢能够提供一些见解的任何人!我通过网上了解了我所知道的大部分内容,这是我第一次在Excel上提问。干杯!

Additional Code

    `=SUMPRODUCT(--ISNUMBER(SEARCH(keywords, INDEX(skillsActive, MATCH(B3, OFFSET(skillsActive, 0,2),0)))))`

我在这个网站上找到了这个公式(我不记得线程了,但是,对程序员来说很抱歉!)。它搜索关键字DNR中的每个项目,但将所有项目转换为0或1,我希望它做的是将结果准备为字符串并根据这些结果创建列表。

    `{=IF(B2="","",IF(ISERROR(SEARCH(B2,skillsActive))=FALSE, OFFSET(skillsPassive, 0, 1), FALSE))}`

范围技能活动也扩展了我喜欢的方式,但它不是DNR;它被命名为range,其单元格值是原始字符串。 B2是使用数据验证的关键字列表。此公式仅返回skillActive的第一次迭代 - 如果B2 =“Blinded”,它将返回Soldier,或者对于任何其他结果,它将返回FALSE。

dynamic excel-formula named-ranges
1个回答
1
投票

使用SEARCH,需要被视为Array Formula,理想情况下使用AGGREGATE。我们可以使用SUMPRODUCT在正常公式中强制进行数组公式计算。

=SUMPRODUCT(AGGREGATE(15,6,SEARCH(fruits, "I ate fifteen bananas today."),1))

打破它:

SEARCH(fruits, "I ate fifteen bananas today.")SUMPRODUCT中,这评估为数组公式:SEARCH({"pears";"bananas";"mangos";"grapes";"apricots";"apples";"oranges";"raspberries"}, "I ate fifteen bananas today.") 并成为: {#VALUE!;15;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}

AGGREGATE(15,6,{#VALUE!;15;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!},1) 第二个参数是6,所以我们丢弃所有错误值: AGGREGATE(15,6,{15},1) 第一个参数是15,所以我们从最小到最大,第四个参数(1)告诉我们要检索哪个元素,在这种情况下是最小的: 15

=SUMPRODUCT(15) SUMPRODUCT大多只是强迫它作为一个数组公式进行评估。它将每个参数中的相应元素相乘,然后对结果求和: =15

© www.soinside.com 2019 - 2024. All rights reserved.