I noticed that if I try to use EOMONTH on more than one cell at a time on for instance:
| | A |
| ------------ | ------------ |
| 1 | 1/1/2022 |
| 2 | 1/2/2022 |
| 3 | 1/3/2022 |
| 4 | 1/4/2022 |
| 5 | 1/5/2022 |
| 6 | 1/6/2022 |
| 7 | 1/7/2022 |
| 8 | 1/8/2022 |
| 9 | 1/9/2022 |
| 10 | 1/10/2022 |
| 11 | 1/11/2022 |
| 12 | 1/12/2022 |
| 13 | 1/13/2022 |
If I use the following formula: =EOMONTH(A1:A13,0)
I get a #VALUE! Error.
If I was to transpose the range (and transpose back to the original state) it works without errors:=EOMONTH(TRANSPOSE(TRANSPOSE(A1:A13)),0)
Could someone explain this behaviour?
PS same goes for EDATE()
3条答案
按热度按时间lc8prwob1#
一元加号运算子(+)也足以胁迫传回数组:
=EOMONTH(+A1:A13,0)
wrrgggsh2#
=EOMONTH(A1:A13,0)
预期为单一日期,但却取得多个日期,因此会传回错误。=EOMONTH(TRANSPOSE(TRANSPOSE(A1:A13)),0)
的作用是因为TRANSPOSE
首先将数据区域转换为数组,看起来EOMONTH
可以处理这个问题,所以它将数据输出为数组。如果使用另一个将数据转换为数组的函数,它的作用也是一样的,例如=EOMONTH(UNIQUE(A1:A13),0)
也可以。3zwtqj6y3#
若要将范围胁迫转换成数组,请在范围之前加入双负数(双一元)。
然后,EOMONTH函数的结果将溢出以匹配数组。
我倾向于总是使用双一元,因为它在其他情况下有一个优势。
当Excel传回TRUE或FALSE值时,会将它们胁迫转换成相等的数字1和0。
这允许您对结果使用类似COUNTIF的函数。
Bob Philips最好地描述了范围和数组之间的区别,对我来说:
范围是电子表格中一组连续的单元格或不连续的区域。”
数组是一系列对象,例如整数数组、字串数组,什至是范围对象数组。