电子表格:ADRESS()在ARRAYFORMULA()中工作,将它包装在INDIRECT()中不是吗?

时间:2015-11-16 09:46:56

标签: google-sheets array-formulas

Google电子表格

我在B列中使用此公式尝试获取B到Z列的特定单元格:

=ARRAYFORMULA(IF(ISODD(COLUMN(B:Z)),ADDRESS(ROW(),(COLUMN(B:Z)-2),1,TRUE),ADDRESS(ROW(),(COLUMN(B:Z)-1),1,TRUE)))

此输出正确无误:

A       B       C       D       E       F       G       H       I       J
CellA7  $A$7    $A$7    $C$7    $C$7    $E$7    $E$7    $G$7    $G$7    $I$7

但是当我尝试使用这些字符串来获取每个字符串中的值时使用INDIRECT:

=ARRAYFORMULA(IF(ISODD(COLUMN(B:Z)),INDIRECT(ADDRESS(ROW(),(COLUMN(B:Z)-2),1,TRUE)),INDIRECT(ADDRESS(ROW(),(COLUMN(B:Z)-1),1,TRUE))))

它似乎在某处出错了,结果现在是:

B       C       D       E       F       G       H       I       J
CellA7  #VALUE! CellA7  #VALUE! CellA7  #VALUE! CellA7  #VALUE! CellA7

C,E,G,I列中的#VALUE!错误消息为:

Error
Function ADDRESS parameter 2 value is 0. Valid values are between 1 and 18278 inclusive.

1 个答案:

答案 0 :(得分:0)

通过以下方式解决:

=ARRAYFORMULA(IF(ISODD(COLUMN(B:Z)),EDATE($A7,FLOOR(COLUMN(B:Z)/2)),EDATE($A$7,FLOOR(COLUMN(B:Z)/2))-1))