Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Цикл замены в ячейках - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Цикл замены в ячейках (Макросы/Sub)
Цикл замены в ячейках
AVI Дата: Среда, 03.10.2018, 17:44 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
Добрый день
Пытаюсь записать цикл по которому в столбце ищутся в ячейках данные и меняются на нужные, но не могу понять как вписать несколько Replace'ов в cells()
[vba]
Код
Sub cycle11()
    Dim i
    For i = 2 To Rows.Count
        Cells(i, 12) = ...
    
    Next i
End Sub
[/vba]

Сами реплейсы ниже



И еще вопрос. На 700к строк будет тормозить?
К сообщению приложен файл: _1.xlsm (29.6 Kb)


Сообщение отредактировал AVI - Среда, 03.10.2018, 17:47
 
Ответить
СообщениеДобрый день
Пытаюсь записать цикл по которому в столбце ищутся в ячейках данные и меняются на нужные, но не могу понять как вписать несколько Replace'ов в cells()
[vba]
Код
Sub cycle11()
    Dim i
    For i = 2 To Rows.Count
        Cells(i, 12) = ...
    
    Next i
End Sub
[/vba]

Сами реплейсы ниже



И еще вопрос. На 700к строк будет тормозить?

Автор - AVI
Дата добавления - 03.10.2018 в 17:44
_Boroda_ Дата: Среда, 03.10.2018, 18:05 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?

Автор - _Boroda_
Дата добавления - 03.10.2018 в 18:05
AVI Дата: Четверг, 04.10.2018, 17:24 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Забыл уточнить нужно что бы результат отразился в столбце 13.

И в коде я не увидел, что происходит замена.
Это из-за того, что по умолчанию если не указано на что меняется то меняется на пусто?
А если мне нужно заменить на что-то, то как это будет выглядеть?


Сообщение отредактировал AVI - Четверг, 04.10.2018, 17:30
 
Ответить
Сообщение_Boroda_, Забыл уточнить нужно что бы результат отразился в столбце 13.

И в коде я не увидел, что происходит замена.
Это из-за того, что по умолчанию если не указано на что меняется то меняется на пусто?
А если мне нужно заменить на что-то, то как это будет выглядеть?

Автор - AVI
Дата добавления - 04.10.2018 в 17:24
_Boroda_ Дата: Четверг, 04.10.2018, 17:32 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Перенесите и в перенесенном меняйте
[vba]
Код
Sub ReplЙЙЙ()
    Application.ScreenUpdating = 0
    Application.Calculation = 3
    r1_ = Cells(Rows.Count, 1).End(xlUp).Row
    nrep_ = 30
    ReDim arrep(1 To nrep_, 1 To 2)
    arrep(1, 1) = " г. Иркутск, "
    arrep(2, 1) = "ул., д."
    arrep(3, 1) = "пер., д."
    arrep(4, 1) = "кв-л., д."
    arrep(5, 1) = "мкр., д."
    arrep(6, 1) = "пр-кт., д."
    arrep(7, 1) = "пл-ка., д."
    arrep(8, 1) = "городок., д."
    arrep(9, 1) = "пл., д."
    arrep(10, 1) = "тер., д."
    arrep(11, 1) = "бул., д."
    arrep(12, 1) = "б-р., д."
    arrep(13, 1) = "ш., д."
    arrep(14, 1) = "п., д."
    arrep(15, 1) = "просп., д."
    arrep(16, 1) = "проезд., д."
    arrep(17, 1) = "ул. "
    arrep(18, 1) = "пер. "
    arrep(19, 1) = "мкр. "
    arrep(20, 1) = "кв-л."
    arrep(21, 1) = "пр-кт. "
    arrep(22, 1) = "тер. "
    arrep(23, 1) = "бул. "
    arrep(24, 1) = "б-р. "
    arrep(25, 1) = "просп. "
    arrep(26, 1) = "проезд. "
    arrep(27, 1) = ", д."
    arrep(28, 1) = "д."
    arrep(29, 1) = "-й"
    arrep(30, 1) = "ё"
    arrep(30, 2) = "е"
    Range("A1:A" & r1_).Copy Range("M1:M" & r1_)
    For i = 1 To nrep_
        Range("M1:M" & r1_).Replace What:=arrep(i, 1), Replacement:=arrep(i, 2), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next i
    Application.Calculation = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]
