【WPS+VBA】表格中重复表头与页码的批量删除

ops/2025/2/22 18:49:12/

向豆包对话可以死磕的,以前问问题我只是根据第一条给出的答案使用。AI还有个优点,不会烦你,只要有问题就接着问,一直问到解决好问题。小编对豆包的连环提问,最终解决了批量删表头页面的问题。

1、豆包对话过程

开始问题1:

excel表格中隔几行就会出相同(有多行)的表头,如何只保留一个表头,中间的表头都去掉,在wps里怎么快速实现,用VBA实现。

出现错误接着问2:

If ws.Range(ws.Cells(i, 1), ws.Cells(i + headerRow - 1, ws.Cells(1, ws.Columns.Count).End(xlToRight).Column)).Value = headerRange.Value Then这行代码显示有错误,表头有5行

还是不行接问3:

设置表头区域的代码是否要根据表的情况进行修改

问4:

表头如果有些单元格是合并的,有没有影响,是否要改代码

问5:

执行完还是没有删除表头,代码中设置表头区域注释下的代码是否要修改

问6:

表头是从一行一列开始的,表头范围是1-5行,A-L列,表头中第四行与第五行中有些单元格是合并的

问7:

还是不行,宏运行没有报错,运行的过程跟结果在哪里看

问8:

不知道你理解完整我的需求不,目前第一个表头范围(A1,L5),第二个表头(A28,L32)...,我需要的就是只保留第一个表头,能确定表头范围内的内容一致,表头范围内有合并单元格,现在需要完整的可执行的VBA代码

问9:

只删除了一个,我需要删除与表头一样的,且我不需要找规律,适应第二个表头不是A28:L32范围的

。。。

问100:

当前 i 的值: 1 headerRowCount 的值: 0 i + headerRowCount - 1 的值: 0

通过一些列的问题,最终获得一段满意的vba代码:

Sub RemoveDuplicateHeadersAndPageNumbers()Dim ws As WorksheetDim lastRow As LongDim headerRowCount As LongDim headerRange As RangeDim checkRange As RangeDim i As LongDim isSame As BooleanDim cell As RangeDim pageNumberRows As Long' 设置要操作的工作表,可根据实际情况修改Set ws = ThisWorkbook.Sheets("Sheet1")' 获取数据区域的最后一行lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row' 表头行数headerRowCount = 5' 设置第一个表头区域Set headerRange = ws.Range("A1:L5")' 页码所占行数pageNumberRows = 1' 先删除重复表头i = headerRowCount + 1Do While i <= lastRow - headerRowCount + 1' 输出调试信息,查看变量值Debug.Print "当前 i 的值: " & iDebug.Print "headerRowCount 的值: " & headerRowCountDebug.Print "i + headerRowCount - 1 的值: " & (i + headerRowCount - 1)Set checkRange = ws.Range(ws.Cells(i, 1), ws.Cells(i + headerRowCount - 1, 12)) ' 12 代表 L 列isSame = True' 逐单元格比较For Each cell In headerRangeDim correspondingCell As RangeSet correspondingCell = checkRange.Cells(cell.Row - headerRange.Row + 1, cell.Column)' 处理合并单元格Dim mergedValue1 As VariantDim mergedValue2 As VariantIf cell.MergeCells ThenmergedValue1 = Trim(cell.MergeArea.Cells(1, 1).Value)ElsemergedValue1 = Trim(cell.Value)End IfIf correspondingCell.MergeCells ThenmergedValue2 = Trim(correspondingCell.MergeArea.Cells(1, 1).Value)ElsemergedValue2 = Trim(correspondingCell.Value)End If' 将值转换为文本格式进行比较If CStr(mergedValue1) <> CStr(mergedValue2) ThenisSame = FalseExit ForEnd IfNext cell' 如果相同则删除对应的行If isSame Thenws.Rows(i & ":" & (i + headerRowCount - 1)).Delete' 因为删除了行,所以更新最后一行lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).RowElse' 如果不相同,移动到下一行i = i + 1End IfLoop' 重新获取最后一行lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row' 再删除页码行和空白行i = lastRowDo While i > headerRowCount' 检查是否为页码行Dim isPageNumber As BooleanisPageNumber = TrueFor j = 0 To pageNumberRows - 1Dim currentCell As RangeSet currentCell = ws.Cells(i - j, 1)Dim rowValue As StringrowValue = Trim(currentCell.MergeArea.Cells(1, 1).Text)' 检查是否为合并单元格If Not currentCell.MergeCells ThenisPageNumber = FalseDebug.Print "第 " & (i - j) & " 行:不是合并单元格"Exit ForEnd If' 检查内容是否为纯数字文本If Not IsNumeric(rowValue) Or Not IsAllDigits(rowValue) ThenisPageNumber = FalseDebug.Print "第 " & (i - j) & " 行:内容不是纯数字文本,内容为 " & rowValueExit ForEnd If' 检查内容是否居中If currentCell.HorizontalAlignment <> xlCenter ThenisPageNumber = FalseDebug.Print "第 " & (i - j) & " 行:内容未居中,对齐方式为 " & currentCell.HorizontalAlignmentExit ForEnd IfNext jIf isPageNumber Then' 删除页码行ws.Rows(i - pageNumberRows + 1 & ":" & i).Delete' 因为删除了行,所以更新最后一行lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Rowi = i - pageNumberRowsDebug.Print "已删除第 " & (i - pageNumberRows + 1) & " 行到第 " & i & " 行的页码行"Elsei = i - 1End IfLoop
End Sub
Function IsAllDigits(str As String) As BooleanDim i As LongFor i = 1 To Len(str)If Not Mid(str, i, 1) Like "[0-9]" ThenIsAllDigits = FalseExit FunctionEnd IfNext iIsAllDigits = True
End Function

