将非空单元格值移至左侧最近的空单元格

将非空单元格值移至左侧最近的空单元格

我有很多行的格式如下:

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

确保只选择了一个单元格。

  1. 按 F5
  2. 点击“特殊...”按钮
  3. 选择“空白”,然后单击“确定”
  4. 右键单击并选择“删除...”
  5. 选择“向左移动单元格”选项,然后按确定

我使用的是 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:

宏的安装和使用非常容易:

  1. ALT-F11 打开 VBE 窗口
  2. ALT-I ALT-M 打开新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,宏将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

您必须更改35以匹配您的实际数据结构。

要删除宏:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要使用 Excel 中的宏:

  1. ALT-F8
  2. 选择宏
  3. 触摸运行

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

必须启用宏才能使其工作!

答案3

如果请求是将单元格向左移动而不是删除单元格(因为需要保持其余列固定在范围之外),该怎么办?

基本上,在原始示例中,这意味着从列开始的任何内容我都希望它们保持原样而不向左移动,该怎么办?

相关内容