我在那里遇到了一个奇怪的问题:
=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
我在这里想念什么?
答案 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
从中输出。