Table of contents
本教程将教你如何用宏、公式和点击按钮来删除Excel中的空栏。
尽管听起来很微不足道,但删除Excel中的空列并不是只用鼠标点击就能完成的。 它也不能在两次点击中完成。 审查工作表中的所有列并手动删除空列的前景肯定是你想避免的。 幸运的是,Microsoft Excel提供了大量不同的功能,通过使用这些功能具备创造性方法的特点,你可以应付几乎所有的任务!
快速删除你永远不应该使用的空列的方法
当谈到在Excel中删除空白时(无论是空单元格、行还是列),许多在线资源依赖于 转到专题 > 空白 指挥。 永远不要这样做 在你的工作表里!
这种方法( F5 > 特别... > 空白 )找到并选择了 所有空单元格 在这个范围内。
如果现在你右键单击选定的单元格并选择 删除 > 整个栏目 ,所有包含的列 至少有一个空白单元格 就会丢失!如果你不小心这么做了,按Ctrl + Z就可以把所有的东西找回来。
现在你知道了在Excel中删除空白列的错误方法,让我们来看看如何正确操作。
如何用VBA删除Excel中的空白列
有经验的Excel用户都知道这条经验法则:不要浪费几个小时的时间去手动做一件事,投资几分钟写一个宏,它将自动为你做这件事。
下面的VBA宏删除了所选范围内的所有空白列。 而且它做得很安全--只有绝对的空列被删除。 如果一列包含一个单元格值,甚至是一个由某些公式返回的空字符串,这样的列将保持不变。
Excel宏:从Excel工作表中删除空列 Public Sub DeleteEmptyColumns() Dim SourceRange As Range Dim EntireColumn As Range On Error Resume Next Set SourceRange = Application.InputBox(_"选择一个范围:" , "删除空列" , _ Application.Selection.Address, Type :=8) If Not (SourceRange Is Nothing ) Then Application.ScreenUpdating = False For i = SourceRange.Columns.Count To 1Step -1 Set EntireColumn = SourceRange.Cells(1, i).EntireColumn If Application.WorksheetFunction.CountA(EntireColumn) = 0 Then EntireColumn.Delete End If Next Application.ScreenUpdating = True End If End Sub如何使用删除空列的宏程序
以下是将宏添加到你的Excel中的步骤。
- 按Alt + F11打开Visual Basic编辑器。
- 在菜单栏上,点击 插入 > 模块 .
- 将上述代码粘贴到代码窗口。
- 按F5来运行宏。
- 当弹出的对话框出现时,切换到感兴趣的工作表,选择所需的范围,并点击确定。
如果你不想在你的工作表中添加宏,你可以从我们的样本工作簿中运行它。 下面是方法。
- 下载我们的样本工作簿《删除Excel中的空白列》,打开它,如果有提示,请启用内容。
- 打开你自己的工作簿或切换到已经打开的工作簿。
- 在你的工作簿中,按Alt + F8 ,选择 DeleteEmptyColumns 宏,并点击 运行 .
- 在弹出的对话框中,选择范围并点击 认可 .
无论哪种方式,选定范围内的所有空列都将被处理掉。
用公式识别和删除Excel中的空白列
上面的宏可以快速无声地删除空列。 但如果你是那种 "把所有东西都控制住 "的人(就像我:),你可能想直观地看到将要被删除的列。 在这个例子中,我们将首先通过使用一个公式来识别空白列,这样你就可以快速查看它们,然后消除所有或部分的列。
注意:在永久删除任何东西之前,特别是通过使用未知的技术,我强烈建议你做一个 备份副本 你的工作簿,只是为了安全起见,如果出了问题。
将备份副本放在安全的地方,执行以下步骤。
第1步,插入一个新行
在你的表格顶部添加一个新的行。 为此,右击第一行的标题,并点击 插入 不要担心会破坏你的数据结构/排列--你可以在以后删除这一行。
第2步,识别空列
在新增加的行的最左边的单元格中,输入以下公式。
=COUNTA(A2:A1048576)=0
然后,通过拖动填充柄将公式复制到其他列。
该公式的逻辑非常简单:COUNTA检查列中空白单元格的数量,从第2行到第1048576行,这是Excel 2019-2007中的行数上限。 你将这个数字与零进行比较,结果是在空白列中为TRUE,在包含至少一个非空单元格的列中为FALSE。 由于使用了相对单元格引用,该公式对每一列进行适当调整它被复制的地方。
如果你是为别人设置工作表,你可能想以更有意义的方式来标记这些列。 没问题,这可以通过类似于这样的IF语句轻松完成。
=IF(COUNTA(A2:A1048576)=0, "空白", "非空白")
现在,该公式明确指出哪些列是空的,哪些不是。
提示:与宏相比,这种方法在哪些列应被视为空白方面给了你更大的灵活性。 在这个例子中,我们检查了整个表,包括标题行。 这意味着如果一列只包含一个标题,这样的列不会被视为空白,也不会被删除。 如果你想只检查数据行 忽略列标题 移除目标范围(A3:A1048576)中的标题行。 结果是,一个有标题而没有其他数据的列将被视为空白并被删除。 此外,你可以将范围限制在最后使用的行,在我们的例子中是A11。
第3步,删除空白栏
有了合理数量的列,你可以简单地选择那些在第一行有 "空白 "的列(要选择多列,在点击列字母时按住Ctrl键)。 然后,右键单击任何选定的列,并选择 删除 从上下文菜单中选择。
如果你的工作表中有几十或几百个列,把所有空的列都拿来查看是很有意义的。 为此,请做以下工作。
- 选择带有公式的最上面一行,转到 数据 标签> 排序和过滤 组,并点击 分类 按钮。
- 在出现的警告对话框中,选择 扩大选择范围 ,然后点击 排序...
- 这将打开 分类 对话框中,你点击 选项... 按钮,选择 从左到右排序。 并点击 认可 . See_also: Excel MAX IF公式寻找有条件的最大值
- 只配置一个排序级别,如下图所示,然后点击确定。
- 排序方式: 第1行
- 排序依据:单元格值
- 顺序:从A到Z
结果是,空白列将被移到工作表的左边部分。
- 选择所有空白列--点击第一列字母,按Shift键,然后点击最后一个空白列的字母。
- 右键单击选定的列,并选择 删除 从弹出的菜单中选择。
完成了!你已经摆脱了空白列,而且现在没有任何东西可以阻止你删除带有公式的顶行。
在Excel中删除空栏的最快方法
在本教程的开头,我写道,在Excel中没有一键删除空白列的方法。 事实上,这并不完全正确。 我应该说没有内置的方法。 我们的终极套件的用户可以在Excel中删除空白,实际上只需点击几次:)
在目标工作表中,切换到 Ablebits工具 标签,点击 删除空白 并选择 空栏 :
为了确保这不是一次意外的鼠标点击,该插件会要求你确认你真的想从该工作表中删除空列。
点击 认可 ,顷刻间,所有的空白栏都消失了!
与上面讨论的宏一样,这个工具只删除那些被认为是 空空如也 有任何单一数值的列,包括标题,都会被保留下来。
删除空白 要了解更多,欢迎下载我们的Excel终极套件的试用版。
空白列不被删除!为什么?
问题 :你已经尝试了上述所有的方法,但有一个或多个空列卡在你的工作表中。 为什么?
很可能是因为这些列并不是真的空的。 许多人眼看不到的不同字符可能潜伏在你的Excel电子表格中而不被注意,尤其是当你从外部来源导入信息时。 这可能是一个单纯的空字符串或一个空格字符,非断裂空格或其他一些非打印字符。
为了找出罪魁祸首,选择有问题的列中的第一个单元格,然后按Ctrl +向下箭头。 例如,下面截图中的C列不是空白,因为C6中有一个空格字符。
双击该单元格,看看里面究竟有什么,或者干脆按删除键,把未知的东西去掉。 然后重复上述过程,看看该列中是否还有其他看不见的东西。 你可能还想通过删除前导、尾部和非断裂的空格来清理数据。
我感谢你的阅读,希望下周在我们的博客上看到你!