我有一个简单的电子表格,其中在 C、D 或 E 三列之一中列出了日期
以下公式将验证哪一列包含数据。
=IF(OR(C4>0,D4>0,E4>0),1,0)
您能帮我将具有日期值的单元格的 TRUE 值替换为月份吗?
答案1
有多种方法可以做到这一点。我假设每行只有一个日期(如您所说)并且它们不是文本格式。
方法 1
输入 ff 公式。
=IF(OR(C4>0,D4>0,E4>0),SUM(C4:E4),0)
按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 个单元来说并不是必需的,但可以扩展到任何大小范围