Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 61
1

VBA Excel Найти и заменить КОДОМ строку "#Н/А" на "пусто"

20.12.2019, 01:30. Просмотров 1254. Ответов 11
Метки нет (Все метки)

Привет всем не безразличным помочь людям. Столкнулся с проблемкой. Нужно кодом VBA Excel Найти и заменить строку "#Н/А" на "пусто". Много чего перепробовал при проходе While выдает ошибку "type mismach" и только на "#Н/А". Кто подскажет почему? Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2019, 01:30
Ответы с готовыми решениями:

Как использовать переменную в Excel/VBA в "объект".Formula="переменная"
Как использовать переменную в Excel/VBA в строке Dim переменная As int Range('A2').Formula =...

MS Acces VBA. Как вывести поле "фамилия" и "группа" из таблицы "студенты" в Access ?
Использовать Fields? Посмотрите в рисунке задания.

Отметить полужирным шрифтом в исходном тексте слова имеющие приставки "пре", "при", "на", "не"
Отметить полужирным шрифтом в исходном тексте слова имеющие приставки "пре", "при", "на", "не"....

VBA Excel автофильтр: вместо "фильтры по дате" предлагается "текстовые фильтры"
Доброго времени суток, уважаемые форумчане! Пожалуйста, подскажите решение следующей дилеммы: С...

11
6639 / 2656 / 491
Регистрация: 19.10.2012
Сообщений: 8,018
20.12.2019, 01:39 2
Нужно видеть это в файле.
0
306 / 214 / 80
Регистрация: 18.11.2015
Сообщений: 891
20.12.2019, 08:24 3
#Н/А имеется ввиду #N/A (#Н/Д) ?
Visual Basic
1
Cells(1,1).Replace "#N/A", ""
или по условию:
Visual Basic
1
If IsError(Cells(1, 1)) Then Cells(1, 10) = ""
0
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 61
20.12.2019, 09:18  [ТС] 4
Вот ФАЙЛ
0
Вложения
Тип файла: rar Книга1.rar (12.5 Кб, 3 просмотров)
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 61
20.12.2019, 09:20  [ТС] 5
ArtNord, да Эксель русский (#Н/А)

Добавлено через 1 минуту
Найти и заменить работает, а код нет:


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Макрос2()
 
 
Dim c As Integer
Dim r As Integer
c = 1
r = 1
Cells(1, 1).Select
 
While Cells((c + 1), r).Value <> ""
Cells(c + 1, r).Select
            If ActiveCell.Value = "#Н/Д" Then
            ActiveCell.Value = "пусто"
            End If
c = c + 1
Wend
 
End Sub
0
306 / 214 / 80
Регистрация: 18.11.2015
Сообщений: 891
20.12.2019, 09:44 6
Цитата Сообщение от kabukijoe99 Посмотреть сообщение
ArtNord, да Эксель русский (#Н/А)
Русский, Казахский не важно, в VBA все равно все функции на английском

Добавлено через 1 минуту
Цитата Сообщение от kabukijoe99 Посмотреть сообщение
If ActiveCell.Value = "#Н/Д" Then
ActiveCell.Value = "пусто"
End If
измените на:
Visual Basic
1
2
3
If IsError(ActiveCell) Then
ActiveCell = "пусто"
End If
Добавлено через 4 минуты
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Макрос2()
 
 
Dim c As Integer
Dim r As Integer
c = 1
r = 1
Cells(1, 1).Select
 
While Cells((c + 1), r).Value <> ""
Cells(c + 1, r).Select
If IsError(ActiveCell) Then
ActiveCell.Value = "пусто"
End If
c = c + 1
Wend
 
End Sub
0
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 61
20.12.2019, 09:50  [ТС] 7
ArtNord,
https://prnt.sc/qdegk9
https://prnt.sc/qdegx4

все равно выдает ошибку
0
306 / 214 / 80
Регистрация: 18.11.2015
Сообщений: 891
20.12.2019, 10:01 8
Уберите лишние скобки:
Visual Basic
1
While Cells(c + 1, r).Value <> ""
1
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 61
20.12.2019, 10:34  [ТС] 9
https://prnt.sc/qdf0h1
не в этом проблема
0
107 / 58 / 27
Регистрация: 22.02.2018
Сообщений: 185
20.12.2019, 10:56 10
Лучший ответ Сообщение было отмечено kabukijoe99 как решение

Решение

kabukijoe99,
Visual Basic
1
2
3
4
5
Sub Макрос3()
For Each cell In ActiveSheet.UsedRange
    If cell.Formula = "#N/A" Then cell.Value = "пусто"
Next
End Sub
1
0 / 0 / 0
Регистрация: 11.06.2018
Сообщений: 61
20.12.2019, 11:23  [ТС] 11
Aleksan7, Финальная версия


Visual Basic
1
2
3
4
5
6
7
8
Dim cell As Object
Dim myRange As Range
Set myRange = Selection
 
 
For Each cell In myRange
    If cell.Formula = "#N/A" Then cell.Value = "пусто"
Next
Aleksan7 и всем кто сообща помогал спасибо.
0
4056 / 2178 / 922
Регистрация: 01.12.2010
Сообщений: 4,541
22.12.2019, 09:26 12
kabukijoe99, Финальная версия могла быть короче, если бы Вы не прицепились к циклу, а воспользовались самым первым ответом от ArtNord, т.е.

Visual Basic
1
Selection.Replace "#N/A", "", xlWhole

А если в диапазоне могут быть ячейки, где значение ошибки это не константа, а результат вычисления формулы и нам нужно удалить только #Н/Д , а остальные ошибки оставить в покое, то :

Visual Basic
1
2
3
4
5
6
Dim c As Range
Set c = Selection.Find("#N/A", , xlValues, xlWhole)
Do Until c Is Nothing
   c.ClearContents
   Set c = Selection.FindNext
Loop
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2019, 09:26

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

VBA с базой от Access и ошибка "runtime error "3709" ключ поиска не найден ни в одной записи"
написал базу данных на Access 2007. в главной таблице есть поля подстановки (значения из...

В заданной папке открыть все файлы и заменить "одно" на "другое"
есть ли готовая прога или может быть кто-то может подсказать как сделать?!есть каталог папок, в них...

Маленькое продолжение темы "Аналог Excel-метода "OnTime"" или про многопоточность
Коллеги, хочу добавить несколько слов ... (раз уж речь зашла про 2003 офис) Комментарий: на счет...

Как во всей книге Excel из 10-ти листов удалить " " двойные и более пробелы на " "
Очень хочется удалить во всей книге из 25 тысяч строк более одного пробелов одним махом, решится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.