使用VBA快速创建日历表(时间维度表)

news2025/2/25 21:13:11

在数据统计分析中经常用到日历表,也有很多方法创建日历表,例如如下几篇博客分享如何使用Power Query创建日历表(相关链接参见本博文的最后部分)。

本次将要分享如何使用VBA创建如下格式的日历表,需要注意的是周次列,其中第x周的计算需要一些技巧。

在这里插入图片描述

示例代码如下。

Sub Demo()
    Dim i As Long, arrRes(), dDate As Date
    Dim iWeek As Long, sMthWeek As String
    Dim dDate1 As Date, iWeekOffset As Long
    Const DAY_CNT = 366
    ReDim arrRes(1 To DAY_CNT, 1 To 3)
    dDate = #1/1/2023#
    For i = 1 To DAY_CNT
        dDate = dDate + 1
        If Year(dDate) > Year(Date) Then Exit For
        dDate1 = DateSerial(Year(dDate), Month(dDate), 1)
        iWeek = DatePart("ww", dDate, vbMonday) - DatePart("ww", dDate1, vbMonday)
        If DatePart("w", dDate1) = vbMonday Then iWeekOffset = 1 Else iWeekOffset = 0
        iWeek = iWeek + iWeekOffset
        If iWeek <> 0 Then sMthWeek = Month(dDate) & "月第" & iWeek & "周"
        arrRes(i, 1) = sMthWeek
        arrRes(i, 2) = Format(dDate, "yyyy年MM月dd日")
        arrRes(i, 3) = Format(dDate, "aaaa")
    Next i
    Range("A:C").ClearContents
    Range("A1:C1").Value = Array("周次", "日期", "星期")
    Range("A2").Resize(DAY_CNT, 3) = arrRes
End Sub

【代码解析】
第7行代码设置起始日期,创建的日历表从其之后一天开始。
第8~19行代码循环处理每个日期。
第9行代码日期加一递增。
第10行代码判断日期变量是否已经跨年,本需要只创建2023的日历表。
第11行代码获取当月第一天(dDate1)的日期值。
第12行代码获取当前日期的周数和当月第一天的周数差值。
如果当月第一天为周一,第13行代码设置iWeekOffset为以1,否则设置为0。设置这个周数偏移量的原因是,如果满足条件,iWeek值将为0,那么该月的周数将都错误,因此需要增加一个偏移量。
第14行代码调整周数iWeek。
第16~18行代码按照指定格式创建数据。
第20行代码清空输出区域。
第21行代码设置输出表头。
第23行代码将数据表写入单元格。

相关文章链接如下:
PQ制作时间维度表(1)
PQ制作时间维度表(2)
PQ制作时间维度表(3)
PQ制作时间维度表(4)
PQ制作时间维度表(5)
PQ制作时间维度表(6)
PQ制作时间维度表(7)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1285566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java架构师技术架构路线

目录 1 概论2 如何规划短中长期的技术架构路线图3 如何规划面向未来的架构4 如何修订路线图执行过程中的偏差5 如何落地路线图-阿里系糙快猛之下的敏捷模式想学习架构师构建流程请跳转:Java架构师系统架构设计 1 概论 首先,规划一个短中长期的技术路线图是非常重要的。短中…

回顾Django的第二天

1.http 1.1http请求协议与响应协议 1.1.1简介 http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身…

postgres pg_dump: fe_sendauth: no password supplied问题处理

postgres pg_dump: fe_sendauth: no password supplied问题处理 1、pg_dump: fe_sendauth: no password supplied问题处理&#xff08;root 用户&#xff09;2、解决方法2.1、创建 .pgpass文件2.2、chmod 600 ~/.pgpass 3、额外情况 1、pg_dump: fe_sendauth: no password supp…

【Echarts】基本的关系图

