Excel говорит мне, что мои пустые ячейки не пустые

поэтому в excel я пытаюсь избавиться от пустых ячеек между моими ячейками, в которых есть информация, используя F5 для поиска пустых ячеек, затем Ctrl + - для их удаления и сдвига ячеек вверх. Но когда я пытаюсь это сделать, он говорит мне, что "клеток не найдено".

Я заметил, что если я выбираю свои "пустые" ячейки, Excel все еще считает их:Like in this picture что странно. Но если я нажму Delete на эти выбранные ячейки, счетчик исчезнет, а затем я могу перейти F5, пробелы, Ctrl + - и Сдвиньте клетки вверх, и это сработает...

Итак, мой вопрос в том, как я могу это сделать, но с этими пустыми ячейками, которые Excel считает не пустыми? Я попытался пройти и просто нажать delete над пустыми ячейками, но у меня много данных и понял, что это займет слишком много времени. мне нужно найти способ выбрать эти "пустые" ячейки в пределах выбора данных.

заранее спасибо за вашу помощь! :)

15 ответов


откровение: некоторые пустые ячейки на самом деле не пустой! Как я покажу, ячейки могут иметь пробелы, новые строки и true empty:

example

чтобы найти эти ячейки быстро вы можете сделать несколько вещей.

  1. на =CODE(A1) формула вернет значение#! если клетка действительно пуста, в противном случае вернется. Это число -номер ASCII в =CHAR(32).
  2. если вы выделите ячейку и щелкните в строке формул и используйте курсор, чтобы выбрать все. newline selection example

удаление этих:

если у вас есть только пробел в клетках они могут быть легко удалены с помощью:

  1. пресс ctrl + h чтобы открыть find и replace.
  2. введите одно место в найти, оставить заменить на пустой и убедитесь, что у вас есть матч всей ячейки содержание галочкой в опциях.
  3. пресс заменить все.

если у вас newlines это сложнее и требует 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. Теперь запустите ваш код нажатие Ф5.


после файл поставляется: выберите диапазон интересов для повышения производительности, затем выполните следующие действия:

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

простой способ выбрать и очистить эти пустые ячейки, чтобы сделать их пустыми:

  1. пресс ctrl + a или предварительно выберите свой диапазон
  2. пресс ctrl + f
  3. оставить найти пустой и выберите матч всего содержимого ячейки.
  4. нажмите найти все
  5. пресс ctrl + a выбрать все пустые ячейки нашли
  6. закрыть поиск диалоговое окно
  7. пресс backspace или удалить

Это сработало для меня:

  1. CTR-H для поиска и замены
  2. оставьте "найти что" пустой
  3. изменить "заменить на" на уникальный текст, то, что вы
    положительный не будет найден в другой ячейке (я использовал 'xx')
  4. клик "Заменить Все"
  5. скопируйте уникальный текст на Шаге 3, чтобы найти то, что'
  6. удалить уникальный текст в "заменить на"
  7. нажмите "заменить все"

У меня была аналогичная проблема, когда разбросанные пустые ячейки из экспорта из другого приложения все еще отображались в подсчетах ячеек.

мне удалось очистить их

  1. выбор столбцов / строк, которые я хотел очистить, а затем делать
  2. "найти" [без текста] и" заменить " [слово выбора].
  3. затем я сделал "найти" [слово выбора] и" заменить " на [нет текста].

он избавился от всех скрытых / фантомных персонажей в тех ячейки. Может, это сработает?


все, это довольно просто. Я пытался сделать то же самое, и это то, что сработало для меня в VBA

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

С уважением, Ананд Ланка


Если у вас нет форматирования или формул, которые вы хотите сохранить, вы можете попробовать сохранить файл в виде текстового файла с разделителями табуляции, закрыть его и снова открыть с помощью 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

нашел другой способ. Установите автофильтр для все столбцы (важно или вы будете смещать данные), выбрав строку заголовка > вкладка "данные" > сортировка и фильтр - "фильтр". Используйте раскрывающийся список в первом столбце данных, снимите флажок "выбрать все" и выберите только "(пробелы) " > [OK]. Выделите строки (Теперь все вместе) > щелкните правой кнопкой мыши > "удалить строку". Вернитесь к раскрывающемуся меню > 'Select all'. Престо:)


