Excel 使用名称管理器创建动态范围

Excel 使用名称管理器创建动态范围,excel,excel-formula,Excel,Excel Formula,我有一个动态范围,从第4行开始,跨越a到G,向下移动x倍。静态方式是指: =Data!$A$4:$G$99 我希望此名称动态计算其内容,而不是硬编码4到99 我看了看,没能让它工作: =OFFSET(Data!$A$4:$G$4,0,0,COUNTA(Data!$A4:$G4),1) 正确的公式是: =OFFSET(Data!$A$4,0,0,COUNTA(Data!$A:$G),8) 由于A到G的列数,因此宽度应设置为8。 看看它是否有效 更新 如果希望它包含超出指定范围的列和行,则可

我有一个动态范围,从第4行开始,跨越a到G,向下移动x倍。静态方式是指:

=Data!$A$4:$G$99
我希望此名称动态计算其内容,而不是硬编码
4
99

我看了看,没能让它工作:

=OFFSET(Data!$A$4:$G$4,0,0,COUNTA(Data!$A4:$G4),1)

正确的公式是:

=OFFSET(Data!$A$4,0,0,COUNTA(Data!$A:$G),8)

由于
A
G
的列数,因此
宽度应设置为
8
。 看看它是否有效

更新 如果希望它包含超出指定范围的列和行,则可以尝试以下公式:

=OFFSET(Data!$A$4,0,0,1000,1000)
意思:
$A$4:是第一个值所在的起始单元格引用。
两个零可以更改起始单元格引用的位置。(这是我们不想做的,因此有零)。

第一个1000是高度,从$A$4开始,表示需要查看的行数(上下)。
第二个1000是从左到右的宽度和列数,始终从$A$4引用开始。
因此,这个公式将查看从
A4
开始的所有1000行以及
A4
右侧的所有1000列。
显然,您可以调整1000以适应您想要覆盖的可能范围。

或者:

=OFFSET(Data!$A$4:$G$4,,,COUNTA(Data!$A:$A),)

公式的问题是,如果在列
A
中没有值,但在其他列中有值,则不考虑这些值。您应该在
A
中有值,以便能够考虑到其他列中相应行中的值。对我来说,它工作得很好。我无法理解您试图设置的场景。您能在末尾添加Columns()来帮助阻止静态变量8吗?@JayRizzi:为什么要阻止它?@ahc provent可能是个坏词,我想我是在问为什么不将整个语句动态化,并用逻辑替换该静态变量?我把整个评论的措词都弄错了,应该说“用列(Data!$A:$G)替换8是否有意义,这样整个语句就是动态的?”@JayRizzi:那么你的意思是,你可能会有更少或更多的列?所以你想让这个变化反映在这个声明中?