VBA快速合并多列单元格
实例需求:工作表中第3行到第5行有如下图所示的数据表,为了方便展示,隐藏了部分列,实际数据为从C列到DO列。
现需要合并第3行和第4行相同内容的单元格,如第10行到第12行所示。
示例代码如下。
Sub MergeDemo()Dim dicMth As Object, dicYr As Object, rngData As RangeDim i As Long, iYr As String, iMth As String, vKeyDim arrDataConst START_COL = 3Sheet2.Copy after:=Sheets(Sheets.Count)Set dicMth = CreateObject("scripting.dictionary")Set dicYr = CreateObject("scripting.dictionary")Set rngData = Range("A3").CurrentRegionarrData = rngData.ValueFor i = START_COL To UBound(arrData, 2)iYr = CStr(arrData(1, i))iMth = arrData(1, i) & "|" & arrData(2, i)UpdateDic dicYr, iYr, 3, iUpdateDic dicMth, iMth, 4, iNext iApplication.DisplayAlerts = FalseIf dicYr.Count > 0 ThenFor Each vKey In dicYr.KeysdicYr(vKey)(0).Resize(1, dicYr(vKey)(1)).MergeNextEnd IfIf dicMth.Count > 0 ThenFor Each vKey In dicMth.KeysdicMth(vKey)(0).Resize(1, dicMth(vKey)(1)).MergeNextEnd IfApplication.DisplayAlerts = True
End Sub
【代码解析】
第5行代码指定表格的起始列。
第6行代码将Sheet2复制到最后位置,合并表格将在此工作表中进行。
第7~8行代码创建两个字典对象。
第9行代码将数据表格读取到数组中。
第11~16行代码循环遍历数组。
第12行代码获取数组中第一行的年。
第13行代码获取数组中第2行的月,并在之前添加年字符串。
第14~15行代码调用UpdateDic
过将数据添加到字典对象中。
第17行代码屏蔽合并单元格时的警告信息。
第18行代码判断dicYr对象是否为空。
第19~21行代码循环遍历dicYr对象。
第20行代码合并指定单元格区域。
dicYr(vKey)(0)
为字典值数组中的第一个元素,是一个Range对象dicYr(vKey)(1)
为相同内容的单元格的个数
第23~27行代码使用类似的方式合并月份单元格。
第28行代码恢复显示系统警告信息。
Sub UpdateDic(ByRef oDic As Object, vKey, iRow, iCol)Dim aTmp(1), aTmp2If oDic.exists(vKey) ThenaTmp2 = oDic(vKey)aTmp2(1) = aTmp2(1) + 1oDic(vKey) = aTmp2ElseSet aTmp(0) = Cells(iRow, iCol)aTmp(1) = 1oDic(vKey) = aTmpEnd If
End Sub
【代码解析】
第1行代码声明Sub过程,其中有4个参数:
- oDic为字典对象
- vKey为键值
- iRow为单元格的行号
- iCol为单元格的列号
第3行代码判断字典对象中是否存在键值vKey。
如果存在,第4行代码读取字典对象中的值(包含两个值的一维数组)。
第5行代码更新数组中的第二个元素,累加1。
第6行代码更新字典中的值(数组)。
如果不存在,第8行代码将单元格赋值给元素的第一个元素。
第9行代码设置数组第二个元素为1。
第10行代码将键值对保存到字典对象中。
此示例中使用数组保存单元格引用和相同单元格的个数,也可以使用嵌套数组实现。
相关文章:
VBA快速合并多列单元格
实例需求:工作表中第3行到第5行有如下图所示的数据表,为了方便展示,隐藏了部分列,实际数据为从C列到DO列。 现需要合并第3行和第4行相同内容的单元格,如第10行到第12行所示。 示例代码如下。 Sub MergeDemo()Dim dicM…...
区块链+IoT:创新场景落地背后的技术攻坚战
物联网(IoT)与区块链技术作为两大颠覆性技术,正通过深度融合推动各行各业的数字化转型。物联网通过连接海量设备实现数据互通与智能化管理,而区块链凭借去中心化、不可篡改和可追溯的特性,为物联网的安全性、隐私保护和…...
自动化测试项目2 --- 比特纵横 [软件测试实战 Java 篇]
目录 项目介绍 项目源码 库地址 项目功能测试 1. 自动化实施步骤 1.1 编写测试用例 1.2 自动化测试脚本开发 1.2.1 配置相关环境, 添加依赖 1.2.2 代码编写 2. 编写自动化脚本过程问题总结 2.1 Actons 方法的使用 2.2 等待的使用 2.3 页面操作 项目性能测试 1. 进…...
【学习笔记】深入理解Java虚拟机学习笔记——第1章 走进Java
第1章 走进Java 1.1 概述 Java成功的原因 1>一次编写到处运行 2>内存管理安全,自动回收 3>运行时编译 4>强大成熟的第三方库 1.2 Java技术体系 1>Java技术体系组成: -Java语言 -Java虚拟机实现 -class文件格式 -Java类库API -第三方J…...
JavaScript性能优化实战之运行时性能优化
在 JavaScript 开发中,运行时性能优化是确保网页响应迅速和流畅的重要环节。优化运行时性能不仅能提高用户体验,还能在高并发的情况下保证应用的稳定性。本文将细化几个常见的 JavaScript 运行时性能优化策略,帮助你提高代码执行效率。 1️⃣ 避免不必要的内存分配和释放 J…...
走进AI的奇妙世界:探索历史、革命与未来机遇
2022年11月30日,ChatGPT的横空出世像一枚深水炸弹,掀起了全球范围的AI狂潮。但这场革命并非偶然——它背后是80年AI发展史的厚积薄发。从图灵的哲学思辨到深度学习的技术突破,再到生成式AI的“涌现”时刻,AI正以惊人的速度模糊人机…...
用c 编写的笔记搜索程序
{XXX文本记录} 文本记录格式 xxx 搜索词条 #include <stdio.h> #include <string.h> #include <stdlib.h>int main(void){FILE *ffopen("help.txt","r");if(fNULL){perror("file");return -1;}char nr[2000];f…...
鼎讯信通 智能通信干扰设备:多频段多模态信号压制解决方案
在万物互联时代,通信安全已成为现代社会的核心基础设施防护重点。面对日益复杂的电磁环境挑战,新一代智能通信干扰设备通过技术创新实现了信号压制能力的革命性突破。本文将深入解析该设备的八大核心功能与技术特性,展现其在商业通信保障、工…...
软件测试概念
这里写目录标题 需求开发模型软件生命周期瀑布模型螺旋模型增量模型、迭代模型敏捷模型Scrum 测试模型V模型W模型(双V模型) 需求 用户需求:没有经过合理的评估,通常就是一句话 软件需求:是开发人员和测试人员执行工作…...
数据库性能杀手与调优实践
目录 前言一、索引缺失引发的全表扫描灾难1.现象与影响2.优化策略 二、SELECT * 的隐性成本1.危害分析2.优化实践 三、分页查询的性能陷阱1.深度分页问题2.优化方案对比 四、执行计划分析方法论1.关键指标解读2.典型劣化模式识别 五、综合优化最佳实践总结 前言 在数据库应用开…...
初始化列表详解
1.类中包含以下成员,必须放在初始化列表位置进行初始化: 1. 引用成员变量 2.const成员变量 3. 自定义类型成员(且该类没有默认构造函数时 ) 2. 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关…...
【CVE-2025-1094】:PostgreSQL 14.15 SQL注入漏洞导致的RCE_ 利用代码和分析
目标 PostgreSQL 14.15BeyondTrust Privileged Remote Access (PRA) 和 Remote Support (RS) 软件受影响的版本:使用PostgreSQL 14.15及其版本的BeyondTrust产品Explain CVE-2025-1094 是 PostgreSQL 14.15 版本的 psql 交互式工具中发现的 SQL 注入漏洞。由于输入值的验证不…...
【验证技能】VIP项目大总结
VIP项目快做一段落了,历时一年半,也该要一个大汇总。 VIP简介 VIP开发流程 VIP难点 进程同步 打拍插入不同bit位宽数据问题。 动态升降lane VIP做的不好的地方和改进想法 各层之间交互 testsuite两端关键 所有层的实现架构不统一 VIP经验 ** 架构…...
MyBatis 参数处理全解析
在 Java 开发领域,MyBatis 作为一款优秀的持久层框架,凭借其简洁的设计和强大的功能,受到了广大开发者的青睐。而参数处理作为 MyBatis 中一个至关重要的环节,掌握好它能让我们更高效地使用 MyBatis 进行数据库操作。本文将全面深…...
【自然语言处理与大模型】使用Xtuner进行QLoRA微调实操
本文首先对Xtuner这一微调框架进行简单的介绍。手把手演示如何使用Xtuner对模型进行微调训练,包括数据准备、训练命令执行及训练过程中的监控技巧。最后,在完成微调之后,本文还将介绍如何对微调结果进行简单对话测试。 一、Xtuner微调框架 X…...
2023华为od统一考试B卷【二叉树中序遍历】
前言 博主刷的华为机考题,代码仅供参考,因为没有后台数据,可能有没考虑到的情况 如果感觉对你有帮助,请点点关注点点赞吧,谢谢你! 题目描述 思路 0.用Character数组存储树,index下标的左右…...
Midjourney 绘画 + AI 配音:组合玩法打造爆款短视频!
一、引言:AI 重构短视频创作范式 在某短视频工作室的深夜剪辑室里,资深编导正在为一条古风剧情视频发愁:预算有限无法实拍敦煌场景,人工绘制分镜耗时 3 天,配音演员档期排到一周后。而使用 Midjourney 生成敦煌壁画风格的场景图仅需 15 分钟,AI 配音工具实时生成多角色台…...
敏感词 v0.25.1 新特性之返回匹配词,修正 tags 标签
开源项目 敏感词核心 https://github.com/houbb/sensitive-word 敏感词控台 https://github.com/houbb/sensitive-word-admin 版本特性 大家好,我是老马。 敏感词以前在实现的时候,没有返回底层实际匹配的词,有时候问题排查非常耗费时间。 …...
【多线程】六、基于阻塞队列的生产者消费者模型
文章目录 Ⅰ. 生产者消费者模型的概念Ⅱ. 生产者消费者模型的优点Ⅲ. 基于阻塞队列的生产者消费者模型MakefileBlock_queue.hpptask.hpptest.cppⅣ. 如何理解提高了效率❓❓❓Ⅰ. 生产者消费者模型的概念 生产者消费者模型是一种常见的并发模式,用于解决生产者和消费者之间…...
解决Flutter项目中Gradle构建Running Gradle task ‘assembleDebug‘卡顿问题的终极指南
解决Flutter项目中Gradle构建Running Gradle task ‘assembleDebug‘卡顿问题的终极指南 前言 在开发Flutter应用时,经常会遇到Gradle构建卡在Running Gradle task assembleDebug阶段的问题。本文将分享如何通过配置华为云镜像和使用自定义脚本下载依赖的方法解决这些问题。…...
IntelliJ IDEA 保姆级使用教程
文章目录 一、创建项目二、创建模块三、创建包四、创建类五、编写代码六、运行代码注意 七、IDEA 常见设置1、主题2、字体3、背景色 八、IDEA 常用快捷键九、IDEA 常见操作9.1、类操作9.1.1、删除类文件9.1.2、修改类名称注意 9.2、模块操作9.2.1、修改模块名快速查看 9.2.2、导…...
从此,K8S入门0门槛!
前言 当你想要入门K8S的时候,往往会被各种概念搞的晕乎乎的,什么API Server,Scheduler,Controller manager,Etcd,Pod,Kubelet,kube-proxy,deployment…… 哪怕你使用了…...
vue2和vue3组件如何监听子组件生命周期
在 Vue 中监听子组件的生命周期是一个常见需求,但 Vue 官方并不直接推荐这么做,因为这会打破组件的封装性。但在**一些特定场景(如自动化监控、封装逻辑复用)**下仍是有意义的。 下面分别讲解 Vue 2 和 Vue 3 中如何监听 子组件的…...
如何用Python绘制两个圆之间的8条公切线
引言 在几何学中,两圆之间存在多种类型的公共切线。本文将通过Python代码演示如何绘制两个同心圆(半径分别为1.0和3.0)之间的8条公切线,并解释相关数学原理与代码实现细节。 环境准备 import matplotlib.pyplot as plt import …...
会话历史管理——持久化
需求场景推荐方案理由中小企业级应用,需复杂查询MySQL/PostgreSQL事务支持完善,开发成本低海量数据高并发写入Cassandra水平扩展性强,写入性能高非结构化历史数据快速检索MongoDB灵活存储,内置全文检索本…...
C++之IO流
目录 一、C语言的输入与输出 二、流是什么 三、CIO流 3.1、C标准IO流 3.2、C文件IO流 四、stringstream的简单介绍 一、C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放…...
maven install时报错:【无效的目标发行版: 17】
在很多次运行项目前的maven install时,我总是遇到无效的目标发行版: 17的问题,解决过之后就又忘了怎么解决,浪费了很多时间。。 今天把他总结一下,如图报错: 解决方法 注意: 如果只想解决这个项目的问题…...
开闭原则(OCP)
非常棒的问题!🔍 开闭原则(OCP, Open/Closed Principle)是软件设计的核心原则之一,下面我将从定义、意义、优劣分析、Python示例和结构图五个方面完整解析给你。 🧠 什么是开闭原则? 开闭原则&a…...
FHQ Treap
按值分裂 /* 按值x分裂Treap:将树u分裂为<x的树l和>x的树r */ void split(int u, int x, int& l, int& r) {if (!u) { l r 0; return; } // 空树直接返回if (t[u].val < x) { // 当前节点值<x,应放入左树l u; …...
题解传送门
做个算法分类,这样找特定算法的题目就方便多了23333 竞赛工具 【竞赛工具】——sublime text4 xcpc竞赛向配置教程 【竞赛工具】——vscode xcpc竞赛向配置教程 算法讲解 [算法学习]——通过RMQ与dfs序实现O(1)求LCA(含封装板子) [算法…...
ASP.NET MVC 入门与提高指南七
39. 量子安全通信与 MVC 应用保障 39.1 量子安全通信概念 量子安全通信基于量子力学原理,利用量子态的特性(如量子纠缠、量子不可克隆定理)来实现信息的安全传输。与传统加密方式相比,量子安全通信能够提供更高的安全性…...
Linux工作台文件操作命令全流程解析
全文目录 1 确认当前工作路径2 导航与目录管理2.1 关键命令2.2 逻辑衔接 3 文件基础操作3.1 创建 → 备份 → 重命名 → 清理3.2 文件查看和编辑3.3 文件链接3.4 文件diff 4 文件权限与所有权管理5 文件打包与归档6 参考文献 写在前面 shell是一种命令解释器,它提供…...
03 - spring security自定义登出页面
spring security自定义登出页面 文档 00 - spring security框架使用01 - spring security自定义登录页面02 - spring security基于配置文件及内存的账号密码 自定义登出页面 调整配置类WebSecurityConfig.java package xin.yangshuai.springsecurity03.config;import org.…...
unity webgl netbox2本地部署打开运行
unity webgl netbox2本地部署打开运行 复制NetBox2.exe和index.html 在同一级目录下使用,双击netbox2.exe。 下载文件 下载地址: netbox2.exe...
华为OD机试真题 Java 实现【水库蓄水问题】
前言 博主刷的华为机考题,代码仅供参考,因为没有后台数据,可能有没考虑到的情况 如果感觉对你有帮助,请点点关注点点赞吧,谢谢你! 题目描述 思路 1. 其实就是找一个最大的水坑,两个…...
A2A 协议与 MCP 协议:智能代理生态系统的双轮驱动
本文将探讨A2A 协议与MCP 协议的特点、区别及协同作用,帮助开发者和产品设计师更好地理解这一新兴技术领域。 A2A 协议:打造代理间的沟通桥梁 A2A 协议的核心概念 A2A 协议是由 Google 与 50 多家行业合作伙伴共同开发的开放协议,旨在实现…...
使用AI-01开发板和开源后端服务搭建整套小智服务系统
使用AI-01开发板和开源后端服务搭建整套小智服务系统 四博智联的AI-01开发板,基于乐鑫ESP32-C2 专属定制的离线语音模组,能够完美的接入小智AI服务平台,再使用开源后端服务,就能够搭建一个完整的小智AI服务系统了。 下面是具体…...
第三章 权限维持-linux权限维持-隐藏
简介 ssh rootenv.xj.edisec.net -p 密码 xjqxwcyc 1.黑客隐藏的隐藏的文件 完整路径md5 2.黑客隐藏的文件反弹shell的ip端口 {ip:port} 3.黑客提权所用的命令 完整路径的md5 flag{md5} 4.黑客尝试注入恶意代码的工具完整路径md5 5.使用命令运行 ./x.xx 执行该文件 将查询的…...
Linux操作系统系统编程:x86-64架构下的系统调用
在Linux操作系统里,系统编程如同精密仪器的核心部件,掌控着系统运行的关键。而 x86-64 架构下的系统调用,更是连接用户空间程序与内核的关键桥梁。你可以把用户空间的程序想象成一个个 “工匠”,它们有着各式各样的需求࿰…...
linux下如何在一个录目中将一个文件复制到另一个录目,删除目录
一.文件复制到另一个目录 在Linux系统中,要将一个文件从一个目录复制到另一个目录,你可以使用cp命令。下面是一些基本的用法: 1. 使用绝对路径 如果你知道文件的绝对路径和目标目录的绝对路径,你可以直接使用cp命令。例如&…...
用Selenium开启自动化网页交互与数据抓取之旅
用Selenium开启自动化网页交互与数据抓取之旅 在当今数字化时代,数据的价值不言而喻,而网页作为海量数据的重要载体,如何高效获取其中的关键信息成为众多开发者和数据爱好者关注的焦点。Selenium这一强大工具,为我们打开了自动化…...
RabbitMQ的交换机
一、三种交换机模式 核心区别对比 特性广播模式(Fanout)路由模式(Direct)主题模式(Topic)路由规则无条件复制到所有绑定队列精确匹配 Routing Key通配符匹配…...
多模态大语言模型arxiv论文略读(五十五)
MoMA: Multimodal LLM Adapter for Fast Personalized Image Generation ➡️ 论文标题:MoMA: Multimodal LLM Adapter for Fast Personalized Image Generation ➡️ 论文作者:Kunpeng Song, Yizhe Zhu, Bingchen Liu, Qing Yan, Ahmed Elgammal, Xiao…...
TMI投稿指南(四):投稿相关网址
TMI官网:https://ieeetmi.org/ 模版选择器:选择合适的latex模版 IEEE-Template Selector 评审过程状态查看:ScholarOne Manuscripts AE assigns reviewers:副编辑已经开始选择和邀请审稿人,但同意审稿…...
Oracle无法正常OPEN(三)
在Oracle数据库中,如果几个数据文件丢失,导致数据库无法启动,报错“ORA-01157: cannot identify/lock data file 2 - see DBWR trace file”,如果没有物理备份的情况下,位于丢失数据文件的数据是无法找回的,…...
SQL语句练习 自学SQL网 在查询中使用表达式 统计
目录 Day 9 在查询中使用表达式 Day 10 在查询中进行统计 聚合函数 Day 11 在查询中进行统计 HAVING关键字 Day12 查询执行顺序 Day 9 在查询中使用表达式 SELECT id , Title , (International_salesDomestic_sales)/1000000 AS International_sales FROM moviesLEFT JOIN …...
当LLM遇上Agent:AI三大流派的“复仇者联盟”
你一定听说过ChatGPT和DeepSeek,也知道它们背后的LLM(大语言模型)有多牛——能写诗、写代码、甚至假装人类。但如果你以为这就是AI的极限,那你就too young too simple了! 最近,**Agent(智能体&a…...
模拟开发授权平台
这次只是实现应用的curd和公私钥的校验以及第三方的通知dmeo项目,大家可以拓开视野来编写 进入主题 项目链接:桌角的眼镜/develop_auth_platform 直接下拉并运行就行 回调应用代码在test包中 回调应用测试代码 package mainimport ("encoding/…...
python数据分析(八):Pandas 文本数据处理
Pandas 文本数据处理全面指南 1. 引言 在数据分析中,文本数据是常见的数据类型之一。Pandas 提供了强大的字符串处理方法,可以方便地对文本数据进行各种操作。本文将详细介绍 Pandas 中的文本处理功能,包括字符串连接(cat)、分割(split)、替…...
Spring AI:简化人工智能功能应用程序开发
Spring AI:简化人工智能功能应用程序开发 一、项目简介 Spring AI 项目致力于简化包含人工智能功能的应用程序的开发工作,并且不会引入不必要的复杂性。该项目从著名的 Python 项目(如 LangChain 和 LlamaIndex)中获取灵感&#…...