Второй столбец массива (кроме последней записи) пуст. На него и меняем. Если нужно заменить на что-то, то смотрите замену ё на е
К сообщению приложен файл: _1-4-1.xlsm (33.5 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПеренесите и в перенесенном меняйте
[vba]
Код
Sub ReplЙЙЙ()
    Application.ScreenUpdating = 0
    Application.Calculation = 3
    r1_ = Cells(Rows.Count, 1).End(xlUp).Row
    nrep_ = 30
    ReDim arrep(1 To nrep_, 1 To 2)
    arrep(1, 1) = " г. Иркутск, "
    arrep(2, 1) = "ул., д."
    arrep(3, 1) = "пер., д."
    arrep(4, 1) = "кв-л., д."
    arrep(5, 1) = "мкр., д."
    arrep(6, 1) = "пр-кт., д."
    arrep(7, 1) = "пл-ка., д."
    arrep(8, 1) = "городок., д."
    arrep(9, 1) = "пл., д."
    arrep(10, 1) = "тер., д."
    arrep(11, 1) = "бул., д."
    arrep(12, 1) = "б-р., д."
    arrep(13, 1) = "ш., д."
    arrep(14, 1) = "п., д."
    arrep(15, 1) = "просп., д."
    arrep(16, 1) = "проезд., д."
    arrep(17, 1) = "ул. "
    arrep(18, 1) = "пер. "
    arrep(19, 1) = "мкр. "
    arrep(20, 1) = "кв-л."
    arrep(21, 1) = "пр-кт. "
    arrep(22, 1) = "тер. "
    arrep(23, 1) = "бул. "
    arrep(24, 1) = "б-р. "
    arrep(25, 1) = "просп. "
    arrep(26, 1) = "проезд. "
    arrep(27, 1) = ", д."
    arrep(28, 1) = "д."
    arrep(29, 1) = "-й"
    arrep(30, 1) = "ё"
    arrep(30, 2) = "е"
    Range("A1:A" & r1_).Copy Range("M1:M" & r1_)
    For i = 1 To nrep_
        Range("M1:M" & r1_).Replace What:=arrep(i, 1), Replacement:=arrep(i, 2), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next i
    Application.Calculation = 1
    Application.ScreenUpdating = 1
End Sub
[/vba]
Второй столбец массива (кроме последней записи) пуст. На него и меняем. Если нужно заменить на что-то, то смотрите замену ё на е

Автор - _Boroda_
Дата добавления - 04.10.2018 в 17:32
AVI Дата: Пятница, 05.10.2018, 07:49 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Блин, до чего же интересно)
И пытаюсь подставить в результат через пробел номер квартиры из столбца 7.
Но что-то все время выдается ошибка
В столбце м по i-той строке в результат нужно подставить Cells(i, 7)?

[vba]
Код
        Range("M1:M" & r1_).Replace What:=arrep(i, 1), Replacement:=arrep(i, 2), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False  & " " & Cells(i, 7)
[/vba]
Но не работает.
 
Ответить
Сообщение_Boroda_, Блин, до чего же интересно)
И пытаюсь подставить в результат через пробел номер квартиры из столбца 7.
Но что-то все время выдается ошибка
В столбце м по i-той строке в результат нужно подставить Cells(i, 7)?

[vba]
Код
        Range("M1:M" & r1_).Replace What:=arrep(i, 1), Replacement:=arrep(i, 2), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False  & " " & Cells(i, 7)
[/vba]
Но не работает.

Автор - AVI
Дата добавления - 05.10.2018 в 07:49
_Boroda_ Дата: Пятница, 05.10.2018, 09:15 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не, i - это цикл по заменам, а не по строкам массива. А нам нужен теперь еще и по строкам
[vba]
Код
...
    For i = 1 To nrep_
        Range("M1:M" & r1_).Replace What:=arrep(i, 1), Replacement:=arrep(i, 2), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next i
    For j = 1 To r1_
        Range("M" & j) = Range("M" & j) & " " & Range("G" & j)
    Next j
...
[/vba]

* Добавлено
Да, скопировал и i на j не поменял
Сейчас исправил и файл перевложил
К сообщению приложен файл: _1-4-1_2.xlsm (34.6 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995


Сообщение отредактировал _Boroda_ - Пятница, 05.10.2018, 10:33
 
Ответить
СообщениеНе, i - это цикл по заменам, а не по строкам массива. А нам нужен теперь еще и по строкам
[vba]
Код
...
    For i = 1 To nrep_
        Range("M1:M" & r1_).Replace What:=arrep(i, 1), Replacement:=arrep(i, 2), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next i
    For j = 1 To r1_
        Range("M" & j) = Range("M" & j) & " " & Range("G" & j)
    Next j
...
[/vba]

* Добавлено
Да, скопировал и i на j не поменял
Сейчас исправил и файл перевложил

Автор - _Boroda_
Дата добавления - 05.10.2018 в 09:15
AVI Дата: Пятница, 05.10.2018, 10:10 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация: 17 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Что-то не работает. Квартиры не цепляются
i -> j


Сообщение отредактировал AVI - Пятница, 05.10.2018, 10:17
 
Ответить
Сообщение_Boroda_, Что-то не работает. Квартиры не цепляются
i -> j

Автор - AVI
Дата добавления - 05.10.2018 в 10:10
_Boroda_ Дата: Пятница, 05.10.2018, 10:33 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да, скопировал, а поменять забыл.
Поправил в своем посте выше и файл перевложил


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа, скопировал, а поменять забыл.
Поправил в своем посте выше и файл перевложил

Автор - _Boroda_
Дата добавления - 05.10.2018 в 10:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Цикл замены в ячейках (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!