VBA小工具:EXCEL如何批量给每行下面插入n个空行?

目录

1EXCEL本身的方法

2 VBA实现1:

2.1 粗糙代码

2.2 需要注意的问题

3 VBA实现2:

3.1 改进代码:根据用户自己先选中的区域,进行插入空行操作。

3.1.1 用户可在EXCEL里选中区域,而不是改VBA代码

3.1.2  自动识别用户选择区域的行数范围

4 神奇的部分:用文心一言问了下给了我一个代码,是有问题的,但是可以拿来参考

4.1 文心一言给我的代码


1EXCEL本身的方法

  • 给每行加1个序号,也就是新增一个辅助列:序号列,比如1,2,3,
  • 然后把要插入空行的区域,再其接着的下面行复制粘贴n份,你要插入多少个空行,就再复制n-1份
  • 然后对辅助列:序号列排序
  • 按照 升序排列即可
  • 数据是否包含标题,自己酌情看,最多只有原始数据上有表头/或没表头,不能有多份表头

 

2 VBA实现1:

2.1 粗糙代码

  • 需要手动写死 行数范围的上限和下限

2.2 需要注意的问题

(1)

  • 写循环时,需要注意一定要从下面往上面插入,否则区域往下循环时会被插入列打乱

(2)

  • Cells(i + 1, 2).Insert 会导致不会整行下移,而只是这个单元格下移,根据需要改写
  • ThisWorkbook.ActiveSheet.Cells(i + 1, 2).Insert shift:=xlDown   ' 单元格下移
  • ThisWorkbook.ActiveSheet.Rows(i + 1).Insert Shift:=xlDown      ' 整行下移

(3)

  • 内外层循环
  • 内层循环,根据调用函数的参数得知要循环插入的行数 times
  • 外层循环,本身的行数,也就是要执行的次数

(4)

  • 从下面开始插入新行,那么最后1行如果下面没内容,就可以从 maxr1 - 1 行开始插入即可
  • 插入行的时候要注意,EXCEL插入insert操作是再当前行的上面插入一行,所以实际执行时,需要使用 i+1 而不是 i .

Sub testcopy2()Call testcopy1(3)
End SubFunction testcopy1(times)' 写死要插入行的范围minr1 = 1maxr1 = 7'一定要从下面往上面插入,否则区域往下循环时会被插入列打乱For i = maxr1 - 1 To minr1 Step -1For j = 1 To times
'           Cells(i + 1, 2).Insert 会导致不会整行下移,而只是这个单元格下移,根据需要改写
'           ThisWorkbook.ActiveSheet.Cells(i + 1, 2).Insert shift:=xlDownThisWorkbook.ActiveSheet.Rows(i + 1).Insert Shift:=xlDownNext jNext iEnd Function

3 VBA实现2:

3.1 改进代码:根据用户自己先选中的区域,进行插入空行操作。

3.1.1 用户可在EXCEL里选中区域,而不是改VBA代码

  • 需要,用户先选中一个指定区域,比如 下图这样
  • 让用户在EXCEL操作选中,比VBA里改参数还是友好的多

 

3.1.2  自动识别用户选择区域的行数范围

  • 首先,无论是selection 还是 range 其 address属性,就包含了行列信息,有的应该还可以拆解为RIC1格式
  • '需要处理Address "$B$1:$C$6" 取出 row的范围,minr-maxr
  • '再从 "$B$1" 取到行数row

  '需要处理Address "$B$1:$C$6" 取出 row的范围,minr-maxr
  SA2 = Split(Selection.Address, ":")
  For i = LBound(SA2) To UBound(SA2)
        minr1 = SA2(0)
        maxr1 = SA2(1)
  Next
 

  '再从 "$B$1" 取到行数row
  minr1 = Right(SA2(0), Len(SA2(0)) - Application.Find("$", SA2(0), 2))
  maxr1 = Right(SA2(1), Len(SA2(1)) - Application.Find("$", SA2(1), 2))
  

Sub testcopy2()Call testcopy1(5)
End SubFunction testcopy1(times)'需要用户先在EXCEL手动选择一个区域Selection'需要处理Address "$B$1:$C$6" 取出 row的范围,minr-maxrSA2 = Split(Selection.Address, ":")For i = LBound(SA2) To UBound(SA2)minr1 = SA2(0)maxr1 = SA2(1)Nextminr1 = Right(SA2(0), Len(SA2(0)) - Application.Find("$", SA2(0), 2))maxr1 = Right(SA2(1), Len(SA2(1)) - Application.Find("$", SA2(1), 2))For i = maxr1 - 1 To minr1 Step -1For j = 1 To times - 1ThisWorkbook.ActiveSheet.Rows(i + 1).Insert Shift:=xlDownNext jNext iEnd Function

