首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是一个数组公式吗,如果(ISNUMBER(A1:A100),A1:A100,"")

这是一个数组公式吗,如果(ISNUMBER(A1:A100),A1:A100,"")
EN

Stack Overflow用户
提问于 2020-01-21 10:16:07
回答 2查看 558关注 0票数 1

IF(ISNUMBER(A1:A100),A1:A100,"")是一个数组公式吗?如果不是,那是什么?

我从一个网站上复制了一个假日列表,并将其粘贴到Excel中。原始数据有四列(日期、假日名称、工作日、备注)。粘贴到Excel后,所有内容都显示在A列中,如下所示:

代码语言:javascript
复制
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通常不返回数组。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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组合键创建数组公式时才输入范围。

票数 1
EN

Stack Overflow用户

发布于 2020-01-21 10:39:48

如果将数据粘贴到excel工作表后如下图所示,则可以使用以下公式。

如上图所示,用户将下面的公式截图到C1单元格,然后根据需要向下和向右拖动。

代码语言:javascript
复制
=INDIRECT("A"&(ROW()-1)*4+COLUMNS($A$1:A$1))

此公式将为空单元格生成0 (zero)。要隐藏零(0),请使用下面这样的IF()条件。

代码语言:javascript
复制
=IF(INDIRECT("A"&(ROW()-1)*4+COLUMNS($A$1:A$1))=0,"",INDIRECT("A"&(ROW()-1)*4+COLUMNS($A$1:A$1)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59833339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档