Как #Н/Д заменить на ноль?

Программирование на Visual Basic for Applications
GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Как #Н/Д заменить на ноль?

Сообщение GAL » 14.04.2005 (Чт) 15:22

Привет всем!
Помогите кто может...
Есть таблица в которой имеются ячейки с #Н/Д, содержимое ячейки представлено как значение (текст), а не результат вычислений формулы.
Пишу макрос для замены всех таких #Н/Д на ноль.
НО... когда делаю это вручную при записи макроса все проходит и #Н/Д заменяются на ноль, а вот когда запускаю макрос на исполнение - полный стопор. Либо ничего не происходит либо сообщение об ошибке.
Предполагаю, что #Н/Д воспринимается как ошибка в формуле и макрос не выполняется из-за этого.
Хотя, повторюсь, это #Н/Д представлено как значение, текст, а не результат вычисления формулы.
Подскажите решение.. :?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.04.2005 (Чт) 15:32

Подскажем.
Увидим твой код - сразу подскажем :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 14.04.2005 (Чт) 15:37

:)
Вот так я пытаюсь..
Cells.Replace What:="#Н/Д", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
и так вот пытаюсь..
Columns("B:C").Select
Selection.Replace What:="#Н/Д", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByColumns, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
но что-то ничего не происходит..

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 14.04.2005 (Чт) 16:04

Всё не так плохо. Всё гораздо хуже :)

Эксель заменяет строку на ошибку.


Выходы:
  • Перед тыреньем данных присваивать ячейкам формат "Только текст". Тогда эксель не будет ничего заменять.
  • Если уже поздно, то
    Код: Выделить всё
    Dim c As Range
       
      For Each c In Range("c7:e13")
        If IsError(c.Value) Then
          If CLng(c.Value) = xlErrNA Then
            c.Value = 0
          End If
        End If
      Next
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 14.04.2005 (Чт) 16:59

Только что сделал как ты советуешь.
Действует, работает в смысле. :)
Спасибо, GSerg!
Глянул я на твой код, потом на свой и вот смотри что получается..
Если взять "#Н/Д" и заменить на "#N/A", в том коде что раньше я написал то все работает.
Стал заменять "#Н/Д" на 0 как родной и уговаривать не надо! :lol:


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 51

    TopList