我的方法类似于 Curt 上面关于将其保存为制表符分隔的文件并重新导入的建议。它假定您的数据只有值而没有公式。这可能是一个很好的假设,因为“坏”空白的问题是由空白和空值之间的混淆引起的——通常是在从其他地方导入的数据中——所以不应该有任何公式。我的方法是就地解析——非常类似于保存为文本文件并重新导入,但您可以在不关闭和重新打开文件的情况下执行此操作。它位于数据 > 文本到列 > 分隔 > 删除所有解析字符(如果需要,也可以选择文本)> 完成。这应该会导致 Excel 从头开始或从文本中重新识别您的数据,并将空白识别为真正的空白。
Sub F2Enter_new()
Dim rInput As Range
If Selection.Cells.Count > 1 Then Set rInput = Selection
Set rInput = Application.InputBox(Title:="Select", prompt:="input range", _
Default:=rInput.Address, Type:=8)
' Application.EnableEvents = False: Application.ScreenUpdating = False
For Each c In rInput.Columns
c.TextToColumns Destination:=Range(c.Cells(1).Address), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Next c
Application.EnableEvents = True: Application.ScreenUpdating = True
End Sub
您还可以打开该注释行以使该子例程“在后台”运行。对于这个子例程,它只略微提高了性能(对其他人来说,它确实有很大帮助)。之所以命名为 F2Enter,是因为修复此“空白”问题的原始手动方法是通过按 F2 和 Enter 使 Excel 识别公式。