Excel告诉我,我的空白单元格不是空白的
所以在Excel中,我试图摆脱我的细胞之间的空白单元格,其中有信息,使用F5find空白单元格,然后Ctrl + – 删除它们,并将单元格向上移动。 但是当我试图做到这一点,它告诉我,有没有find细胞。
我注意到,如果我select我的“空白”单元格,Excel仍然计算它们: 这很奇怪。 但是,如果我按下删除这些选定的单元格,计数消失,然后我可以去F5,空白,Ctrl + – 和Shift单元格,它的工作原理…
所以我的问题是我怎么能仍然这样做,但Excel认为这些空白单元格不是空白? 我已经试过了,只需按下删除空白单元格,但我有很多数据,并意识到这将花费我太多时间。 我需要find一种方法来select这些“空白”单元格中的数据select。
在此先感谢您的帮助! 🙂
一个启示:一些空白单元格实际上并不空白! 正如我将显示单元格可以有空格,换行符和真空:
要快速find这些细胞 ,你可以做一些事情。
-
=CODE(A1)
公式将返回一个#VALUE! 如果单元格确实是空的,否则一个数字将返回。 这个数字是=CHAR(32)
使用的ASCII码 。 - 如果您select单元格并单击公式栏并使用光标select全部。
删除这些:
如果您在单元格中只有一个空格 ,可以使用以下方法轻松删除这些空格 :
- 按ctrl + h打开查找和replace。
- 在查找内容中input一个空格,将空格replace为空,并确保您匹配全部单元格内容在选项中打勾。
- 按全部replace 。
如果你有换行符,这是更困难的,需要VBA:
- 右键单击工作表标签>查看代码。
-
然后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
-
现在运行您的代码按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和清除这些空白单元格,使其为空:
- 按ctrl + a或预先select您的范围
- 按下ctrl + f
- 留下find空白并select匹配整个单元格的内容 。
- 点击查找全部
- 按ctrl + aselect所有find的空单元格
- closures查找对话框
- 按退格或删除
这对我工作:
- CTR-H调出查找和replace
- 留下“查找什么”空白
- 将“replace为”replace为独一无二的文本,就是您自己的东西
肯定不会在另一个单元格中find(我用'xx') - 点击“全部replace”
- 将第3步中的唯一文本复制到“查找内容”
- 删除“replace为”中的唯一文本
- 点击“全部replace”
我有类似的问题,从另一个应用程序的出口散落的空白单元格仍显示在细胞计数。
我设法清除他们
- select我想要清理的列/行,然后执行
- “查找”[没有文字]和“replace”[select的话]。
- 然后,我做了“查找”[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识别公式。
以下是我如何解决这个问题,没有任何编码。
- select我想从中删除“空白”单元的整个列。
- 点击条件格式标签顶部。
- select“新规则”。
- 点击“仅格式化包含的单元格”。
- 将“之间”更改为“等于”。
- 点击“等于”框旁边的框。
- 点击问题“空白”单元之一。
- 点击格式button。
- select一个随机的颜色填充框。
- 按“确定”。
- 这应该将所有问题“空白”单元格更改为您select的颜色。 现在右键单击其中一个彩色单元格,然后转到“sorting”和“将选定的单元格颜色置于顶部”。
- 这将把所有问题单元格放在列的顶部,现在所有其他单元格将保持原先的顺序。现在,您可以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