powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Замена текста
6 сообщений из 6, страница 1 из 1
Замена текста
    #38305645
due
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
due
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
Sub replace()
Dim c As Range
For Each c In ActiveSheet.UsedRange.Columns(6).Cells
c = Replace(c, "Иванов", "мой_текст_для_замены", 1, 1)
Next
End Sub



Нашёл в углу интернета макрос , но никак не могу приспособить под свои нужды. Мне нужно в шестом столбце полностью заменить ячейку, которая содержит "Иванов". Единственное условие: количество строк в файле заранее неизвестно.
То, что процитировано - оно заменяет, но если в ячейке написано "тов. Иванов И. И.", то в итоге получается "тов. мой_текст_для_замены И. И.". Пытался (по аналогии с Ctrl+H) искать как "*Иванов*", но в таком случае замена не работает вообще. Как правильно доработать этот макрос? Или же есть более изящные приёмы для замены текста?
...
Рейтинг: 0 / 0
Замена текста
    #38305688
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
due
Код: vbnet
1.
Sub replace()

То, что процитировано - оно заменяетНе верю.

dueесли в ячейке написано "тов. Иванов И. И.", то в итоге получается "тов. мой_текст_для_замены И. И.".А проверять, что после заменяемого фрагмента пусто - кто будет?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
sub MyReplace(where_to_replace as range, replace_what as string, replace_to as string)
static tmp() as string
static cll as range
for each cll in where_to_replace 
  tmp=split(cll.value,replace_what)
  if ubound(tmp)=1 and trim(tmp(1))="" then
    cll.value = tmp(0) & replace_to 
  end if
next
end sub


Драфт, не проверял.
...
Рейтинг: 0 / 0
Замена текста
    #38305712
Maxim12345678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
due, попробуйте так

Код: vbnet
1.
2.
3.
4.
Dim a as Workbook
Set a=ThisWorkbook
c = a.Sheets("1").Range("F1").End(xlDown).Row
If a.Sheets(1).Cells(c, 6).Text Like "*Иванов*" Then a.Sheets(1).Cells(c, 6) = "мой_текст_для_замены"
...
Рейтинг: 0 / 0
Замена текста
    #38305720
Maxim12345678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim12345678,

Код: vbnet
1.
2.
3.
4.
5.
Dim a as Workbook
Set a = ThisWorkbook
k = a.Sheets("1").Range("F1").End(xlDown).Row
For c = 1 to k
If a.Sheets(1).Cells(c, 6).Text Like "*Иванов*" Then a.Sheets(1).Cells(c, 6) = "мой_текст_для_замены"


Next c
...
Рейтинг: 0 / 0
Замена текста
    #38305721
Maxim12345678
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
due, попробуйте так

Код: vbnet
1.
2.
3.
4.
5.
6.
Dim a as Workbook
Set a = ThisWorkbook
k = a.Sheets("1").Range("F1").End(xlDown).Row
For c = 1 to k
If a.Sheets(1).Cells(c, 6).Text Like "*Иванов*" Then a.Sheets(1).Cells(c, 6) = "мой_текст_для_замены"
Next c 



ЗЫ: прошу прощения за кучу одинаковых сообщений.
...
Рейтинг: 0 / 0
Замена текста
    #38305764
due
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
due
Гость
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim a as Workbook
Set a = ThisWorkbook
k = a.Sheets("1").Range("F1").End(xlDown).Row
For c = 1 to k
If a.Sheets(1).Cells(c, 6).Text Like "*Иванов*" Then a.Sheets(1).Cells(c, 6) = "мой_текст_для_замены"
Next c



То, что как раз и требовалось!!!
Maxim12345678, спасибо!!!!!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Замена текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]