Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/64: Рейтинг темы: голосов - 64, средняя оценка - 4.52
0 / 0 / 2
Регистрация: 24.02.2016
Сообщений: 75
1

Поиска символов в ячейках и их замена

02.02.2017, 14:48. Показов 11745. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно найти определенное слово в ячейке и заменить без изменения остальных слов в этой ячейке.
Написал макрос:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim x As Range: Application.ScreenUpdating = False
 Dim flag As Integer
 
    For Each x In Range("E2:E150")
    flag = 0
  
    If x.Value = "11" And flag = 0 Then
       x.Replace "11", "22"
       flag = 1
       End If
       
    If x.Value = "22" And flag = 0 Then
       x.Replace "22", "11"
    End If
    
     
    Next
    
    Application.ScreenUpdating = True
но он не подходит, т.к. ищет значение всей ячейки а не только некоторых символов из нее.
Может быть Find использовать, но как реализовать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.02.2017, 14:48
Ответы с готовыми решениями:

Создание формы поиска на сайте. Почему не выводится результат поиска при вводе символов в поле поиска?
Добрый день! Создаю форму поиска с всплывающими подсказками. Попробую, выложить строки кода,...

Замена формулы в ячейках
Помогите "чайнику"!!! Как быстро заменить формулу типа ВПР(*), на ЕСЛИОШИБКА(ВПР(*);0). Ячеек...

Замена формулы в ячейках
Добрый день. Столкнулся с проблемой проставления нужного коэффициента в столбец K (выделено желтым)...

Не работает функция поиска значений в ячейках
Доброго времени суток, господа!)) Пытаюсь оптимизировать свой недавно написано...

14
5612 / 1596 / 414
Регистрация: 23.12.2010
Сообщений: 2,392
Записей в блоге: 1
02.02.2017, 15:53 2
Visual Basic
1
X = Replace(X, "11", "22")
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
02.02.2017, 16:22 3
Заменить можно без цикла и поиска

Visual Basic
1
Range("E2:E150").Replace "11", "22", xlPart
1
0 / 0 / 2
Регистрация: 24.02.2016
Сообщений: 75
03.02.2017, 08:54  [ТС] 4
Заменить можно без цикла и поиска
Visual Basic
1
Range("E2:E150").Replace "11", "22", xlPart
что значит xlPart ?
0
6 / 6 / 1
Регистрация: 29.01.2017
Сообщений: 29
03.02.2017, 10:26 5
1)
Visual Basic
1
2
3
4
5
6
7
8
Public Sub NaitiNaVsemListe()
 
'proveryaet na liste vse ya4eiki i menyaet 22 na 11
 
    Cells.Replace What:="22", Replacement:="11", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
 
End Sub
2)
Visual Basic
1
2
3
4
5
6
7
8
9
Public Sub NaitiVDiapazone()
 
'nahodit i menyat 22 na 11 v fiksirovannom diapazone "A2:A4"
 
    Range("A2:A4").Select
    Selection.Replace What:="22", Replacement:="11", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
Смотрите вложенный файл.

P.S.
xlPart это атрибут, указывающий искать в ячейке частично, а не всю ячейку целиком обрабатывать, по-английски part = "часть".
Вложения
Тип файла: rar Find.rar (16.1 Кб, 14 просмотров)
1
0 / 0 / 2
Регистрация: 24.02.2016
Сообщений: 75
03.02.2017, 13:19  [ТС] 6
А если у меня есть столбец 1 А мне нужно получить 2
2 1
1 2
1 2
Я создаю цикл

Visual Basic
1
2
3
4
5
6
7
8
9
Sub Макрос1()
 
 Dim x As Range
    For Each x In Range("E2:E10")
    flag = 0
   x.Replace "1", "2", xlPart
   x.Replace "2", "1", xlPart
Next
End Sub
Получаю весь столбец с 1. Т.е. мне надо чтобы если он заменил в одной ячейке 1 на 2, он переходил к другой и менял там 2 на 1, а не эту же ячейку заменял. Какое условие написать?


Visual Basic
1
if (x.Replace "1", "2", xlPart)=False Then
это неправильно, но нужно что-то типа вот такого как это сделать?

Добавлено через 11 минут
Прошу прощения один столбец нужно заменить другим

1 2
2 1
1 2
1 2
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
03.02.2017, 20:23 7
Лучший ответ Сообщение было отмечено The_Fog как решение

Решение

На небольшом диапазоне можно и так :

Visual Basic
1
2
3
4
5
6
7
8
Dim x As Range
For Each x In Range("E2:E10")
    If x Like "*1*" Then
       x.Replace "1", "2", xlPart
    Else
       x.Replace "2", "1", xlPart
    End If
Next
1
0 / 0 / 2
Регистрация: 24.02.2016
Сообщений: 75
06.02.2017, 11:33  [ТС] 8
Visual Basic
1
If x Like "*1*" Then
а что значат эти звездочки около 1 =)
0
1195 / 247 / 21
Регистрация: 20.05.2016
Сообщений: 1,084
Записей в блоге: 21
06.02.2017, 13:19 9
Оператор Like (Visual Basic)
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.02.2017, 17:03 10
The_Fog, * это символ подстановки, обозначающий любое количество символов (в т.ч. 0), впрочем, если он Вас "пугает", то замените на If InStr(x, 1) > 0 Then
0
0 / 0 / 2
Регистрация: 24.02.2016
Сообщений: 75
07.02.2017, 15:07  [ТС] 11
pashulka,
Visual Basic
1
2
3
4
5
6
7
8
Dim x As Range
For Each x In Range("E2:E10")
    If x Like "*1*" Then
       x.Replace "1", "2", xlPart
    Else
       x.Replace "2", "1", xlPart
    End If
Next
Вообще ничего не меняет =(
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
07.02.2017, 18:42 12
The_Fog, А у меня меняет
Вложения
Тип файла: zip TestInvert.zip (7.1 Кб, 11 просмотров)
1
0 / 0 / 2
Регистрация: 24.02.2016
Сообщений: 75
09.02.2017, 17:39  [ТС] 13
pashulka, Спасибо все работает, просто у меня данные были на 3 листе =) Еще вопрос чтоб темы не плодить, а если ячейки объединенные DE и в символах есть пробелы как делать replace к какой ячейки обращаться?
0
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
09.02.2017, 19:04 14
The_Fog, Если об'единены ячейки столбцов D и E, то просто перебирайте ячейки столбца D
1
0 / 0 / 2
Регистрация: 24.02.2016
Сообщений: 75
10.02.2017, 12:04  [ТС] 15
pashulka, Спасибо вам за помощь ! =)
0
10.02.2017, 12:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2017, 12:04
Помогаю со студенческими работами здесь

Поиск и замена значений в ячейках
Уважаемые товарищи! подскажи как реализовать данную задачу : имеется книга EXCEL, там много...

Массовая замена значений в ячейках
Добрый день. Уважаемые знатоки Экселя и всех программ и дополнений, которые к нему прилагаются....

Замена значений в ячейках StringGrid
Добрый день! Имеется такая проблема: в StringGrid в ячейках находятся значения, заранее написанные...

Замена части текста в ячейках Excel
Добрый день. Нужен совет. Необходимо заменить ячейки, содержащие определенные части текста, пустыми...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru