【问题标题】:Change cell reference dynamically based on last filled cell using Office 2007使用 Office 2007 根据上次填充的单元格动态更改单元格引用
【发布时间】:2018-07-22 08:50:14
【问题描述】:

我有以下简单的 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

Cell 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)

到目前为止,这一切都很好。


但是,我现在的目标是使单元格引用更加动态。正如您在我的示例中看到的那样,Jun, Jul, Aug 有一个 0no number。因此,我还希望单元格引用不会比 5 月更远(Cell G2)。一旦 6 月出现 number > 0,单元格引用应该会自动转到 Cell H2,依此类推...

我尝试使用答案here 中的公式。但是,由于我只有 Office 2007 可用,我不能使用包含 AGGREGAT 函数的公式,如链接中的答案。

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

【问题讨论】:

    标签: excel excel-formula excel-2007


    【解决方案1】:

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

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

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

    检查 LOOKUP 函数的 HELP 以了解其工作原理(当 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)))
    

    【讨论】:

    • 谢谢罗恩。正是我想要的。
    猜你喜欢
    • 2014-06-11
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多