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

所以在Excel中,我试图摆脱我的细胞之间的空白单元格,其中有信息,使用F5find空白单元格,然后Ctrl + – 删除它们,并将单元格向上移动。 但是当我试图做到这一点,它告诉我,有没有find细胞。

我注意到,如果我select我的“空白”单元格,Excel仍然计算它们: 就像这张照片一样 这很奇怪。 但是,如果我按下删除这些选定的单元格,计数消失,然后我可以去F5,空白,Ctrl + – 和Shift单元格,它的工作原理…

所以我的问题是我怎么能仍然这样做,但Excel认为这些空白单元格不是空白? 我已经试过了,只需按下删除空白单元格,但我有很多数据,并意识到这将花费我太多时间。 我需要find一种方法来select这些“空白”单元格中的数据select。

在此先感谢您的帮助! 🙂

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

example

快速find这些细胞 ,你可以做一些事情。

  1. =CODE(A1)公式将返回一个#VALUE! 如果单元格确实是空的,否则一个数字将返回。 这个数字是=CHAR(32)使用的ASCII码 。
  2. 如果您select单元格并单击公式栏并使用光标select全部。 newline selection example

删除这些:

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

  1. ctrl + h打开查找和replace。
  2. 查找内容中input一个空格,将空格replace为空,并确保您匹配全部单元格内容在选项中打勾。
  3. 全部replace

如果你有换行符,这是更困难的,需要VBA:

  1. 右键单击工作表标签>查看代码。
  2. 然后input下面的代码。 请记住, Chr(10)是一个换行符,只是根据需要将其replace,例如" " & 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


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

 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 

一个简单的方法来select和清除这些空白单元格,使其为空:

  1. ctrl + a或预先select您的范围
  2. 按下ctrl + f
  3. 留下find空白并select匹配整个单元格的内容
  4. 点击查找全部
  5. ctrl + aselect所有find的空单元格
  6. closures查找对话框
  7. 退格删除

这对我工作:

  1. CTR-H调出查找和replace
  2. 留下“查找什么”空白
  3. 将“replace为”replace为独一无二的文本,就是您自己的东西
    肯定不会在另一个单元格中find(我用'xx')
  4. 点击“全部replace”
  5. 将第3步中的唯一文本复制到“查找内容”
  6. 删除“replace为”中的唯一文本
  7. 点击“全部replace”

我有类似的问题,从另一个应用程序的出口散落的空白单元格仍显示在细胞计数。

我设法清除他们

  1. select我想要清理的列/行,然后执行
  2. “查找”[没有文字]和“replace”[select的话]。
  3. 然后,我做了“查找”[select的单词]和“replace”与[没有文字]。

它清除了这些单元格中的所有隐藏/幻影字符。 也许这会为你工作?

所有这些都很简单 我一直在尝试,这是在VBA中为我工作的

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

问候,阿南德

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

 '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 

find另一种方式。 通过select标题行>“数据”选项卡>sorting和筛选 – “筛选”,为所有列设置自动筛选(重要的或您将不alignment数据)。 在第一个数据列中使用下拉菜单,取消select“全选”,然后select“(空白)”选项> [确定]。 突出显示行(现在全部在一起)>右键单击>“删除行”。 返回到“全选”下拉菜单。 Presto 🙂

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

我select了整个列,select查找和replace,find没有任何内容的单元格,并replace为0,然后再次运行查找和replace,find单元格为0,并replace为“”。

这解决了我的问题,并允许我search空白单元格(F5,特殊,空白),并删除行空白…. BOOM。

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

有时在单元格中有空格,但是如果在单元格上按F2,则会看到空格。 如果知道单元格中的空格的确切数目,也可以用这种方法进行search

这适用于数字。

如果您的范围是O8:O20,则在附近的空白范围内(例如T8:T20)input= O8 / 1并填写。 这会给你一个“空”单元格的结果#VALUE,你的原始数字将保持原样。

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

从本质上讲,由于空白单元格不起作用,所以需要将“空”单元格转换为Go To Special可以locking的单元格。 任何可以转换成#VALUE的动作都可以工作,而其他“错误”types也应该被支持。

我的方法类似于Curt上面关于将其保存为制表符分隔文件并重新导入的build议。 它假定你的数据只有没有公式的值。 这可能是一个好的假设,因为“坏”空白问题是由空白和空值之间的混淆引起的 – 通常是从其他地方导入的数据 – 所以不应该有任何公式。 我的方法是parsing到位 – 非常类似于保存为文本文件并重新导入,但是您可以在不closures并重新打开文件的情况下执行此操作。 它在数据>文本到列>分隔下>删除所有分析字符(如果需要,也可以select文本)>完成。 这应该导致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识别公式。

以下是我如何解决这个问题,没有任何编码。

  1. select我想从中删除“空白”单元的整个列。
  2. 点击条件格式标签顶部。
  3. select“新规则”。
  4. 点击“仅格式化包含的单元格”。
  5. 将“之间”更改为“等于”。
  6. 点击“等于”框旁边的框。
  7. 点击问题“空白”单元之一。
  8. 点击格式button。
  9. select一个随机的颜色填充框。
  10. 按“确定”。
  11. 这应该将所有问题“空白”单元格更改为您select的颜色。 现在右键单击其中一个彩色单元格,然后转到“sorting”和“将选定的单元格颜色置于顶部”。
  12. 这将把所有问题单元格放在列的顶部,现在所有其他单元格将保持原先的顺序。现在,您可以select一个组中的所有问题单元格,然后单击删除单元格button在上面摆脱他们。

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

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

2)创build一个新的文本文件(任何地方,它将被删除),打开文本文件,然后粘贴在Excel的信息(ctrl + v)

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

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

DONE! 没有更多的虚假空白! (您现在可以删除临时文本文件)

Goto-> Special-> blanks不喜欢合并的单元格。 尝试在您想要select空白的范围之上取消合并,然后重试。

我有一个类似的问题,获得COUNTA公式来计算非空白单元格,它计数所有的(甚至是空白的非空白),我尝试= CODE(),但他们没有空格或换行。

我发现,当我单击单元格,然后单击它,然后公式将计数单元格。 我有成千上万的细胞,所以不能手动做这个。 我写了这个VBA语句来逐字检查所有的单元格,如果它们是空白的,那就把它们留空。 忽略这个macros的毫无意义,并相信我实际上是通过强制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