Excel:Flashfill偏移水平+;垂直的

Excel:Flashfill偏移水平+;垂直的,excel,offset,Excel,Offset,所以我不是VBA的粉丝,我最近了解到,只要你瞄准的范围比你有数据的范围更大,就可以将偏移量与COUNTA一起使用,来对一个范围进行闪光填充。现在我希望能够同时为列和行实现这一点,其中行是平均的。这能做到吗?我的头撞在墙上想找到一些逻辑来做这件事,但我只能设法以行数与列数相乘的方式来组合它。。当然,这是不可取的 我在Excel Online中发布了一个最小的可复制示例: 如果您看到单元J9和J11,您将看到我想要组合的内容。J11和J10中的三行,我想在J10中求平均值,溢出/闪蒸填充(像J9和

所以我不是VBA的粉丝,我最近了解到,只要你瞄准的范围比你有数据的范围更大,就可以将偏移量与COUNTA一起使用,来对一个范围进行闪光填充。现在我希望能够同时为列和行实现这一点,其中行是平均的。这能做到吗?我的头撞在墙上想找到一些逻辑来做这件事,但我只能设法以行数与列数相乘的方式来组合它。。当然,这是不可取的

我在Excel Online中发布了一个最小的可复制示例:

如果您看到单元J9和J11,您将看到我想要组合的内容。J11和J10中的三行,我想在J10中求平均值,溢出/闪蒸填充(像J9和11一样,因为公式已经存在)从右到右排列,列数与A1-G4范围内的数据相同

因此,我在A1-G4中有标题数字的原始数据,通过在J9中写入
=OFFSET($A$1:$A$1,0,1,COUNTA($A$1:$EV$1)-1)
我得到了从左到右填充的列的所有标题,通过在J11中写入
=OFFSET($A$1,1,0,COUNTA($A)-1)
,我得到了从上到下填充的第一列的行。它们也可以通过写入
偏移量(天,1,0,COUNTA($A:$A)-1,COUNTA(天))
组合,其中“天”是
=偏移量($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1)
(在可读性指定范围内)或
偏移量($A$1:$A$1,0,1,COUNTA($1:$EV$1)-1)

考虑到这一点,虽然我不知道如何实现它,但也许可以以某种形式使用它,结合
=AVERAGE(OFFSET($a$1,1,0,COUNTA($a:$a)-1))


…在

找到对不起,伙计,我想不出你要计算什么。如果将J9+J11相加是有意义的,那么您可以用加号将J9和J11中的两个公式连接起来。经过深思熟虑,我决定假设你的问题不是公式问题,而是公式写作问题,简称“引用”。因此,我为你们准备了这个答案,希望它能对你们有所帮助

基于命名范围天数,我建议您使用此公式创建一个动态命名范围数据。 [数据]
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1))

这样定义的范围在两个方向上都是动态的。但是,请记住偏移量是不稳定的(会减慢工作表的速度),您可能希望将其使用限制在这一公式内,并可能将范围从A2开始,但我将尝试您打破规则。现在,您可以使用索引函数来引用
数据
范围

=索引(数据,[行编号],[列编号])
定义单个单元格。但通过将列或行设置为零,可以定义整个列或行<代码>=索引(数据,0,1)定义数据范围的第1列,
=索引(数据,1,0)
定义其第一行。
=索引(偏移量(数据,1,0),0,1)
定义从原始位置向下移动一行的范围的第一列。我推荐另一种方法,从A2开始数据范围,如果需要的话,可能会为第一行声明另一个范围

=AVERAGE(索引(数据,0,1))
将绘制与工作表中已有的相同的平均值,前提是数据从A2开始定义。为了好玩,
=AVERAGE(索引(偏移量(数据,1,0),0,1))
也会这样做,而不会改变范围的定义

=COLUMN()
返回此公式所在列的编号。因此,您可以在G列中输入
=COLUMN()-6
,复制到右侧并获得从1开始的计数。(您可以使用ROW()函数垂直执行相同的操作。)应用于您的公式,
=AVERAGE(INDEX(Data,0,COLUMN()-6))
将返回第1列(如果在G列中输入)和第2列、第3列、第4列(复制到右侧)中的平均值


正如我所说,我不太理解你的要求,无法得出结论,但我认为使用上述方法将为你提供一个工具,将公式复制到你的样本右侧的表格中。如果您能详细说明您的要求,我可能会提供更多帮助。

现在,根据您的解释,以下是我的测试截图:

第A1节:Exxx 我已将该部分转换为一个名为“«TblData»”的表格,其中包含许多信息:

  • 它会自动展开,无需任何额外的努力/公式
  • 我们可以通过表
    [@1]、@2]、@3]、@4]、@5]
  • 第J9节:N9 作为表名的副本,我使用以下公式检索它:

    =INDEX(TblData[#Headers],1,COLUMN(A1))    '<--- This is for J9
    =INDEX(TblData[#Headers],1,COLUMN(E1))    '<--- This is for N9
    

    =INDEX(TblData[#Headers],1,COLUMN(A1))“我试图实现的是J9和J11的组合,也就是说,只需在J10中输入一个自动向右填充的公式(因此我不必手动向右复制,因为每次处理工作表时,数据列的数量都会发生变化)。行也是如此——这就是为什么我要使用offset来获取一列中的所有数据,但也要使用offset来扩展到数据中的所有列。我不想使用pivot或VBA,因为pivot需要手动刷新,可能会被忘记,而且我的工作表的无经验用户很容易破坏VBA。我只想对此进行一次计算,因此,偏移量会减慢工作表的速度这一事实其实并不重要,因为它也是一个相对较低的数据样本量。你只是在重复我已经不理解的内容。前进的道路是使用我提供的公式,然后告诉我它在哪一点上不符合您的要求。
    =INDEX(OFFSET(Data,1,0),0,1)
    ,或者
    =INDEX(OFFSET(OFFSET)(OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1)),1,0,1)
    写出后,我得到了第1-4行数据,因此比那里多了一行
    =INDEX(TblData[#Headers],1,COLUMN(A1))    '<--- This is for J9
    =INDEX(TblData[#Headers],1,COLUMN(E1))    '<--- This is for N9
    
    =INDEX(TblData,ROW($A1),MATCH(J$9,TblData[#Headers],0))   '<--- This is on J11
    =INDEX(TblData,ROW($A3),MATCH(N$9,TblData[#Headers],0))   '<--- This is on N13
    
    =AVERAGE(TblData[1])  '<--- This is on J10
    =AVERAGE(TblData[5])  '<--- This is on N10