我有很多行的格式如下:
COLS : A | B | C | D | E
01 : 1 | | 8 | 3 |
02 : | 3 | 2 | 4 | 7
03 : 9 | | 5 | | 6
我怎样才能将值向左移动,这样就不会出现空单元格?目标是:
COLS : A | B | C | D | E
01 : 1 | 8 | 3 | |
02 : 3 | 2 | 4 | 7 |
03 : 9 | 5 | 6 | |
答案1
确保只选择了一个单元格。
- 按 F5
- 点击“特殊...”按钮
- 选择“空白”,然后单击“确定”
- 右键单击并选择“删除...”
- 选择“向左移动单元格”选项,然后按确定
我使用的是 2010,因此 2013 可能会有些不同,但我希望它大致相同。
答案2
就像是:
Sub DataCompactor()
Dim iRows As Long, iCol As Long
Dim i As Long, j As Long, r As Range
iRows = 3
iCols = 5
For i = 1 To iRows
For j = iCols To 1 Step -1
Set r = Cells(i, j)
If r.Value = "" Then r.Delete Shift:=xlToLeft
Next j
Next i
End Sub
如果单元格确实是空的,则可以使用SpecialCells
并避免循环。
编辑#1:
宏的安装和使用非常容易:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,宏将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
您必须更改3和5以匹配您的实际数据结构。
要删除宏:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要使用 Excel 中的宏:
- ALT-F8
- 选择宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其工作!
答案3
如果请求是将单元格向左移动而不是删除单元格(因为需要保持其余列固定在范围之外),该怎么办?
基本上,在原始示例中,这意味着从列开始的任何内容我都希望它们保持原样而不向左移动,该怎么办?