【发布时间】:2020-04-06 05:38:35
【问题描述】:
所以我不是 VBA 的粉丝,而且我最近了解到,只要您的目标范围比您拥有的数据更长,就可以将 OFFSET 与 COUNTA 一起使用来快速填充范围。现在我希望能够同时为列和行实现这一点,其中行是平均的。这可以做到吗?我正在用头撞墙以找到一些逻辑来做到这一点,但只能设法以将行数与列数相乘的方式将其组合起来……当然,这是不希望的。
我在 Excel Online 中发布了一个最小可重现示例: https://onedrive.live.com/view.aspx?resid=63EC0594BD919535!1491&ithint=file%2cxlsx&authkey=!ALmV0VtFb7QZCvI
如果您看到 Cell J9 和 J11,您将看到我想要组合的内容。 J11 及以下的三行,我想在 J10 中取平均值,并且溢出/快速填充(如 J9 和 11 已经自动由于公式)它们从右到右,对于范围 A1- 中的数据一样多的列G4..
所以我在 A1-G4 中有标题的 数字 的原始数据,通过在 J9 中写 =OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1) 我得到从左到右填充的所有列标题,并通过写 @ J11 中的 987654324@ 我将第一列的行从上到下填充。也可以通过编写OFFSET(Days,1,0,COUNTA($A:$A)-1,COUNTA(Days)) 来组合它们,其中“Days”是=OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1)(为了便于阅读而在命名范围内)或OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1) 而不使用命名范围
作为一个想法,虽然我不确定如何实现它,但也许这可以以某种形式与=AVERAGE(OFFSET($A$1,1,0,COUNTA($A:$A)-1))结合使用以获取水平部分的列引用
=MID(ADDRESS(ROW(),COLUMN()),2,SEARCH("$",ADDRESS(ROW(),COLUMN()),2)-2)
..发现于https://superuser.com/questions/1259506/formula-to-return-just-the-column-letter-in-excel/1259507
【问题讨论】:
-
嗨,伙计,我下载了你的文件副本,试图找出你的问题,看到
If you see Cell J9 and J11 you will see what I want to combine. The three rows in J11 and down, I want to average in J10没有意义,因为 你使用了两次 J11 .能给我解释一下吗? -
@TsiriniainaRakotonirina 嗨!因此,J9 是一个示例,说明如何输入偏移公式以使我的数据中标题的标题自动向右扩展,与标题一样多的列(如果您愿意,可以使用“for 循环” - 如果您寻找用于迭代的编程语言) - 只需在 J9 中输入公式。 J11 是相同的,只是它垂直重复。我想要的结果是在 J10 中输入一个取 J11 平均值的公式(因此可以将其视为用 average() 公式将 J11 中的公式包装起来),但随后也具有 J9 中公式的效果,这意味着我想要..
-
..J11 获得的平均值,迭代了尽可能多的数据列。在一个单元格中使用一个公式:J10。由于 Excel 公式不是一种成熟的编程语言,内置了所谓的“for 循环”,我不确定这是否可能,但话又说回来,算法/高级逻辑不是我的强项。这就是我问的原因,如果可能的话,我也许也能够理解它并利用逻辑不仅为此,甚至可能理解其他复杂的概念。
-
我也有一种感觉,J21中的公式可能是解锁我想要的结果的关键的一部分,因为它不返回列的标题,而是列名,这意味着它可能以某种方式作为间接引用工作:
=MID(ADDRESS(ROW(),COLUMN(OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1))),2,SEARCH("$",ADDRESS(ROW(),COLUMN(OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1))),2)-2)(当然可以通过使用命名引用来清理) -
总之,如果我理解你的话:
- J9:N9 is getting its value from A1:E1- J11:NXX is getting its value from A2:EXX(并且行扩展)- J10:N10 is supposed to be the average of J11:NXX不是吗?