Excel告诉我我的空白单元格不是空白

时间:2013-04-13 05:25:29

标签: excel vba excel-vba

因此,在excel中,我试图通过使用F5查找空白单元格,然后按Ctrl + - 删除它们,并将单元格向上移动,从而消除我的单元格之间的空白单元格。但当我尝试这样做时,它告诉我“没有找到细胞”。

我注意到,如果我选择“空白”单元格,Excel仍会对它们进行计数:Like in this picture这很奇怪。但是,如果我在那些选定的单元格上按Delete键,计数就会消失,然后我就可以进入F5,空白,Ctrl + - 和Shift单元格,它可以正常工作......

所以我的问题是我怎么能这样做,但Excel认为这些空白单元格不是空白的?我试图通过删除空白单元格,但我有很多数据,并意识到这将花费我很长时间。 我需要找到一种方法在选择的数据中选择这些“空白”单元格。

提前感谢您的帮助! :)

16 个答案:

答案 0 :(得分:25)

选择并清除这些空白单元格以使其空白的简单方法:

  1. ctrl + a 或预先选择范围
  2. ctrl + f
  3. 保留找到为空,然后选择匹配整个单元格内容
  4. 点击查找全部
  5. ctrl + a 选择找到的所有空单元格
  6. 关闭查找对话框
  7. 退格删除

答案 1 :(得分:16)

一个启示:一些空白单元格实际上并不是空白!正如我将展示的那样,单元格可以包含空格,换行符和真空:

example

要快速找到这些单元格,您可以做一些事情。

  1. 如果单元格确实为空,=CODE(A1)公式将返回 #VALUE!,否则将返回一个数字。此数字是=CHAR(32)中使用的ASCII number
  2. 如果选择单元格并单击公式栏并使用光标选择全部。 newline selection example
  3. 删除这些:

    如果您在单元格中只有空格,则可以使用以下方法轻松删除这些内容:

    1. ctrl + h 打开查找和替换。
    2. 找到中输入一个空格,将替换为为空,并确保在选项中勾选匹配整个单元格内容
    3. 全部替换
    4. 如果你有换行符,这就更难了,需要VBA:

      1. 右键单击工作表标签>查看代码。
      2. 然后输入以下代码。请注意,Chr(10)是换行符,只能根据需要替换它,例如" " & Char(10)是一个空格和换行符:

        Sub find_newlines()
            With Me.Cells
                Set c = .Find(Chr(10), LookIn:=xlValues, LookAt:=xlWhole)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                        c.Value = ""
                        Set c = .FindNext(c)
                        If c Is Nothing Then Exit Do
                    Loop While c.Address <> firstAddress
                End If
            End With
        End Sub
        
      3. 现在按 F5 运行您的代码。


      4. 提供文件后:选择感兴趣的范围以提高性能,然后运行以下命令:

        Sub find_newlines()
            With Selection
                Set c = .Find("", LookIn:=xlValues, LookAt:=xlWhole)
                If Not c Is Nothing Then
                    firstAddress = c.Address
                    Do
                        c.Value = ""
                        Set c = .FindNext(c)
                        If c Is Nothing Then Exit Do
                    Loop While c.Address <> firstAddress
                End If
            End With
        End Sub
        

答案 2 :(得分:14)

这对我有用:

  1. CTR-H调出查找和替换
  2. 离开&#39;查找内容&#39;空白
  3. 更改&#39;替换为&#39;一个独特的文字,你是什么 在另一个单元格中找不到肯定的东西(我使用了&#39; xx&#39;)
  4. 点击 &#39;全部替换&#39;
  5. 将第3步中的唯一文字复制到&#39;查找内容&#39;
  6. 删除&#39;替换为&#39;中的唯一文字
  7. 点击&#39;全部替换&#39;

答案 3 :(得分:4)

我遇到了类似的问题,其中来自另一个应用程序的导出的分散空白单元格仍然显示在细胞计数中。

我设法通过

清除它们
  1. 选择我要清理的列/行,然后执行
  2. &#34;查找与#34; [没有文字]和&#34;替换&#34; [选择的词]。
  3. 然后我做了#34; Find&#34; [选择的词]和&#34;替换&#34; [没有文字]。
  4. 它摆脱了那些细胞中的所有隐藏/幻影角色。也许这对你有用吗?

答案 4 :(得分:2)

全部,这很简单。我一直在努力尝试这个,这对我来说在VBA中是有用的

Range("A1:R50").Select    'The range you want to remove blanks
With Selection
    Selection.NumberFormat = "General"
    .Value = .Value
End With

此致 阿南德兰卡

答案 5 :(得分:1)

如果您没有要保留的格式或公式,可以尝试将文件保存为制表符分隔的文本文件,关闭它,然后使用excel重新打开它。这对我有用。

答案 6 :(得分:1)

'Select non blank cells
Selection.SpecialCells(xlCellTypeConstants, 23).Select
' REplace tehse blank look like cells to something uniqu
Selection.Replace What:="", Replacement:="TOBEDELETED", LookAt:=xlWhole, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
'now replace this uique text to nothing and voila all will disappear
Selection.Replace What:="TOBEDELETED", Replacement:="", LookAt:=xlWhole, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

答案 7 :(得分:1)

