AND公式未按预期运行-EXCEL

时间:2019-09-09 15:05:10

标签: excel excel-formula

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

=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

我在这里想念什么?

2 个答案:

答案 0 :(得分:5)

&将数字转换为文本,文本将从左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)

答案 1 :(得分: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占用了很多)。找到第八列(“ H”)并使用index从中输出。