Excel VBA需求:A17-C30区域数据去重整理(禁删改行列)
Excel 数据去重整理求助
需求说明
- 目标处理区域:工作表A17至C30
- 原始数据:
| A18(文档编号) | B18(文档标题) | C18(版本) |
|---|---|---|
| 周一 | 红色 | R1 |
| 周一 | 红色 | R1 |
| 周一 | 红色 | R1 |
| 周一 | 黄色 | R1 |
| 周二 | 蓝色 | R2 |
| 周三 | 白色 | R1 |
| 周三 | 白色 | R1 |
| 周四 | 绿色 | R3 |
- 预期结果(无重复规整数据):
| A18 | B18 | C18 |
|---|---|---|
| 周一 | 红色 | R1 |
| 周二 | 蓝色 | R2 |
| 周三 | 白色 | R1 |
| 周四 | 绿色 | R3 |
- 限制条件:不可删除、插入行列或筛选操作(避免影响其他数据),仅允许复制粘贴
尝试过的方法(存在问题)
我写了一段VBA代码,能清空重复行的内容,但没法把空行位置用有效数据填充,结果仍存在空行,达不到预期的规整效果:
Sub ClearRowValues() Dim ws As Worksheet Dim lastRow As Long Dim i As Long ' 设置数据所在工作表 Set ws = ThisWorkbook.Sheets("INPUT") ' 查找A列最后一行有数据的行号 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 从下往上遍历行 For i = lastRow To 17 Step -1 ' 从倒数第二行向上遍历 If ws.Cells(i, 1).Value = ws.Cells(i - 1, 1).Value Then ' 如果当前文档编号与上一行相同,清空当前行内容 ws.Cells(i, 1).ClearContents ws.Cells(i, 2).ClearContents ws.Cells(i, 3).ClearContents End If Next i End Sub
内容的提问来源于stack exchange,提问作者HummBird
相关产品推荐
相关产品推荐

