Excel超动态范围,带偏移量(…COLUMN())以转换为非易失性
我想我在“超动态”范围内取得了突破。我之所以这样称呼它们,是因为它们不仅是动态的;但它们也根据写入它们的单元地址引用不同的范围!现在我需要进一步推进这一突破。在Excel中使用动态范围的用户,尤其是动态范围专家,将非常高兴地阅读以下内容,并可能对这一进步有所帮助: 免责声明:如果您不熟悉动态范围,请不要尝试阅读下面的内容 背景: 我们的工作表上有单元格,上面有计算结果,下面有数据透视表。 上面的每个单元格都指同一列中下面的透视表单元格。 数据透视表的第一列(默认标题为“行标签”)按降序从上到下排序。接下来的每一列都有不同测试的结果。 在枢轴表的中间行的某个点上有一个“标记线”,它将枢轴的顶部与底部分开。 让我们将顶部称为“上部”,底部称为“下部”。 让我们把这两部分统称为“人口”。人口是一个不连续的范围,因为区分上下两种人群的“标记线”介入其中 对于轴上方的每个单元格,都有轴列正下方的计算,这些计算需要参考列本身的上下行或总体 以前,我在上面所有单元格中的公式都是以下内容的重复:Excel超动态范围,带偏移量(…COLUMN())以转换为非易失性,excel,excel-formula,excel-match,Excel,Excel Formula,Excel Match,我想我在“超动态”范围内取得了突破。我之所以这样称呼它们,是因为它们不仅是动态的;但它们也根据写入它们的单元地址引用不同的范围!现在我需要进一步推进这一突破。在Excel中使用动态范围的用户,尤其是动态范围专家,将非常高兴地阅读以下内容,并可能对这一进步有所帮助: 免责声明:如果您不熟悉动态范围,请不要尝试阅读下面的内容 背景: 我们的工作表上有单元格,上面有计算结果,下面有数据透视表。 上面的每个单元格都指同一列中下面的透视表单元格。 数据透视表的第一列(默认标题为“行标签”)按降序从上到下排
= MAX( OFFSET($A$79,$B$5+1,COLUMN()-1,$B$6,1) )
此示例在下面的同一列中给出了下行器的最大面积
其中:
是透视表的左上角A79
具有标记行的行号(相对于B5
),表示我们列的下行区域从该标记行下方的第一行开始(因此为“+1”)。该单元格的公式有一个A79
公式来生成结果行号。例如,如果上排是正数,下排是负数,都按降序排序,XMATCH
正在搜索分隔人口两部分的XMATCH
行0
返回当前列向右偏移的编号,并且-1是必需的,因为第一列是0而不是向右偏移的1,并且COLUMN()-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-针对您的案例进行测试)
如果您使用此超动态公式定义动态范围的名称,它将根据您将其复制到的单元格位置进行调整,以提供不同的范围!!它将始终在列中为您提供相同的并行范围,并在不同的列中产生不同的结果!我对它进行了测试,它工作得非常好,而且它使我的计算速度更快,因为索引
是非易失性的(与偏移量
相反)
还有一个考试提示