Excel超动态范围,带偏移量(…COLUMN())以转换为非易失性

Excel超动态范围,带偏移量(…COLUMN())以转换为非易失性,excel,excel-formula,excel-match,Excel,Excel Formula,Excel Match,我想我在“超动态”范围内取得了突破。我之所以这样称呼它们,是因为它们不仅是动态的;但它们也根据写入它们的单元地址引用不同的范围!现在我需要进一步推进这一突破。在Excel中使用动态范围的用户,尤其是动态范围专家,将非常高兴地阅读以下内容,并可能对这一进步有所帮助: 免责声明:如果您不熟悉动态范围,请不要尝试阅读下面的内容 背景: 我们的工作表上有单元格,上面有计算结果,下面有数据透视表。 上面的每个单元格都指同一列中下面的透视表单元格。 数据透视表的第一列(默认标题为“行标签”)按降序从上到下排

我想我在“超动态”范围内取得了突破。我之所以这样称呼它们,是因为它们不仅是动态的;但它们也根据写入它们的单元地址引用不同的范围!现在我需要进一步推进这一突破。在Excel中使用动态范围的用户,尤其是动态范围专家,将非常高兴地阅读以下内容,并可能对这一进步有所帮助:

免责声明:如果您不熟悉动态范围,请不要尝试阅读下面的内容

背景: 我们的工作表上有单元格,上面有计算结果,下面有数据透视表。 上面的每个单元格都指同一列中下面的透视表单元格。 数据透视表的第一列(默认标题为“行标签”)按降序从上到下排序。接下来的每一列都有不同测试的结果。 在枢轴表的中间行的某个点上有一个“标记线”,它将枢轴的顶部与底部分开。 让我们将顶部称为“上部”,底部称为“下部”。 让我们把这两部分统称为“人口”。人口是一个不连续的范围,因为区分上下两种人群的“标记线”介入其中

对于轴上方的每个单元格,都有轴列正下方的计算,这些计算需要参考列本身的上下行或总体

以前,我在上面所有单元格中的公式都是以下内容的重复:

= MAX( OFFSET($A$79,$B$5+1,COLUMN()-1,$B$6,1) )
此示例在下面的同一列中给出了下行器的最大面积

其中:

  • A79
    是透视表的左上角
  • B5
    具有标记行的行号(相对于
    A79
    ),表示我们列的下行区域从该标记行下方的第一行开始(因此为“+1”)。该单元格的公式有一个
    XMATCH
    公式来生成结果行号。例如,如果上排是正数,下排是负数,都按降序排序,
    XMATCH
    正在搜索分隔人口两部分的
    0
  • COLUMN()-1
    返回当前列向右偏移的编号,并且-1是必需的,因为第一列是0而不是向右偏移的1,并且
  • B6
    有到轴(相对于
    B5
    )的最后一行数(“高度”)的行数,我们的降落伞在此结束。单元格包含常用的
    COUNTA
    函数,该函数计算透视表中的行数,并从该数字中减去
    B5
    中的标记行数,以获得下行范围的“高度”
将公式的
偏移量…
部分复制到轴上计算的任何单元格时,将始终在同一列中给出Downer面积

现在我们来看看“超动态”部分:我测试过(它可以工作!)将范围命名为:

ColDowners:
=OFFSET($A$79,$B$5+1,COLUMN()-1,$B$6,1)

我用计算替换了所有的单元格,这些计算引用了Downers,如下所示:

=最大值(ColDowners)

神奇的是,所有具有此命名的超动态范围的单元格,都是在同一列中,使用正好位于其下方的Downers的正确值计算出来的!有时,在最初加载工作簿时,单元格显示为0值,但当您点击F9进行计算时,它们会立即得到正确的值(这当然不是问题)

所以这个范围在两个方面是“动态的”:(1)因为开始行和结束行是动态的(通常如此)和(2)因为它的结果是不同的范围,这取决于它的写入位置

现在是进步。任何动态范围大师的输入都是非常有价值的:

OFFSET
是一个具有已知性能问题的易失性函数。我们可以用两个由冒号(“:”)分隔的非易失性
索引
函数替换它吗?我知道如何命名一个从特定单元格开始,每次以不同单元格结束的范围(例如,
=a$155:INDEX(…COLUMN())
)。但是,范围的开始和结束都可以被索引[sic]吗?i、 它可以像
=INDEX(…COLUMN()):INDEX(…COLUMN()…)
那样。因此,如果我们用这个公式命名一个范围,它会起作用吗


答案必须排除像
间接
这样的易失性函数,并且必须尽可能简单。超动态范围公式的结果范围必须不同,这取决于表中写入的
列()
(如上面的
偏移量
),并且必须“能够”从
A79
下面的特定行数开始(上面示例中写入的
B5
)并以
B6
中编写的正确公式结束,该公式定义了超动态范围,用于替换“偏移”公式:

=OFFSET($A$79,$B$5+1,COLUMN()-1,$B$6,1)

是:

=索引($A:$XX,行($A$79)+$B$5+1,列()):索引($A:$XX,行($A$79)+$B$7,列())

  • 其中,
    B7
    是轴的最后一行的编号。(=类似于
    B5+B6
    加/减1或2-针对您的案例进行测试)
如果您使用此超动态公式定义动态范围的名称,它将根据您将其复制到的单元格位置进行调整,以提供不同的范围!!它将始终在列中为您提供相同的并行范围,并在不同的列中产生不同的结果!我对它进行了测试,它工作得非常好,而且它使我的计算速度更快,因为
索引
是非易失性的(与
偏移量
相反)

还有一个考试提示