我在那里遇到了一个奇怪的问题:
=AND(MONTH(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)) & YEAR(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE))<= MONTH(Octobre!$A$2) & YEAR(Octobre!$A$2))
哪里:
=MOIS(RECHERCHEV(B25;'Liste-Stagiaire'!$1:$1048576;8;FAUX)) & ANNEE(RECHERCHEV(B25;'Liste-Stagiaire'!$1:$1048576;8;FAUX))
输出 :72019
=MONTH(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)) & YEAR(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE))
输出 :102019
所以给出公式:
=AND(72019 <= 102019 )
例外的输出将是TRUE
但我得到的输出是FALSE
我在这里错过了什么?
&
将数字转换为文本,文本将从左7>1
开始逐个字符确定大于或小于
字符使用 VALUE 将文本转换为数字:
=AND(VALUE(MONTH(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)) & YEAR(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)))<= VALUE(MONTH(Octobre!$A$2) & YEAR(Octobre!$A$2)))
但正如 @ForwardEd 和 @Cyryl 所说,使用日期可能会更好,并避免与字符串之间的转换,或者112018>072019
=AND(DATE(YEAR(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)),MONTH(VLOOKUP(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE)),1)<=DATE(YEAR(Octobre!$A$2),MONTH(Octobre!$A$2),1)
您正在进行一个比较,因此您可以进行类似于以下内容的比较:
=(Year(VLookUp(B25;'Liste-Stagiaire'!$1:$1048576;8;FAUX))*12)+Value(Month(Search(B25,'Liste-Stagiaire'!$1:$1048576,8,FALSE))<(Year(Octobre!A2)*12+Month(Octobre!A2))
从本质上讲,您不会与 72019 进行字符串或比较,而是查看总月数:
2019*12 + 7 < 2019*12 + 10
请注意,这样做将使所有月份正常化。
编辑:
将给出一个交换到索引/匹配的示例来支持这一点:
=(Year(Index(Sheet2!$H$1:$H$200,Match(B25,Sheet2!$A$1:$A$200,0))*12+Month(Index(Sheet2!$H$1:$H$200,Match(B25,Sheet2!$A$1:$A$200,0)))<=(Year(Octobre!A2)*12+Month(Octobre!A2))
我还缩短了查找/索引范围,这将极大地节省性能(您使用了所有工作表,1:1048576,这消耗了很多(。 找到第 8 列 ("H"( 并使用index
从中输出。