基本的关系图 let data {nodes: [{name: 操作系统集团11223,category: 4 // index},{name: 操作系统集团123,category: 3 // index},{name: 操作系统集团center,category: 2 // index},{name: 操作系统集团,category: 0 // index},{name: 浏览器有限公司,category: 0 // inde…

参加百度Apollo技术沙龙—感受自动驾驶的魅力

2023年12月2日下午2点&#xff0c;我有幸参加了百度Apollo技术沙龙&#xff0c;这是一个围绕Apollo新版本Beta的全面升级展开的深度交流活动。作为一名工程师&#xff0c;我深感荣幸能够与众多同行和专家一同探讨自动驾驶技术的快速发展 在这次沙龙中&#xff0c;我了解到Apo…

【完整解析】第十二届“认证杯”数学中国数学建模国际赛(小美赛)A题

A题 太阳黑子预报&#xff08;Sunspot Forecasting&#xff09; 完整版解题思路 完整版解题思路 太阳黑子是太阳光球上的一种现象&#xff0c;表现为比周围区域更暗的临时斑点。它们是由于磁通量集中而导致表面温度降低的区域&#xff0c;磁通量的集中抑制了对流。太阳黑子出现…

jsp在线辅助教育系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 在线辅助教育系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

Java 数据结构篇-二叉树的深度优先遍历(实现:递归方式、非递归方式)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 二叉树的说明 1.1 二叉树的实现 2.0 二叉树的优先遍历说明 3.0 用递归方式实现二叉树遍历 3.1 用递归方式实现遍历 - 前序遍历 3.2 用递归方式实现遍历 - 中序遍…

【每日易题】Leetcode上Hard难度的动态规划题目——地下城游戏的实现

君兮_的个人主页 即使走的再远&#xff0c;也勿忘启程时的初心 C/C 游戏开发 Hello,米娜桑们&#xff0c;这里是君兮_&#xff0c;博主最近一直在钻研动态规划算法&#xff0c;最近在Leetcode上刷题的时候遇到一个Hard难度的动态规划题&#xff0c;今天就借此机会来给大家分享…

Python的requests库实现HTTPS

嘿&#xff0c;Python程序员们&#xff01;今天我们要来点刺激的——使用Python的requests库实现HTTPS请求&#xff01;是的&#xff0c;你没有听错&#xff0c;我们要一起迈入HTTPS的神秘世界&#xff01; 首先&#xff0c;我们来了解一下HTTPS是什么。HTTPS是HTTP Secure的缩…

cmd下查看python命令的用法

在cmd下&#xff0c;可以运行python --help或者py --help来查看python命令的用法。例如&#xff1a;

LeetCode [中等]全排列(回溯算法)

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 回溯法 采用试错的思想&#xff0c;它尝试分步的去解决一个问题。在分步解决问题的过程中&#xff0c;当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候&#xff0c;它将取消上一步甚至是上几步的计算&…

Qt应用开发(Quick篇)——布局类与布局模块

一、前言 实际 应用中&#xff0c;布局是常用的功能&#xff0c;布局最直观的就是提供空间使用率&#xff0c;改善空间的流动和模块之间的重叠&#xff0c;让界面更加的美观。 二、布局类Layout 2.1 介绍 将Layout类型的对象附加到布局的子元素上&#xff0c;提供有关该项的特…

有趣的代码——有故事背景的程序设计2

有趣的代码是很多的&#xff0c;所以接着上一篇&#xff0c;这一篇再和大家分享一些有故事背景的程序设计。 目录 1.百元买百鸡问题 2.哥德巴赫猜想 3.折半查找 4.主对角线元素之和 5.戈尼斯堡七桥问题 1.百元买百鸡问题 已知公鸡5元一只&#xff0c;母鸡3元一只&#xf…

【代码随想录刷题】Day20 二叉树06

文章目录 1.【654】最大二叉树1.1 题目描述1.2 解题思路1.3 java代码实现1.4 总结 2.【617】合并二叉树2.1 题目描述2.2 解题思路2.3 java代码实现 3.【700】二叉搜索树中的搜索3.1 题目描述3.2 解题思路3.3 java代码实现 4.【98】验证二叉搜索树4.1 题目描述4.2 解题思路4.3 j…

Hadoop学习笔记(HDP)-Part.02 核心组件原理

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

Python代码编译并生成Docker镜像

Python代码编译并生成Docker镜像 前言 实际python项目交付时往往有针对关键代码进行保护的需求&#xff0c;本文介绍了一种简单可行的方案&#xff1a;1. 在Linux系统上先将 .py 文件编译为 .so 文件&#xff0c;2. 将整个项目打包成Docker镜像&#xff08;解决 .so 文件的环…

Mars3d支持geoserver的rest服务类型数据渲染上图

需求&#xff1a;geoserver的rest服务类型的矢量数据通过mars3d的引擎直接渲染上图 学习过程&#xff1a; 1.通过全局查询示例的map.js文件&#xff0c;可以看到示例调用的rest服务类型&#xff0c;发现很多wfs接口的数据直接上图渲染矢量数据以及query接口下面调用这个服务的…

python-单词本|通讯录

编写程序&#xff0c;生词本。 def sayHello():print("" * 20 \n 欢迎使用生词本\n 1.查看生词本\n 2.背单词\n 3.添加新单词\n 4.删除单词\n 5.清空生词本\n 6.退出生词本\n * 20 \n)def addW(data):word input("请输入新单词&#xff1a;")trans i…

成为Java开发高手:掌握Spring框架的关键技能-DI

DI相关内容 1.1 setter注入1.1.2 注入引用数据类型1.1.3 注入简单数据类型步骤1:声明属性并提供setter方法步骤2:配置文件中进行注入配置步骤3:运行程序 1.2 构造器注入1.2.2 构造器注入引用数据类型步骤1:删除setter方法并提供构造方法步骤2:配置文件中进行配置构造方式注入步…