29

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

我注意到,如果我选择我的“空白”单元格,Excel 仍然会计算它们:就像在这张照片中这很奇怪。但是,如果我在那些选定的单元格上按 Delete,计数就会消失,然后我可以按 F5、空格、Ctrl + - 和向上移动单元格,它就可以工作了……

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

在此先感谢您的帮助!:)

4

16 回答 16

39

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

  1. 按下ctrl + a或预先选择您的范围
  2. ctrl + f
  3. 留空查找内容并选择匹配整个单元格内容
  4. 点击查找所有
  5. 按下ctrl + a以选择找到的所有空单元格
  6. 关闭查找对话框
  7. backspacedelete
于 2013-04-14T02:45:05.780 回答
25

这对我有用:

  1. CTR-H 调出查找和替换
  2. 将“查找内容”留空
  3. 将“替换为”更改为唯一的文本,您
    肯定的内容不会在另一个单元格中找到(我使用了“xx”)
  4. 点击“全部替换”
  5. 将步骤 3 中的唯一文本复制到“查找内容”
  6. 删除“替换为”中的唯一文本
  7. 点击“全部替换”
于 2016-08-01T14:18:36.290 回答
23

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

例子

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

  1. =CODE(A1)公式将返回一个#VALUE!如果单元格真的是空的,否则将返回一个数字。这个数字是ASCII=CHAR(32)数字。
  2. 如果选择单元格并在编辑栏中单击并使用光标全选。换行选择示例

删除这些:

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

  1. ctrl + h打开查找和替换。
  2. 在find what中输入一个空格,将replace留空,并确保在选项中勾选了匹配整个单元格内容。
  3. 全部替换

如果您有换行符,这将更加困难并且需要 VBA:

  1. 右键单击工作表选项卡 > 查看代码。
  2. 然后输入以下代码。请记住Chr(10)is a newline 仅根据需要替换它,例如" " & 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


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

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
于 2013-04-14T01:22:41.540 回答
4

我有一个类似的问题,从另一个应用程序导出的分散的空白单元格仍然出现在单元格计数中。

我设法清除它们

  1. 选择我想清理的列/行,然后做
  2. “查找”[无文本]和“替换”[选择词]。
  3. 然后我做了“查找”[选择词]和“替换”[无文本]。

它摆脱了这些单元格中的所有隐藏/幻像字符。也许这对你有用?

于 2014-04-29T16:03:38.810 回答
3

所有,这很简单。我一直在尝试相同的方法,这在 VBA 中对我有用

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

问候, 阿南德兰卡

于 2015-03-09T09:46:05.947 回答
2

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

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

这解决了我的问题,让我可以搜索空白单元格(F5、特殊、空白)并删除空白的行......繁荣。

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

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

于 2016-06-21T19:00:31.450 回答
1

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

于 2014-03-19T21:30:58.067 回答
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
于 2015-06-27T11:05:38.047 回答
1

找到了另一种方式。通过选择标题行 > '数据' 选项卡 > 排序和过滤器 - '过滤器',为所有列设置自动过滤器(很重要,否则您会错位数据)。在第一个数据列中使用下拉菜单,取消选中“全选”并仅选择“(空白)”选项> [确定]。突出显示行(现在全部在一起)> 右键单击​​>“删除行”。返回下拉菜单>“全选”。急速:)

于 2016-04-06T11:30:29.737 回答
0

我的方法类似于 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 识别公式。

于 2014-07-06T18:43:40.840 回答
0

这适用于数字。

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

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

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

于 2013-10-11T16:12:22.750 回答
0

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

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

2)新建一个文本文件(随便哪里,很快就会被删除),打开文本文件然后粘贴excel信息(ctrl+v)

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

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

完毕!没有更多的错误空白!(您现在可以删除临时文本文件)

于 2015-02-19T13:05:21.600 回答
0

这是我在没有任何编码的情况下解决此问题的方法。

  1. 选择我要从中删除“空白”单元格的整个列。
  2. 单击顶部的条件格式选项卡。
  3. 选择“新规则”。
  4. 单击“仅格式化包含的单元格”。
  5. 将“之间”改为“等于”。
  6. 单击“等于”框旁边的框。
  7. 单击有问题的“空白”单元格之一。
  8. 单击格式按钮。
  9. 选择一种随机颜色来填充框。
  10. 按“确定”。
  11. 这应该将所有有问题的“空白”单元格更改为您选择的颜色。现在右键单击一个彩色单元格,然后转到“排序”和“将选定的单元格颜色放在顶部”。
  12. 这会将所有问题单元格放在列的顶部,现在所有其他单元格将保持原来的顺序。您现在可以选择一组中的所有问题单元格,然后单击删除单元格按钮在顶部摆脱它们。
于 2014-08-02T21:03:38.100 回答
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
于 2016-07-12T04:03:23.560 回答
0

Goto->Special->blanks 不喜欢合并的单元格。尝试取消合并要选择空白范围以上的单元格,然后重试。

于 2016-05-05T19:25:58.777 回答
0

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

于 2020-05-28T12:06:12.963 回答