Не уверен, что это уже было сказано, но у меня была аналогичная проблема с ячейками, ничего не показывающими в них, но не пустыми при запуске формулы IsBlank ().

Я выбрал весь столбец, выбрал Find & Replace, нашел ячейки ни с чем и заменил на 0, затем снова запустил find и replace, найдя ячейки с 0 и заменив их на "".

Это решило мою проблему и позволило мне искать пустые ячейки (F5, специальные, пробелы) и удалять строки, которые были пусты....БУМ.

может не работать для каждого приложения, но это решило мою проблему.

иногда в ячейках есть пробелы, которые кажутся пустыми, но если вы нажмете F2 на ячейке, вы увидите пробелы. Вы также можете выполнить поиск таким образом, если знаете точное количество пробелов в ячейке


Это работает с цифрами.

Если ваш диапазон O8:O20, то в соседнем пустом диапазоне (например, T8: T20) введите =O8/1 и заполните. Это даст вам результат #VALUE для "пустых" ячеек, и ваш исходный номер останется прежним.

затем с выбранным диапазоном T8: 20 (CTL -*, если это еще не так) нажмите F5 и выберите специальный. В специальном диалоге выберите ошибки и нажмите кнопку ОК. Это отменит выбор фактических номеров, оставив только выбранные ячейки #VALUE. Удалите их, и у вас будут фактические пустые ячейки. Скопируйте T8:T20 и вставьте обратно через O8: O20.

по существу, поскольку пустые ячейки не работают, вам нужно преобразовать "пустые" ячейки во что-то, что может зацепиться за специальное. Любое действие, которое будет преобразовано в #VALUE, будет работать, и другие типы "ошибок" также должны поддерживаться.


мой метод похож на предложение Курта выше о сохранении его как файла с разделителями табуляции и повторном импорте. Предполагается, что данные имеют только значения без формул. Это, вероятно, хорошее предположение, потому что проблема "плохих" пробелов вызвана путаницей между пробелами и нулями-обычно в данных, импортированных из какого-то другого места, - поэтому не должно быть никаких формул. Мой метод -разобрать на месте -- очень похоже на сохранение в виде текстового файла и повторный импорт, но вы можете сделать это без закрытия и повторного открытия файла. Он находится в разделе Данные > текст в Столбцы > разделители > удалить все символы синтаксического анализа (также можно выбрать текст, если хотите) > готово. Это должно заставить 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.


вот как я исправил эту проблему без какого-либо кодирования.

  1. выберите весь столбец, из которого я хотел удалить "пустые" ячейки.
  2. щелкните вкладку Условное форматирование вверху.
  3. Выберите "Новое Правило".
  4. нажать "форматировать только ячейки, которые содержат".
  5. изменить "между" На "равно".
  6. нажмите на поле рядом с полем" равно".
  7. нажмите одну из проблемных" пустых " ячеек.
  8. клик кнопка формат.
  9. выберите случайный цвет для заполнения коробки.
  10. нажмите "OK".
  11. Это должно изменить все проблемные" пустые " ячейки на цвет, который вы выбрали. Теперь щелкните правой кнопкой мыши одну из цветных ячеек и перейдите в раздел "сортировать" и "поместить выбранный цвет ячейки сверху".
  12. это поставит все проблемные ячейки в верхней части столбца, и теперь все ваши другие ячейки останутся в исходном порядке, в котором вы их поместите. Теперь вы можете выбрать все проблемные ячейки в одной группе и нажмите кнопку Удалить ячейку сверху, чтобы избавиться от них.

самым простым решением для меня было:

1) Выберите диапазон и скопируйте его (ctrl+c)

2)Создайте новый текстовый файл (в любом месте, он будет удален в ближайшее время), откройте текстовый файл, а затем вставьте в excel информацию (ctrl+v)

3) Теперь, когда информация в Excel находится в текстовом файле, выполните select all в текстовом файле (ctrl+a), а затем скопируйте (ctrl+c)

4) перейдите к началу исходного диапазона на шаге 1 и вставьте его старая информация из копии на Шаге 3.

готово! Больше никаких фальшивых заготовок! (теперь вы можете удалить временный текстовый файл)


Goto - > Special - >blanks не любит объединенные ячейки. Попробовать unmerging клеток выше диапазона, в котором вы хотите выбрать то, болванками попробовать снова.


У меня была аналогичная проблема с получением формулы 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