乐于分享
好东西不私藏

EXCEL 日期函数 特殊场景应用之二

EXCEL 日期函数 特殊场景应用之二
昨天已与大家分享了6个日期函数特殊场景的应用示例,今天继续分享日期函数的特殊应用场景。
示例7:
● 生成最新采购日期和采购价格(MAXIFS+XLOOKUP)
"最新日期"=MAXIFS($B$3:$B$8,$C$3:$C$8,F3)
"最新价格"=
XLOOKUP(F3&G3,$C$3:$C$8&$B$3:$B$8,$D$3:$D$8,"",,-1)
说明:
用MAXIFS函数的特性,得到日期的最大数值。
用XLOOKUP函数的特性,得到产品和日期两个条件的匹配结果,第6参数[搜索模式]选择从最后一项到第一项进行搜索。
函数语法
=MAXIFS(最大值所在区域, 区域1, 条件1,区域2, 条件2,...)
=XLOOKUP(查找值,查找数组,返回数组,[未找到值],[匹配模式],[搜索模式])
示例8:
● 根据年月,自动生成本月的2列日期(LET+EOMONTH+DAY+SEQUENCE+REPTARRAY+TOROW)
1.本次计算会反复用到年份和月份,因此先用LET函数,定义年份和月份为X、Y,用EOMONTH函数求得本月的月末日期。
=LET(X,C2,Y,D2,EOMONTH(DATE(X,Y,1),0))
2.套用DAY函数求得本月的天数。
=LT(X,C2,Y,D2,DAY(EOMONTH(DATE(X,Y,1),0)))
3.把以上结果定义为Z,用SEQUENCE函数得到本月每一天的数组。
=LET(X,C2,Y,D2,Z,DAY(EOMONTH(DATE(X,Y,1),0)),SEQUENCE(Z,,DATE(X,Y,1),1))
4.把以上结果定义为H,用数组重复函数REPTARRAY把数组重复为2列。
=LET(X,C2,Y,D2,Z,DAY(EOMONTH(DATE(X,Y,1),0)),H,SEQUENCE(Z,,DATE(X,Y,1),1),REPTARRAY(H,,2))
5.末尾套用TOROW函数,把2列数据整合为1行多列数据。
=LET(X,C2,Y,D2,Z,DAY(EOMONTH(DATE(X,Y,1),0)),H,SEQUENCE(Z,,DATE(X,Y,1),1),TOROW(REPTARRAY(H,,2),,FALSE))
TOROW函数的第3参数,选择按行扫描。
说明:
REPTARRAY函数
功能:将数组重复指定次数
语法:=REPTARRAY(数组, [行数], [列数])
①数组 (必选):必填参数,指定需要重复的数组。
②行数 (可选):在垂直(行)方向上的重复次数。默认为1。
③列数 (可选):在水平(列)方向上的重复次数。默认为1。
TOROW函数
功能:将二维数组(多行多列)转换为一维单行数据
语法:=TOROW(数组, [是否忽略特殊值], [通过列/行扫描])
①数组 (必选):必填参数。
②是否忽略特殊值: (可选):忽略特殊值控制,默认值为 0。
  • 0:不忽略任何值(保留空白和错误值)。
  • 1:忽略空白单元格。
  • 2:忽略错误值(如 #N/A)。
  • 3:同时忽略空白单元格和错误值(最常用,可避免结果中出现无效值)。
③列数 (可选):扫描方向控制,默认值为 FALSE(按行扫描)。
  • FALSE:按行扫描(先扫第一行,再扫第二行)。
  • TRUE:按列扫描(先扫第一列,再扫第二列,效果类似转置)。
示例9:
● 计算两个日期间隔月份(含开始和结束月份)
1.先用LET函数,定义开始日期和结束日期为X、Y,用DATE函数求得开始日期的月初日期。
=LET(X,C1,Y,C2,DATE(YEAR(X),MONTH(X),1))
2.把以上结果定义为Z,再用DATE函数求得结束日期的月初日期。
=LET(X,C1,Y,C2,Z,DATE(YEAR(X),MONTH(X),1),DATE(YEAR(Y),MONTH(Y),1))
3.把以上结果定义为H,再用DATEDIF函数求得间隔月份,因含起始月份,再+1,即可。
=LET(X,C1,Y,C2,Z,DATE(YEAR(X),MONTH(X),1),H,DATE(YEAR(Y),MONTH(Y),1),DATEDIF(Z,H,"M")+1)

下期继续。。。。。。

相关学习资料