Цикл замены в ячейках
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] Сами реплейсы ниже
.Replace " г. Иркутск, ", "" .Replace "ул., д.", "" .Replace "пер., д.", "" .Replace "кв-л., д.", "" .Replace "мкр., д.", "" .Replace "пр-кт., д.", "" .Replace "пл-ка., д.", "" .Replace "городок., д.", "" .Replace "пл., д.", "" .Replace "тер., д.", "" .Replace "бул., д.", "" .Replace "б-р., д.", "" .Replace "ш., д.", "" .Replace "п., д.", "" .Replace "просп., д.", "" .Replace "проезд., д.", "" .Replace "ул. ", "" .Replace "пер. ", "" .Replace "мкр. ", "" .Replace "кв-л.", "" .Replace "пр-кт. ", "" .Replace "тер. ", "" .Replace "бул. ", "" .Replace "б-р. ", "" .Replace "просп. ", "" .Replace "проезд. ", "" .Replace ", д.", "" .Replace "д.", "" .Replace "-й", "" .Replace "ё", "е"
И еще вопрос. На 700к строк будет тормозить?
Добрый день Пытаюсь записать цикл по которому в столбце ищутся в ячейках данные и меняются на нужные, но не могу понять как вписать несколько Replace'ов в cells() [vba]Код
Sub cycle11() Dim i For i = 2 To Rows.Count Cells(i, 12) = ... Next i End Sub
[/vba] Сами реплейсы ниже
.Replace " г. Иркутск, ", "" .Replace "ул., д.", "" .Replace "пер., д.", "" .Replace "кв-л., д.", "" .Replace "мкр., д.", "" .Replace "пр-кт., д.", "" .Replace "пл-ка., д.", "" .Replace "городок., д.", "" .Replace "пл., д.", "" .Replace "тер., д.", "" .Replace "бул., д.", "" .Replace "б-р., д.", "" .Replace "ш., д.", "" .Replace "п., д.", "" .Replace "просп., д.", "" .Replace "проезд., д.", "" .Replace "ул. ", "" .Replace "пер. ", "" .Replace "мкр. ", "" .Replace "кв-л.", "" .Replace "пр-кт. ", "" .Replace "тер. ", "" .Replace "бул. ", "" .Replace "б-р. ", "" .Replace "просп. ", "" .Replace "проезд. ", "" .Replace ", д.", "" .Replace "д.", "" .Replace "-й", "" .Replace "ё", "е"
И еще вопрос. На 700к строк будет тормозить? AVI
К сообщению приложен файл:
_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] Сами реплейсы ниже
.Replace " г. Иркутск, ", "" .Replace "ул., д.", "" .Replace "пер., д.", "" .Replace "кв-л., д.", "" .Replace "мкр., д.", "" .Replace "пр-кт., д.", "" .Replace "пл-ка., д.", "" .Replace "городок., д.", "" .Replace "пл., д.", "" .Replace "тер., д.", "" .Replace "бул., д.", "" .Replace "б-р., д.", "" .Replace "ш., д.", "" .Replace "п., д.", "" .Replace "просп., д.", "" .Replace "проезд., д.", "" .Replace "ул. ", "" .Replace "пер. ", "" .Replace "мкр. ", "" .Replace "кв-л.", "" .Replace "пр-кт. ", "" .Replace "тер. ", "" .Replace "бул. ", "" .Replace "б-р. ", "" .Replace "просп. ", "" .Replace "проезд. ", "" .Replace ", д.", "" .Replace "д.", "" .Replace "-й", "" .Replace "ё", "е"
И еще вопрос. На 700к строк будет тормозить? Автор - AVI Дата добавления - 03.10.2018 в 17:44
_Boroda_
Дата: Среда, 03.10.2018, 18:05 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
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) = "е" For i = 1 To nrep_ Range("A1:A" & 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]
Так нужно?
[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) = "е" For i = 1 To nrep_ Range("A1:A" & 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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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) = "е" For i = 1 To nrep_ Range("A1:A" & 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_ Дата добавления - 03.10.2018 в 18:05
AVI
Дата: Четверг, 04.10.2018, 17:24 |
Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 523
Репутация:
17
±
Замечаний:
0% ±
Excel 2016
_Boroda_ , Забыл уточнить нужно что бы результат отразился в столбце 13. И в коде я не увидел, что происходит замена. Это из-за того, что по умолчанию если не указано на что меняется то меняется на пусто? А если мне нужно заменить на что-то, то как это будет выглядеть?
_Boroda_ , Забыл уточнить нужно что бы результат отразился в столбце 13. И в коде я не увидел, что происходит замена. Это из-за того, что по умолчанию если не указано на что меняется то меняется на пусто? А если мне нужно заменить на что-то, то как это будет выглядеть?AVI
Сообщение отредактировал AVI - Четверг, 04.10.2018, 17:30
Ответить
Сообщение _Boroda_ , Забыл уточнить нужно что бы результат отразился в столбце 13. И в коде я не увидел, что происходит замена. Это из-за того, что по умолчанию если не указано на что меняется то меняется на пусто? А если мне нужно заменить на что-то, то как это будет выглядеть?Автор - AVI Дата добавления - 04.10.2018 в 17:24
_Boroda_
Дата: Четверг, 04.10.2018, 17:32 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
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] Второй столбец массива (кроме последней записи) пуст. На него и меняем. Если нужно заменить на что-то, то смотрите замену ё на е
Перенесите и в перенесенном меняйте [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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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
Ответить
Сообщение _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
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
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 не поменял Сейчас исправил и файл перевложил
Не, 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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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
_Boroda_ , Что-то не работает. Квартиры не цепляются i -> jAVI
Сообщение отредактировал AVI - Пятница, 05.10.2018, 10:17
Ответить
Сообщение _Boroda_ , Что-то не работает. Квартиры не цепляются i -> jАвтор - AVI Дата добавления - 05.10.2018 в 10:10
_Boroda_
Дата: Пятница, 05.10.2018, 10:33 |
Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация:
6505
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Да, скопировал, а поменять забыл. Поправил в своем посте выше и файл перевложил
Да, скопировал, а поменять забыл. Поправил в своем посте выше и файл перевложил _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Да, скопировал, а поменять забыл. Поправил в своем посте выше и файл перевложил Автор - _Boroda_ Дата добавления - 05.10.2018 в 10:33