IF(ISNUMBER(A1:A100),A1:A100,"")是一个数组公式吗?如果不是,那是什么?
我从一个网站上复制了一个假日列表,并将其粘贴到Excel中。原始数据有四列(日期、假日名称、工作日、备注)。粘贴到Excel后,所有内容都显示在A列中,如下所示:
date
name of the holiday
weekday
note
date
name of the holiday
.....
.....我尝试了几种方法,看看是否可以将数据粘贴到列中,但都无济于事。因此,我需要将日期提取到另一列中。在B栏中,我输入了这个公式=IF(ISNUMBER(A1:A100),A1:A100,"")。它的工作是将日期从A列提取到B列。
我不确定它是否是数组公式,因为与其他数组公式不同,它不需要Ctrl-Shift-Enter组合键。然而,ISNUMBER通常以单元格作为参数,而不是数组,并且IF通常不返回数组。
发布于 2020-01-21 11:30:17
IF和ISNUMBER不是数组函数,但可以在数组公式中使用。
在数组公式之外,它们只接受单个输入值并返回单个输出值。
在数组公式中,它们可以接受输入值的数组,并返回输出值的数组。
如果不按CTRL-SHIFT-ENTER组合键,指定的公式不是数组函数。
您所看到的是这样的行为,当一个期望单个值的函数被赋予一个范围,并且在没有按CTRL-SHIFT-ENTER组合键的情况下输入,但是输入范围与公式所在的行重叠。
在需要单个值的情况下输入范围将在与输入公式的行相同的行中返回该值,否则将返回错误。
您之所以得到输出,只是因为您将公式放在被引用行的旁边;并且它给出的结果与您正常输入公式然后向下填充一样:即将=IF(ISNUMBER(A1),A1,"")放在单元格B1中并向下填充。
请注意,如果您在单元格B2中输入=IF(ISNUMBER(A1:A100),A1:A100,""),而不是在单元格B1中输入,然后向下填充,则这些值仍然显示在同一行中,并且不会像您预期的那样向下移动一行。同样,这是因为它只在同一行中查看值,因为范围与当前行重叠。
与将=IF(ISNUMBER(A1),A1,"")放入单元格B2并向下填充相比,您可以像预期的那样将值向下移位一行。
如果在单元格B101中再次输入原始公式(在输入范围下)并向下填充,则根本得不到任何值(即使单元格旁边有数据),因为输入范围不再与当前单元格重叠。实际上,如果您使用from选项卡中的Evaluate Formula工具,您将看到范围A1:A100立即返回#VALUE错误。
这种行为是令人困惑的,应该不惜一切代价避免。仅当函数需要范围,或有意使用CTRL-SHIFT-ENTER组合键创建数组公式时才输入范围。
发布于 2020-01-21 10:39:48
如果将数据粘贴到excel工作表后如下图所示,则可以使用以下公式。

如上图所示,用户将下面的公式截图到C1单元格,然后根据需要向下和向右拖动。
=INDIRECT("A"&(ROW()-1)*4+COLUMNS($A$1:A$1))此公式将为空单元格生成0 (zero)。要隐藏零(0),请使用下面这样的IF()条件。
=IF(INDIRECT("A"&(ROW()-1)*4+COLUMNS($A$1:A$1))=0,"",INDIRECT("A"&(ROW()-1)*4+COLUMNS($A$1:A$1)))https://stackoverflow.com/questions/59833339
复制相似问题