和公式未按预期工作 - EXCEL



我在那里遇到了一个奇怪的问题:

=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从中输出。

最新更新