欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【WPS+VBA】表格中重复表头与页码的批量删除

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

2025/2/22 14:25:52 来源:https://blog.csdn.net/weixin_47364423/article/details/145713116  浏览:    关键词:【WPS+VBA】表格中重复表头与页码的批量删除

向豆包对话可以死磕的,以前问问题我只是根据第一条给出的答案使用。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删表头。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词