我刚刚开始学习 Excel,但有使用 R 和 Stata 的经验。Excel 是否缺少符号约定?也就是说,Excel 是否有类似 RNA
或 Stata 的东西.
?
例如,我评估一个IF()
语句并希望返回一个值,该值将在我使用的后续计算中被忽略"NA"
。这是 Excel 中的正确方法吗?似乎我缺少一个基本概念,但我无法让 Google 给我更好的答案。
为了使其更加具体,我有一个条件,例如=IF([@[Div Dummy]]=1,"NA",EOMONTH(A8,0))
。有没有办法获取数字“缺失值”占位符,以便我不会收到有关冲突数据类型的警告?
答案1
您快完成了。您可以在公式中使用 NA() 来返回该“错误”值。它在绘制图表时非常有用,因为它不会被绘制(与 0 不同)。
答案2
您可以将单元格留空并使用(如果我没记错的话)=isblank()
来执行条件。值得注意的是,许多数值函数(如=sum()
和)=product()
将忽略空单元格,就像sum(x, na.rm=TRUE)
R 中一样。
但事实并非如此,这只是 Excel 不适用于统计数据的众多原因之一。(尽管对于简单的模拟和优化问题来说,它并不糟糕。)
答案3
我发现 Excel 中的数组公式对于解决许多此类问题非常有用。如果您还不了解数组公式,以下是示例:
Data
Col A Col B Col C
Row 1: Fruit Number Color
Row 2: Apple 5 Green
Row 3: (leave A3 blank) 10 Yellow
Row 4: Peach 6 (leave C4 blank)
Row 5: Grape 6 Purple
然后,在另一个单元格中的某处输入以下内容:
=AVERAGE(IF((A2:A5<>"")*(C2:C5<>""),B2:B5))
要使其成为数组,您必须使用Ctrl++ Shift。Enter您的公式将如下所示:
{=AVERAGE(IF((A2:A5<>"")*(C2:C5<>""),B2:B5))}
但不要输入花括号;当您使用 ++ 时它们会Ctrl自动出现Shift。Enter
在该公式中""
,表示缺失,<>
表示不等于,表示*
与。因此,该公式表示,如果 A2:A5 不缺失且 C2:C5 不缺失,则返回 B2:B5 的平均值。在本例中,结果为 5(4 和 6 的平均值)。5 和 10 被排除,因为 A3 和 C4 中缺少值。
现在尝试一下:
=AVERAGE(IF((A2:A5<>"")+(C2:C5<>""),B2:B5))
以数组形式输入。
唯一的区别是+
而不是*
。+
表示或。因此,在这种情况下答案是 6.25,因为 B 中的所有值在 A 或 C 中都有非缺失值。
AVERAGE
可以被许多其他函数替换,例如,,,,,并且MAX
你可以在数组前面放置条件:例如,MIN
SUM
COUNT
=IF(B2>3,AVERAGE(IF((A2:A5<>"")+(C2:C5<>""),B2:B5)),"N/A")
输入数组公式。因此,如果某个值授予权限,则运行数组,否则返回“N/A”。权限值可以位于电子表格上的任何位置,而不必包含在数组中。
您还可以按目标列中的值进行过滤:例如:
=AVERAGE(IF(((A2:A5<>"")+(C2:C5<>""))*(B2:B5>4),B2:B5))
因此,如果 (A2:A5 没有缺失或 C2:C5 没有缺失) 并且 B2:B5 大于 4,则答案为 7,因为它将取 5、6 和 10 的平均值。
你也可以这样做...
=AVERAGE(IF((A2:A5="Apple")+(A2:A5="Pear"),B2:B5))
(请注意,“Apple”和“Pear”可以用单元格引用替换)。答案是 4.5,因为它将计算 4 和 5 的平均值。
或者这样:首先=10/0
在 B3 中输入。您将得到一个除以零的错误,它将替换值 10。
=SUM(IF((ISNUMBER(B2:B5)),B2:B5))
以数组形式输入。
因此,这将查看数组 B2:B5,并且仅包含数字。由于 #DIV/0 不是数字,因此它将对 4、5、6 求和,得到答案 15。
我确信数组中的条件数量存在限制,但我从未遇到过用尽的情况。此外,这是一个非常灵活的工具,真正受限的只是你的创造力。使用数组公式中嵌入的 MAX 和 MIN 函数,你可以做很多有趣的事情 :)
但请注意,与 Excel 中的其他类型的公式一样,数组公式会占用资源并可能降低电子表格的速度。
我发现这些对于在可高度自定义的表格中创建摘要报告特别有用。由于这些公式可以拖动,因此如果您小心使用绝对引用 ( $
),您可以非常快速地创建大量此类公式。