Excel:如何将单元格值用作范围的一部分?


2

我每月使用大型Excel文件。在这个文件中我要找到一个像sum

=sum(S2:AC2)

问题是范围中最后一个单元格的列发生了变化。我希望能够做这样的事情:

在一个说单元格中,S1我输入一个值AC ,然后我可以写

=sum(S2:value(S1)2)

并具有与我写过的效果相同的效果

=sum(S2:AC2)

我知道这可以做到。我很久以前就看过。这将节省大量时间。我有for的数百行=sum(S2:AC2)。但是下个月他们可能都必须改成=sum(S2:BF2)。有一个地方可以更改范围的末尾,那就太好了。

顺便说一句,行号实际上也发生了变化,但是完全可以预测。

理想情况下,我希望能够将名称连接起来,例如:

=sum(S2: & S1 & row() )

row()用来获取当前行号的位置

Answers:


5

这可以通过一个非常优雅的公式来实现:

= SUM($ S $ 2:INDIRECT($ S $ 1 ROW()))

这是一个很好的技巧,特别是。试图避免在动态命名范围内波动时!而不是volatile =OFFSET($A$1,0,0,rows,cols)=$A$1:INDEX($A:$Z,rows,cols)将产生相同的结果,但是是非易失性的!:-)
彼得·阿尔伯特

2

一种方法是像这样使用INDIRECT

=SUM(INDIRECT("S2:"&S1&"2"))

....但这意味着对行号进行“硬编码”。

如果数据中没有间隙,则最好根据行中的值数定义“动态命名范围”,例如,根据此公式定义名称“范围”

=OFFSET($S$2,0,0,1,COUNTA($S$2:$IV$2))

那你就可以用

=SUM(Range)


我不能对行号进行硬编码。这需要改变。
A.Ellett

例如,您是否有理由不能仅仅扩大范围=SUM(S2:IV2)?-那里的任何空白都将被忽略。每行中会有相同数量的值吗?
巴里·霍迪尼

是。在后面的专栏中还有其他事情发生。这是一个糟糕的项目设计,但我坚持下去。
A.Ellett

1

我已经设法解决了一些问题。但是,我对此不满意。

假设在单元格中:

 cell(AB1) = "AD"
 cell(AC1) = "AG"

然后在行中x我有以下内容

 cell(ABx)=AB$1 & row()
 cell(ACx)=AC$1 & row()

然后我可以设定

 cell(AAx)=sum(indirect(ABx &":"& ACx))

在此过程中,这意味着我必须使用所需的代码手动创建两列。

能够做类似的事情会很好

 cell(AAx)=sum(indirect(AB$1 & row() &":"& AC$1 & row()))

哦,它确实有效!!!


是的,最后一个公式应该起作用-是您的意思吗?
巴里·霍迪尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.