Excel 中的 IF 语句

Excel 中的 IF 语句

我有一个简单的电子表格,其中在 C、D 或 E 三列之一中列出了日期

以下公式将验证哪一列包含数据。

=IF(OR(C4>0,D4>0,E4>0),1,0)

您能帮我将具有日期值的单元格的 TRUE 值替换为月份吗?

答案1

有多种方法可以做到这一点。我假设每行只有一个日期(如您所说)并且它们不是文本格式。


方法 1

  1. 输入 ff 公式。

    =IF(OR(C4>0,D4>0,E4>0),SUM(C4:E4),0)

  2. Ctrl+ F1,单击自定义并在字段中输入mmmm yyyy(或者mmmm如果您只想要月份)。单击确定。

或者,如果您想以文本形式显示月份/年份,请将公式更改为:

=IF(OR(C4>0,D4>0,E4>0),TEXT(SUM(C4:E4),"mmm yyyy"),0)

并取消步骤2。


方法 2

压缩您的公式。由于您只需检查日期值是否存在,因此请取消 IF 语句并只对单元格求和或使用 MAX。如果单元格为空,则无论如何都会得到 0。

=SUM(C4:E4)

或者

=MAX(C4:E4)

然后更改数字格式[1]以下任何一项:

  • mmmm;0;0
  • mmmm yyyy;0;0
  • mmm;0;0
  • mmm yyyy;0;0

方法 3

使用 HLOOKUP

=IF(OR(C4>0,D4>0,E4>0),HLOOKUP(MAX(C4:E4),C4:E4,1,FALSE),0)

或者如果您运行的是 MS Excel 2007 及更高版本:

=IFERROR(HLOOKUP(MAX(C4:E4),C4:E4,1,FALSE),0)

不要忘记相应地更改数字格式(参见方法 1 的第 2 步)。

如果希望以文本格式输出,请将公式放在 TEXT 函数中,如下所示:

=IF(OR(C4>0,D4>0,E4>0),TEXT(HLOOKUP(MAX(C4:E4),C4:E4,1,FALSE),"mmmm yyyy"),0)

或者

=IFERROR(TEXT(HLOOKUP(MAX(C4:E4),C4:E4,1,FALSE),"mmmm yyyy"),0)

[1] 有关数字格式的更多信息:http://office.microsoft.com/en-001/excel-help/number-format-codes-HP005198679.aspx

答案2

快速破解解决方案。使用嵌套 IF:

=IF(C4>0,C4,IF(D4>0,D4,IF(E4>0,E4,0)))

使用 LOOKUP 函数可能是一个更好的方法,但现在没有时间进行测试。

答案3

如果所有 3 个单元格都为空,则此版本将返回 0,否则将返回最后日期的月份数(位置)

=IF(COUNT(C4:E4),MONTH(LOOKUP(10^7,C4:E4)),0)

对于 3 个单元来说并不是必需的,但可以扩展到任何大小范围

相关内容