所以我的问题是关于动态命名范围的功能。我已经完成了一些研究,我所看到的一切似乎都涉及到解决具体问题,其中没有一个是我遇到的问题。所以,我要陈述我想做的事情,希望你们中的一个能够帮助我理解为什么我得到了我得到的结果!
我正在尝试使用动态命名范围来创建数据验证列表。我更喜欢这样做无宏,所以我可以为我的同事创建一个更加用户友好的界面,他们不懂电脑。我遇到的问题是,当我使用公式从范围中拉出(在单独的隐藏工作表上),而不是拉动范围内的所有项目时,公式从同一行中提取一个项目。
例如,如果我在$ 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上提问。干杯!
`=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。
使用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