百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

在 Excel 日历制作中,尤其是动态日历方案,会用到的多个函数详解

myzbx 2025-09-03 05:28 22 浏览

在 Excel 日历制作中,尤其是动态日历方案,会用到多个核心函数。下面我将详细解析这些函数的作用、参数和使用技巧:




核心日期函数

1. DATE(year, month, day)

作用:创建指定日期

参数

year:年份(如 2025)

month:月份(1-12)

day:日期(1-31)

示例 =DATE(2025,8,1) → 返回2025年8月1日的序列值

日历应用:生成目标月份的第一天

2. EOMONTH(start_date, months)

作用:返回指定月份最后一天

参数

start_date:起始日期

months:偏移月数(0=当前月,1=下个月,-1=上个月)

示例 =EOMONTH(DATE(2025,8,1),0) → 2025/8/31

日历应用:确定当月天数范围

3. WEEKDAY(serial_number, [return_type])

作用:返回星期几的数字表示

参数

serial_number:日期值

return_type(重要):

1:周日=1 → 周六=7

2:周一=1 → 周日=7(推荐)

3:周一=0 → 周日=6

示例 =WEEKDAY("2025-8-1",2) → 5(星期五)

日历应用:确定每月 1 号是星期几




逻辑控制函数

4. IF(logical_test, value_if_true, [value_if_false])

日历公式中的嵌套结构 =IF(月份检查, "", IF(星期位置判断, "", IF(首行处理, 首日, 后续日期)))

实际应用 =IF(MONTH($C$1)<>$A$2, "",
IF(WEEKDAY($C$1,2)>COLUMN(A1), "",
IF(ROW(A1)=1, $C$1,
IF(B4+1<=$C$2, B4+1, "")
)
)
)

5. AND(logical1, [logical2], ...) / OR(logical1, [logical2], ...)

日历应用 =AND(B5>=开始日期, B5<=结束日期) // 标记任务区间
=OR(WEEKDAY(B5,2)=6, WEEKDAY(B5,2)=7) // 标记周末





查找与匹配函数

6. INDEX(array, row_num, [column_num])

作用:返回区域中指定位置的值

日历应用:提取事件描述 =INDEX(事件描述列, MATCH(当前日期, 日期列, 0))

7. MATCH(lookup_value, lookup_array, [match_type])

参数

match_type=0:精确匹配

组合应用 =INDEX($B:$B, MATCH(B5, $A:$A, 0))
// 在A列查找日期,返回B列对应事件

8. COUNTIF(range, criteria)

日历应用:标记节假日 =COUNTIF(节假日列表, B5)>0 // 条件格式公式




辅助定位函数

9. ROW([reference]) / COLUMN([reference])

作用:获取行号/列号

动态技巧 COLUMN(A1) // 向右拖动时:A1→1, B1→2, C1→3...
ROW(A1) // 向下拖动时:A1→1, A2→2, A3→3...

日历应用:动态判断单元格位置 =IF(WEEKDAY($C$1,2)>COLUMN(A1), "", $C$1)

10. SEQUENCE(rows, [columns], [start], [step])(Excel 365 专属)

高级日历方案 =LET(
首日, DATE(A1,A2,1),
最后日, EOMONTH(首日,0),
天数, DAY(最后日),
起始空白, WEEKDAY(首日,2)-1,
SEQUENCE(6,7,首日-起始空白,1)
)





格式转换函数

11. TEXT(value, format_text)

日历应用 =TEXT(DATE(A1,A2,1),"yyyy年m月") // → "2025年8月"
=TEXT(B5,"d") // 只显示日期数字

12. MONTH(serial_number) / DAY(serial_number)

验证函数 MONTH("2025-8-15") → 8
DAY("2025-8-15") → 15





函数组合实战解析

动态日历核心公式分解


=IF(

   MONTH($C$1)<>$A$2, "",               // 检查是否目标月份

   IF(

      WEEKDAY($C$1,2)>COLUMN(A1), "",   // 检查是否在1号之前的位置

      IF(

         ROW(A1)=1, $C$1,               // 如果是第一行显示1号

         IF(

            B4+1<=$C$2, B4+1, ""       // 后续日期递增

         )

      )

   )

)


各部分的协同工作:

$C$1 = DATE($A$1,$A$2,1)(当月 1 号)

$C$2 = EOMONTH($C$1,0)(当月最后一天)

COLUMN(A1):动态列定位(向右填充时:1→2→3...)

ROW(A1):动态行定位(向下填充时:1→2→3...)

B4+1:日期递增逻辑(依赖前一个单元格)




使用技巧与注意事项


绝对引用 vs 相对引用

锁定基准日期:$C$1$C$2

允许行列动态变化:COLUMN(A1)ROW(A1)


错误处理 =IFERROR(原公式, "")



性能优化

避免整列引用:A:AA2:A100

使用LET函数(Excel 365)减少重复计算


日期显示格式 右键单元格 → 设置格式 → 自定义 → 输入 "d"(只显示天数)






函数关系图


graph TD

    A[年份输入] --> B[DATE函数]

    C[月份输入] --> B

    B --> D[生成当月1号]

    D --> E[EOMONTH求最后一天]

    D --> F[WEEKDAY求星期几]

    F --> G[COLUMN定位起始列]

    E --> H[日期范围验证]

    G --> I[日历网格构建]

    H --> I

    I --> J[条件格式标记]


掌握这些函数的组合应用,你就能创建出功能强大的动态日历系统。实际使用时建议分段测试公式,逐步构建完整的日历逻辑。

相关推荐

如何设计一个优秀的电子商务产品详情页

加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...

怎么在JS中使用Ajax进行异步请求?

大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...

中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革

前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...

前端监控 SDK 开发分享_前端监控系统 开源

一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...

Ajax 会被 fetch 取代吗?Axios 怎么办?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...

前端面试题《AJAX》_前端面试ajax考点汇总

1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...

Ajax 详细介绍_ajax

1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...

6款可替代dreamweaver的工具_替代powerdesigner的工具

dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...

我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊

接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...

福斯《死侍》发布新剧照 &quot;小贱贱&quot;韦德被改造前造型曝光

时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...

2021年超详细的java学习路线总结—纯干货分享

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...

不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!

Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...

2025 年 Python 爬虫四大前沿技术:从异步到 AI

作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...

最贱超级英雄《死侍》来了!_死侍超燃

死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...

停止javascript的ajax请求,取消axios请求,取消reactfetch请求

一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...