Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2009, 11:56   #1
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию как удалить #Н/Д из диапазона??

вот это:

Range(Cells(2, "B"), Cells(Range("BD_in_syr_end").Row - 1, "IF")).Replace _
What:="0", Replacement:="", LookAt:=xlPart

работает.

удаляет из выбранного диапазона все нули, а на #Н/Д не реагирует!! ...

т.е. в таком виде:

Range(Cells(2, "B"), Cells(Range("BD_in_syr_end").Row - 1, "IF")).Replace _
What:="#Н/Д", Replacement:="", LookAt:=xlPart

не видит в диапазоне ни одного #Н/Д - а они там есть!! .. притом это не формула- это простой текст - в ячейке просто написано #Н/Д ..

в чем проблема??
kievlyanin вне форума Ответить с цитированием
Старый 21.04.2009, 12:22   #2
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

мб нужно попробовать трим?
Tirendus вне форума Ответить с цитированием
Старый 21.04.2009, 12:40   #3
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

Цитата:
Сообщение от Tirendus Посмотреть сообщение
мб нужно попробовать трим?

переведи
kievlyanin вне форума Ответить с цитированием
Старый 21.04.2009, 12:47   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
не видит в диапазоне ни одного #Н/Д - а они там есть!! .. притом это не формула- это простой текст
что-то мне подсказывает, что там не простой текст, а формула, которая возвращает #Н/Д. Если там просто текст #Н/Д, не пишите его туда и его не будет. А если там все-таки формулы, то поставьте в начале =ЕСЛИ(ЕНД(...);"";...), где вместо троеточий поставьте все, что было в формуле без знака равно.

А ТРИМ - это пробелы удалить (в начале, в конце строки)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 21.04.2009 в 12:50.
IgorGO вне форума Ответить с цитированием
Старый 21.04.2009, 13:00   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если требуется убрать уже присутствующее значение ошибки, то Replace здесь не поможет. Можно, например, выполнить код
Код:
For Each Cell In Range(Cells(2, "B"), Cells(Range("BD_in_syr_end").Row - 1, "IF"))
        If IsError(Cell) Then Cell.ClearContents
    Next
Но если это возможно, то как уже говорил IgorGO, лучше вообще не допускать ошибки.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.04.2009, 13:18   #6
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

1. формулы нет - там текст (мне передают эту вборку в текстовом виде- изначально там формулы ессно)

2. ошибки ессно лучше не допускать, но тут пока что не получится по политическим причинам


3. теоретически, что быстрее будет цикл SAS888 или Replace?? ... у меня получилось через Replace - но его два раза приходится выполнять - первый раз убиваю #

Range(Cells(2, "B"), Cells(Range("BD_in_syr_end").Row - 1, "IF")).Replace _
What:="#", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False


а вторым разом убиваю Н/Д

Range(Cells(2, "B"), Cells(Range("BD_in_syr_end").Row - 1, "IF")).Replace _
What:="N/A", Replacement:="", LookAt:=xlPart

Последний раз редактировалось kievlyanin; 21.04.2009 в 13:22.
kievlyanin вне форума Ответить с цитированием
Старый 21.04.2009, 13:34   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Получается, что у Вас в ячейках #Н/Д - это не индикатор ошибки, а текст.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.04.2009, 13:35   #8
Tirendus
Форумчанин
 
Аватар для Tirendus
 
Регистрация: 20.03.2009
Сообщений: 272
По умолчанию

Цитата:
Range(Cells(2, "B"), Cells(Range("BD_in_syr_end").Row - 1, "IF")).Replace _
What:="#Н/Д", Replacement:="", LookAt:=xlPart
Цитата:
Range(Cells(2, "B"), Cells(Range("BD_in_syr_end").Row - 1, "IF")).Replace _
What:="N/A", Replacement:="", LookAt:=xlPart
так н/д или Н/А ? О_о
Tirendus вне форума Ответить с цитированием
Старый 21.04.2009, 13:38   #9
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

" так н/д или Н/А ? О_о "

после того как убиваю # текст почему -то меняется с Н/Д на N/A .. а мне один фиг че убивать - главное чтобы ячейка пустой осталась
kievlyanin вне форума Ответить с цитированием
Старый 21.04.2009, 13:39   #10
kievlyanin
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 110
По умолчанию

" Получается, что у Вас в ячейках #Н/Д - это не индикатор ошибки, а текст."


та да! .. я ж с самого начала об этом написал! .. собсно поэтому и удивился - почему это ТЕКСТ! не хочет удалятся ..
kievlyanin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить страницу prosto_i Microsoft Office Excel 2 31.03.2009 11:48
Как определить номер строки верхней левой ячейки диапазона Porog Microsoft Office Excel 8 09.05.2008 08:37
Как удалить файлы. Борис2 Паскаль, Turbo Pascal, PascalABC.NET 3 15.12.2007 16:00
Как удалить файл dagarik Общие вопросы Delphi 9 05.12.2007 20:25
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36