找到另一种方式。通过选择标题行&gt;为所有列设置AutoFilter(重要或您将使数据不对齐) &#39;数据&#39;标签&gt;排序和过滤 - &#39;过滤&#39;。使用第一个数据列中的下拉菜单,取消选中&#39;全选&#39;并且只选择&#39;(空白)&#39;选项&gt; [好]。突出显示行(现在全部在一起)&gt;右键单击&gt; &#39;删除行&#39;。回到下拉列表&gt; &#39;全选&#39;。 Presto:)

答案 8 :(得分:1)

不确定是否已经说过,但我遇到类似的问题,单元格中没有显示任何内容,但在运行IsBlank()公式时不会出现空白。

我选择了整个专栏,选择了Find&amp;替换,找到没有任何内容的单元格并替换为0,然后再次运行查找和替换,找到0的单元格并替换为“”。

这解决了我的问题并允许我搜索空白单元格(F5,Special,Blanks)并删除空白的行.... BOOM。

可能不适用于所有应用程序,但这解决了我的问题。

有时在单元格中有空格显示为空白但如果在单元格上按F2,则会看到空格。如果您知道单元格中的确切空格数,也可以通过这种方式进行搜索

答案 9 :(得分:0)

这适用于数字。

如果您的范围是O8:O20,那么在附近的空范围内(例如T8:T20)输入= O8 / 1并填写。这将为您提供“空”单元格的#VALUE结果,并且您的原始数字将保持不变。

然后选择范围T8:20(CTL- *,如果它还没有)点击F5并选择Special。从Special对话框中,选择Errors并单击OK。这将取消选择您的实际数字,只选择#VALUE单元格。删除它们,你将有实际的空单元格。复制T8:T20并粘贴回O8:O20。

基本上,由于空白单元格不起作用,您需要将“空”单元格转换为Go To Special可以锁定的单元格。任何转换为​​#VALUE的操作都会起作用,并且还应支持其他“错误”类型。

答案 10 :(得分:0)

我的方法类似于Curt上面关于将其保存为制表符分隔文件并重新导入的建议。 它假定您的数据只包含没有公式的值。 这可能是一个很好的假设,因为“坏”空白的问题是由空白和空值之间的混淆引起的 - 通常是从其他地方导入的数据 - 所以不应该有任何公式。 我的方法是解析 - 非常类似于保存为文本文件并重新导入,但您可以在不关闭和重新打开文件的情况下执行此操作。 它在数据&gt;下文本到列&gt;分隔的&gt;删除所有解析字符(如果需要,也可以选择文本)&gt;完。这应该会导致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,因为修复此“空白”问题的原始手动方法是使Excel通过按F2和Enter来识别公式。

答案 11 :(得分:0)

以下是我如何在没有任何编码的情况下修复此问题。

  1. 选择我要删除的整个列&#34;空白&#34;细胞来自。
  2. 单击顶部的“条件格式”选项卡。
  3. 选择&#34;新规则&#34;。
  4. 单击&#34;仅格式化包含&#34;。
  5. 的单元格
  6. 更改&#34;之间&#34; to&#34;等于&#34;。
  7. 点击&#34;旁边的框,等于&#34;框。
  8. 点击其中一个问题&#34;空白&#34;细胞
  9. 单击“格式”按钮。
  10. 选择随机颜色以填充此框。
  11. 按&#34;确定&#34;。
  12. 这应该改变所有问题&#34;空白&#34;细胞到您选择的颜色。现在右键单击其中一个彩色单元格,然后转到&#34;排序&#34;和&#34;将选定的单元格颜色放在顶部&#34;。
  13. 这会将所有问题单元格放在列的顶部,现在所有其他单元格将按照您放入的原始顺序保留。现在可以选择一个组中的所有问题单元格并单击删除顶部的单元格按钮以摆脱它们。

答案 12 :(得分:0)

对我来说最简单的解决方案是:

1)选择范围并复制(ctrl + c)

2)创建一个新的文本文件(任何地方,它将很快删除),打开文本文件然后粘贴excel信息(ctrl + v)

3)现在Excel中的信息在文本文件中,在文本文件中执行全选(ctrl + a),然后复制(ctrl + c)

4)转到步骤1中原始范围的开头,然后在步骤3中粘贴该副本中的旧信息。

DONE!不再是虚假的空白! (您现在可以删除临时文本文件)

答案 13 :(得分:0)

Goto-&gt; Special-&gt;空白不喜欢合并的单元格。尝试在您要选择空白的范围之上取消合并单元格,然后重试。

答案 14 :(得分:0)

我有一个类似的问题,让COUNTA公式计算非空白单元格,它计算所有这些(即使空白的非空白),我尝试= CODE()但他们没有空格或新线。

我发现当我点击单元格然后单击它时,公式将计算单元格。我有成千上万的细胞所以不能手动完成。我写了这个VBA语句来检查所有单元格,如果它们是空白的,那么将它们留空。忽略这个宏的无意义,并相信我通过强制Excel将空单元格识别为实际为空来​​实际工作。

'This checks all the cells in a table so will need to be changed if you're using a range
Sub CreateBlanks()

Dim clientTable As ListObject
Dim selectedCell As Range

Set clientTable = Worksheets("Client Table").ListObjects("ClientTable")

For Each selectedCell In clientTable.DataBodyRange.Cells
    If selectedCell = "" Then
        selectedCell = ""
    End If
Next selectedCell
End Sub

答案 15 :(得分:0)

将数据集保存为CSV文件并打开该文件,然后复制数据集并粘贴到excel文件中。 然后crtl + g将对您的文件起作用,这意味着excel将识别出空白确实是空白。