- 定义变量 A (日期序列): A = SEQUENCE(3650,, –A2):
- –A2:将A2 单元格的日期(或文本)转换为数值(序列值)。确保计算起点。
- SEQUENCE(3650,, start_value):生成一个包含 3650 个连续数字的数组(代表3650天),起始值为 –A2(即第一个数据的日期序列值)。
- 定义变量 B (每月的第一天): B = DATE(YEAR(A), MONTH(A), 1):
- 对序列A 中的每一个日期序列值,计算其所在月份的第一天日期(DATE(年, 月, 1))。
- 聚合计算每月天数: GROUPBY(B, B, COUNTA):
- GROUPBY(row_fields, [values], [function], …):将生成的日期序列B(每月第一天)作为行字段和值字段。
- COUNTA:对同一月份第一天(即同一个B)出现的次数进行计数。B 序列包含了3650天的每月第一天,这个计数结果就是该月的总天数(因为在该月的每一天,这个“当月第一天”的值都是相同的)。结果是一个两列数组:第一列是月份第一天 (B),第二列是该月的天数 (COUNTA)。
- 查找原始日期对应的月天数: VLOOKUP(–A2:A21, groupby_result, 2, 0):
- –A2:A21:将原始数据区域转换为日期序列值(查找值)。
- groupby_result:上一步GROUPBY 生成的表格(两列数组)。
- 2:表示在GROUPBY 结果中取第二列(天数)。
- VLOOKUP 将查找原始日期(序列值),在GROUPBY 生成的结果表中找到对应的月份第一天所在的行,并返回该行第二列的值(即该月的天数)。
- “溢出”结果: 整个LET 公式定义变量的操作在动态数组支持下,会自动将VLOOKUP 的结果填充到B2:B21。
|
发表回复