2、wps测试

2.1 首先得安装wps宏,wps.vba.exe,文末分享:

2.2 打开我们预算文件表格,那种直接可以打印的预算excel。找到开发工具——点击录制宏——停止——点击vb宏。

2.3 点击宏编辑进入vba编辑

2.4 复制豆包生成的代码,修改对应表格名称,根据表头的情况对代码进行修改(有注释,代码好理解)。

3、视频教程与资料分享

3.1 视频操作流程:

WPS+VBA删除表格中多余的表头、页码、空白页

3.2 素材下载(含wps.vba.exe),公号回复:vba删表头。


http://www.ppmy.cn/ops/160571.html

相关文章

【HeadFirst系列之HeadFirst设计模式】第8天之适配器模式与外观模式:让不兼容的接口和谐共处!

适配器模式与外观模式&#xff1a;让不兼容的接口和谐共处&#xff01; 大家好&#xff01;今天我们来聊聊设计模式中的适配器模式&#xff08;Adapter Pattern&#xff09;和外观模式&#xff08;Facade Pattern&#xff09;。如果你曾经遇到过接口不兼容的问题&#xff0c;或…

51c大模型~合集69

我自己的原文哦~ https://blog.51cto.com/whaosoft/12221979 #7项基于SAM万物分割模型研究工作 1、CC-SAM: SAM with Cross-feature Attention and Context for Ultrasound Image Segmentation #ECCV2024 #SAM #图像分割 #医学图像 Segment Anything Model (SAM) 在自…

区块链技术前沿:DApp、DeFi与IDO开发的深度探索

随着数字化浪潮的推进&#xff0c;区块链技术作为其核心驱动力之一&#xff0c;正逐步重塑各行各业的面貌。在这一技术浪潮中&#xff0c;DApp&#xff08;去中心化应用&#xff09;、DeFi&#xff08;去中心化金融&#xff09;以及IDO&#xff08;首次去中心化交易所发行&…

【Gin】2:快速上手Gin框架(模版、cookie、session)

本文目录 一、模版渲染二、自定义模版函数三、cookie四、Session五、cookie、session区别六、会话攻击 一、模版渲染 在 Gin 框架中&#xff0c;模板主要用于动态生成 HTML 页面&#xff0c;结合 Go 语言的模板引擎功能&#xff0c;实现数据与视图的分离。 模板渲染是一种动态…

去中心化的共同运营平台 方案

实现一个 去中心化的共同运营平台 需要结合技术架构、治理模式和经济模型的设计&#xff0c;同时解决信息真实性、用户激励和去中心化治理的挑战。以下是实现这一目标的路径和关键要素&#xff1a; 一、技术架构设计 1. 去中心化存储与数据管理 区块链底层&#xff1a;使用区…

react(9)-redux

使用CRA快速创建react项目 npx create-react-app react-redux 安装配套工具 npm i reduxjs/toolkit react-redux 启动项目 在创建项目时候会出现一个问题 You are running create-react-app 5.0.0, which is behind the latest release (5.0.1). We no longer support…

从零到一:构建现代 React 应用的完整指南

1. create-react-app (CRA) 简介: create-react-app 是官方推荐的 React 项目脚手架工具,提供了一个开箱即用的开发环境,帮助开发者快速启动 React 应用。它会自动配置 Webpack、Babel、ESLint 等工具,让你专注于开发而不需要手动配置工具链。 特点: 零配置:CRA 自动配…

Apache Spark 的主要特点

Apache Spark 是一个大数据处理框架&#xff0c;提供了快速、通用的数据处理引擎&#xff0c;支持在大规模数据集上进行高效的并行处理。它通过基于内存的计算以及优化的调度来加速数据处理任务&#xff0c;比传统的基于磁盘的数据处理框架&#xff08;如Hadoop&#xff09;要快…