4 神奇的部分:用文心一言问了下给了我一个代码,是有问题的,但是可以拿来参考

4.1 文心一言给我的代码

  • 执行效果是错的
  • 问题1: 插入行没有倒着处理,所以代码执行会有问题
  • 问题2: 内外层循环写的有问题

 

Sub InsertBlankRows1()Dim selectedRange As RangeDim numRows As IntegerDim i As Integer'获取选中区域Set selectedRange = Selection'获取要插入的空行数numRows = 3 '这里的数字3表示要插入3个空行'循环插入空行For i = 1 To numRows'在每行的下面插入一个空行For j = 1 To selectedRange.Rows.CountselectedRange.Rows(j).Offset(1).EntireRow.Insert Shift:=xlDownNext jNext iEnd Sub

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js逆向补环境-调试工具vscode与nodejs使用之无环境联调

目录 一、啊哈一、Nodejs安装1、nodejs最新版本的安装(windows)2、旧版nodejs更新成最新版本(windows)3、nodejs安装(linux) 二、vscode安装使用(windows)1、下载安装vscode2、vscode运行插件Code Runner安…

微信小程序视图层莫名出现”竖线“

写完视图层后&#xff0c;发现页面上莫名其妙的出现了一些“竖线”&#xff0c;如下图所示&#xff1a; 这段html代码是这样写的&#xff1a; <view class"other-des"><view class"section"><text class"section-num">{{cou…

Python实现PSO粒子群优化算法优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 PSO是粒子群优化算法&#xff08;Particle Swarm Optimization&#xff09;的英文缩写&#xff0c;是一…

抖音seo源码开发部署技术分享(一)

目录 开发概述 自研开发者介绍 开发要求&#xff1a; 技术开发布局 源码部署及搭建分享 部署环境搭建 代码开发示例 请求样例 响应样例&#xff1a; 代码展示样例 开发概述 开放平台基于开发者诉求和相关平台规则&#xff0c;提供了两种开放模式&#xff1a;能力开放…

Python零基础入门(七)——Python中的选择和循环语句

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…

day69_Vue进阶

今日内容 零、 复习昨日 零、 复习昨日 nginx 静态服务器(动静分离)反向代理服务器(代理后端服务器)负载均衡异步 前端工程化 —> java代码工程 一、使用Vue-Cli搭建Vue项目 1.1 什么是vue-cli cli: Command Line 命令行工具&#xff0c;vue-cli就是vue的命令行工具&#xf…

LeetCode[面试题17.14]最小的K个数

难度&#xff1a;中等 题目&#xff1a; 设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例&#xff1a; 输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4]提示&#xff1a; 0 < len(arr) < 1000000 <…

开源教育对话大模型 EduChat

文章目录 一、&#x1f680; 前言二、&#x1f916; 本地部署三、&#x1f468;‍&#x1f4bb; 使用示例四、&#x1f50e; 总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、&#x1f680; 前言 教育是一项对人类身心发展产生影响的社会实践…

磁盘与文件系统管理

磁盘结构及分区表示 硬盘 Hard Disk Drive &#xff0c;简称 HDD 是计算机常用的存储设备之一。 1 磁盘基础 1.1 硬盘的结构 1.1.1 数据结构 ①扇区&#xff1a;磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区&#xff0c;叫做引导…

easyupload

红框位置是上传后的提示 依次尝试上传&#xff0c;发现php,phtml.php3&#xff0c;php5&#xff0c;双写等都不行 .htaccess文件也不行 尝试.php. 绕过 (windows中会把后缀名最后的空格和. 省略&#xff0c;即上传.php.绕过后会变为.php) 加入图片头的php文件也不行 但是加入文…

100、基于STM32单片机自动跟随小车 红外遥控控制小车避障模式 跟随模式设计(程序+原理图+PCB源文件+流程图+硬件设计资料+元器件清单等)

绪 论 智能小车通过各种感应器获得外部环境信息和内部运动状态&#xff0c;实现在复杂环境背景下的自主运动&#xff0c;从而完成具有特定功能的机器人系统。而随着智能化电器时代的到来&#xff0c;它们在为人们提供的舒适的生活环境的同时&#xff0c;也提高了制造智能化电器…

Redis下载和安装(Windows系统)

本套教程中采用 Windows 系统对 Redis 数据库进行讲解。 虽然 Redis 官方网站没有提供 Windows 版的安装包&#xff0c;但可以通过 GitHub 来下载 Windows 版 Redis 安装包&#xff0c;下载地址&#xff1a;点击前往。 注意&#xff1a;Windows 安装包是某位民间“大神”根据 …