需要有关公式中命名范围的帮助:
我有第二个工作簿('TEST.xlsx')
作为目标,引用了源工作簿('FLOW.xlsx')
中工作表范围的命名范围(12列X 75行)。我想创建一个与查找值匹配的公式(如果在C3
的单元格TEST
中输入了一个日期,该日期将返回匹配的命名范围,如果在该匹配的命名范围/列中有2个或多个空白单元格,并且这组12列中包含2个以上空白单元格的其余命名范围/列。源工作簿('FLOW')
中的12个独立列分别按月,年和位置(ex., "jan_2019_class.1","feb_2019_class.1", etc.)
命名,工作表列为C, H, M, R, W, AB, AG, AL, AQ, AV, BA
, BF
。行是80-155。我只能在COUNTBLANK
工作簿中创建一个简单的TEST
公式,例如:
=COUNTBLANK('[FLOW.xlsx]Class_1-Chart'!jan_2019_class.1)
但是对于连续列(具有不同的命名范围,并且这些列是非连续的),则不是;而且我无法找出将其与该公式结合使用的运算公式,以获取如上所述的条件返回的计数和数据。请,没有VBA /宏。
提前感谢您的帮助!
有很多方法,但我个人更喜欢使用助手行/列/单元格和命名范围。
在我的演示中,从1月到6月的两个不同的年份,我使用了两个班级服务员时间表,如下所示:
如上所述,我在每个计划的顶部都添加了两个帮助程序行。第一助手行用于查找每月是否有2个或更多空缺,如果有,则返回TRUE
。我给它们分别命名为check.2019.class.1和check.2021.class.5。
第二个助手行仅显示每个月的范围名称,例如jan_2019_class.1
,feb_2019_class.2
等。我给了名称NameRng.2019.class.1和NameRng.2021.class .5每个。
在TEST
页面上,我进行了以下设置:
单元格C3
中的查找值实际上是由公式返回的,因此用户可以对其进行“动态”更改。请注意,在下面的公式中,我使用的名称ClassNo
B3
中的值。,将在我的以下公式中使用。=B2&"_"&B1&"_class."&ClassNo
我还将单元格
C3
命名为Start_MthYrClass
如果开始月份为jan_2019_class.1
,则在2019
,因此您在公式栏中完成公式后,按必须按Ctrl + Shift + Enter,否则它们不会正常运行。=INDEX(NameRng.2019.class.1,MATCH(1,(TRANSPOSE(ROW($1:$11))>=MATCH(Start_MthYrClass,NameRng.2019.class.1,0))*Check.2019.class.1,0))
请注意,这是一个数组公式
逻辑是首先使用此公式
,其中=TRANSPOSE(ROW($1:$11))>=MATCH(Start_MthYrClass,NameRng.2019.class.1,0)
“过滤”范围NameRng.2019.class.1ROW($1:$11)
表示{1;2;3;4;5;6;7;8;9;10;11}
,TRANSPOSE将其变为[ C0]。此数字范围表示该特定范围内的列索引,即C到M列(在您的情况下,由于数据在C到BF列中,因此为{1,2,3,4,5,6,7,8,9,10,11}
)。然后,我使用MATCH返回查找月份ROW($1:$56)
的开始列索引,并且它应该返回jan_2019_class.1
,因为本月从NameRng.2019.class .1。这就是我实际上要比较的:1
,它将返回{1,2,3,4,5,6,7,8,9,10,11}>=1
。然后我将上述结果与范围[[Check.2019.class.1] >>基本上为
最后,我使用{TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE,TRUE}
。然后我会得到{FALSE,0,FALSE,0,TRUE,0,FALSE,0,TRUE,0,TRUE}
。 FYI在Excel中为{0,0,0,0,1,0,0,0,1,0,1}
和TRUE=1
,因此在FALSE=0
时为TRUE x FALSE = 0
。MATCH
找出上面结果中第一个TRUE x TRUE = 1
的位置,它是第5位/列,然后使用INDEX返回范围是1
。这里是一个更通用的公式,它允许您在第一个单元格mar_2019_class.1
中输入它,并将其向下拖动以应用于整个面板,如果您以与我所拥有的相同的方式为相关单元格和范围指定了名称演示。
C6
也是一个数组公式
必须按下Ctrl + Shift + Enter。基本上与第一个公式相同,但是如果没有匹配项,我添加了IFERROR
以返回空白单元格,并且我使用了[[INDIRECT
现在,如果我将查找标准更改为=IFERROR(INDEX(INDIRECT("NameRng."&B6&".class."&ClassNo),MATCH(1,(TRANSPOSE(ROW($1:$11))>=MATCH(Start_MthYrClass,INDIRECT("NameRng."&B6&".class."&ClassNo),0))*INDIRECT("Check."&B6&".class."&ClassNo),0)),"")
,这是更新的结果:
mar_2021_class.5
让我知道您是否有任何疑问。干杯:)