使用Office 2007根据上次填充的单元格动态更改单元格引用

时间:2018-07-22 08:50:15

标签: excel excel-formula excel-2007

我有以下简单的Excel电子表格:

    A      B        C       D        E        F         G       H       I         J
1                  Jan      Feb      Mar      Apr       May     Jun     Jul      Aug
2                 5.000    4.000    5.000    8.000     9.000     0
3                
4                $C$2:$J$2
5
6

单元格C4 中,我使用以下公式从Row 2获取单元格引用:

C4 = "$"&LEFT(ADRESS(1,COLUMN(C2),4),1+(COLUMN(C2)>26))&"$"&ROW(C2)&":$"&LEFT(ADRESS(1,COLUMN(J2),4),1+(COLUMN(J2)>26))&"$"&ROW(J2)

到目前为止,所有这些都工作正常。


但是,我现在的目标是使单元格引用更加动态。如您在我的示例中所见,0有一个no numberJun, Jul, Aug。因此,我也希望单元格引用不会比May(Cell G2)更远。一旦六月有number > 0,单元格引用应自动转到Cell H2,依此类推...

我尝试使用答案here中的公式。但是,由于我只有Office 2007可用,因此无法使用包含AGGREGAT函数的公式,如链接中的答案一样。

Office 2007还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

Excel 2007(美国英语版)不具有LINKSADRESS函数。但是该公式的英文版将返回第2行中最后一个包含大于0值的地址:

= ADDRESS(2,LOOKUP(2,1/($2:$2>0),COLUMN($2:$2)))

在您的示例中,公式返回$G$2

检查“帮助”中的LOOKUP函数以了解其工作原理(lookup_value大于要测试的数组中的任何项目时。)

我不确定您是要检测还是仅对第一个地址进行硬编码。对于硬编码,仅:

= "$C$2:" & ADDRESS(2,LOOKUP(2,1/($2:$2>0),COLUMN($2:$2)))

或以下内容的某种变体

= ADDRESS(2,3) & ":" & ADDRESS(2,LOOKUP(2,1/($2:$2>0),COLUMN($2:$2)))