大量数据处理,假如能在繁杂的操作中找到规则,让机器/ai处理,既能大大提高效率,也是一桩乐趣。其中有大量的空白单元格需要合并,规则为:同列单元格从有数值的单元格开始,合并空白单元格。例如下图:1、有一位山区非常困难的群众是这么处理的: Ctrl+G 定位空值,输入公式”=上一单元格值"→合并单元格(合并相同的内容)。ps:这个操作略费点功夫,而且假如有单工程/分项的值相同的话会合并到同一单元格。
2、还有一位山区困难的群众想到了个主意
,请AI帮忙写了一段VBS代码:Sub 向下合并空白单元格() Dim ws As Worksheet Dim rng As Range Dim i As Long, startRow As Long, lastRow As Long, col As Long Dim currentValue As Variant ' 禁用屏幕更新和警告,提升运行速度 Application.ScreenUpdating = False Application.DisplayAlerts = False Set ws = ActiveSheet Set rng = Selection ' 获取用户选中的区域 ' 遍历选中区域的每一列 For col = 1 To rng.Columns.Count startRow =tValue = rng.Cells(startRow, col).Value lastRow = rng.Rows.Count ' 遍历当前列的每一行 For i = 2 To lastRow ' 如果当前单元格不为空,说明上一个合并区间结束 If rng.Cells(i, col).Value <> "" Then ' 合并从startRow到i-1的单元格 If startRow < i - 1 Then ws.Range(rng.Cells(startRow, col), rng.Cells(i - 1, col)).Merge End If startRow = i ' 更新合并起始行 currentValue = rng.Cells(i, col).Value End If Next i ' 合并最后一个区间 If startRow < lastRow Then ws.Range(rng.Cells(startRow, col), rng.Cells(lastRow, col)).Merge End If Next col ' 恢复屏幕更新和警告 Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "合并完成!", vbInformationEnd Sub
打开你的Excel表格,选中需要处理的单元格区域;
按 Alt+F11 打开VBA编辑器;
右键点击左侧你的工作表名称 → 选择「插入」→「模块」;
将代码粘贴到右侧的代码编辑区;
按 F5 运行,或关闭VBA编辑器后按 Alt+F8 选择对应宏名执行。