Страницы: 1
RSS
удалить строки со значением ячейки #Н/Д, удалить строки со значением ячейки #Н/Д
 
Добрый день, Уважаемые знатоки!
Подскажите пожалуйста макрос, с помощью которого можно удалить все строки со значением хоть в одной ячейке #Н/Д. #Н/Д-значение текстовое, не результат вычисления формулы,  ранее скопировано вставлено как значение из другого файла.
 
Здравствуйте.
Вам нужен универсальный макрос который сам определит количество колонок на листе и удалит все строки где есть #Н/Д? Или таблица с фиксированным количеством колонок?
PS. А лучше покажите пример файла, данные можете придумать любые.
 
Цитата
написал:
Здравствуйте.Вам нужен универсальный макрос который сам определит количество колонок на листе и удалит все строки где есть #Н/Д? Или таблица с фиксированным количеством колонок? PS. А лучше покажите пример файла, данные можете придумать любые.
Нужен универсальный, столбцов по BJ, строк очень много (10000) и прибавляются. Если есть хоть один Н/Д-удаляем всю строку
 
Код
    Dim r As Long
    For r = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If WorksheetFunction.CountIf(Rows(r), "#Н/Д") > 0 Then Rows(r).Delete
    Next

 
сделал пока в PowerQuery. "Лист1" - исходные данные, лист "Результат" исходные данные без #Н/Д. добавьте свои данные в таблицу на листе "Лист1" и попробуйте обновить запрос PQ (нажмите Ctrl+Alt+F5).
PS. Если никто не напишет макрос, то напишу завтра вечером.
Изменено: Aлeкceй - 21.05.2026 00:35:46 (забыл приложить файл)
 
Цитата
Bravo9 написал:
ранее скопировано вставлено как значение из другого файла
Это можно учесть и удалить на стадии копирования из другого файла. Вы копируете ручками или макросом?
 
Цитата
написал:
Вы копируете ручками или макросом?
Ручками. Это происходит 1 раз в рабочий день и не напрягает
 
Предложенные выше варианты не работают. Крутил, вертел, обмануть хотел-все равно не работают. Макрос пишет ошибка сразу
 
Файл-пример Excel приложите
Ну а пока для примера выше
Скрытый текст
Согласие есть продукт при полном непротивлении сторон
 
Как вариант, если в таблице нет ячеек с логическими значениями ("ИСТИНА" или "ЛОЖЬ"), то можно применить достаточно быстрый способ без явных циклов.
Код
Sub DelRows()
    Application.ScreenUpdating = False: On Error Resume Next
    With ActiveSheet.UsedRange
        .Replace "#Н/Д", True, xlWhole
        .SpecialCells(xlCellTypeConstants, xlLogical).EntireRow.Delete
    End With
End Sub
Здесь On Error Resume Next на случай, если искомых значений в таблице нет.
Пример во вложении.
Чем шире угол зрения, тем он тупее.
 
Цитата
Bravo9 написал:
Ручками. Это происходит
Лучше файл пример откуда вы копируете и ещё один куда вы вставляете. Глядишь кто и напишет вам макрос копирования и учтёт в нём сразу отлов данной ошибки чтоб потом другим макросом не удалять эти строки. Про файл пример сказано в Правилах форума.
Страницы: 1
Читают тему
Наверх