我使用以下公式,
INT(LEFT(A4,4) & TEXT((DATEVALUE(MID(A4,6,3) & " 1")),"mm"))=INT($C$1-1)
INT(LEFT(A4,4) & TEXT((DATEVALUE(MID(A4,6,3) & " 1")),"mm"))
这部分以 yyyymm 格式返回日期。
$C$1 的值由用户以 yyyymm 格式输入。
我想和后半部分比较,但是如果$C$1的值设置为202101就会失败,例如,请找到附图。在这种情况下,我希望最终输出为真。
有没有办法修改后半部分/更好地解决这个问题?
答案 0 :(得分:1)
我通过对当前公式的以下小调整解决了我的问题,
INT(LEFT(A4,4) & TEXT((DATEVALUE(MID(A4,6,3) & " 1")),"mm")) = IF(RIGHT($C$1,2)="01", INT($C$1-89), INT($C$1-1))
公式的后半部分 INT(LEFT(A4,4) & TEXT((DATEVALUE(MID(A4,6,3) & " 1")),"mm"))
返回一个 yyyymm。因此,如果 $C$1 是 202101
,它将首先检查右侧的两个字符是否为“01”,如果为真,则将其减去 89,从而得到 202012
。它适用于我认为的所有其他情况。显然,如果需要看到202011
而不是202012
,那么公式将变为,
INT(LEFT(A4,4) & TEXT((DATEVALUE(MID(A4,6,3) & " 1")),"mm")) = IF(RIGHT($C$1,2)="01", INT($C$1-90), INT($C$1-2))
等等..
答案 1 :(得分:0)
此答案基于 OP 对原始问题的评论。 OP 要求从日期 202101 中减去 1 以给出 202012 作为答案。
假设字符串日期在 C3 中,要减去的值在 D3 中,在 E3 中使用以下公式:
=IF((RIGHT(C3,2)-D3)>0,LEFT(C3,4)&RIGHT("0"&(RIGHT(C3,2)-D3),2),RIGHT("000"&LEFT(C3,4)-1,4)&RIGHT("0"&RIGHT(C3,2)+12-D3,2))
这应该有效:
由于问题有新信息。在B2中使用以下公式
=A2=--IF((RIGHT(C1,2)-1)>0,LEFT(C1,4)&RIGHT("0"&(RIGHT(C1,2)-1),2),RIGHT("000"&LEFT(C1,4)-1,4)&RIGHT("0"&RIGHT(C1,2)+11,2))
如果您不确定 A2 的值是存储为文本的数字还是实际数字,您可以使用以下内容调整上述公式:
=--A2=--IF((RIGHT(C1,2)-1)>0,LEFT(C1,4)&RIGHT("0"&(RIGHT(C1,2)-1),2),RIGHT("000"&LEFT(C1,4)-1,4)&RIGHT("0"&RIGHT(C1,2)+11,2))
答案 2 :(得分:-2)
是的,你可以,分两步。
第一步,将文本值转换为日期
=DATE(MID(A1;1;4);MID(A1;5;2)+1;0)
当 A1 是日期文本值时。返回一个月的最后一天,对于大多数计算来说非常方便。
第二步
一旦你从文本值中得到日期,做差异,例如date2-date1 以天为单位获取输出。
要将结果日期转换回文本字符串,请使用文本格式
=TEXT(C1;"yyyymm")
实际的格式化字符串取决于您系统的区域设置。详情请参阅 excel 函数文本帮助 https://support.microsoft.com/en-us/office/text-function-20d5ac4d-7b94-49fd-bb38-93d29371225c。
在您的问题中,您可能不是在寻找差异,而是在比较。在这种情况下,您可以简单地将文本转换为值
=VALUE(A1)
然后比较值。
=IF(VALUE(A2)>VALUE(B2);A2;B2)