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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск в массиве столбца и замена символов в ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Поиск в массиве столбца и замена символов в ячейке
qingwashu Дата: Вторник, 21.06.2022, 03:46 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Добрый день.
В общем и целом VBA не основная моя работа, но иногда приходится столкнуться.
При выгрузке данных и формировании отчета часть значений теряет "0" в начале.
Требуется добавить простой скрипт на поиск таких значений в столбце 7 и добавление в начало "0".
Формулой делается элементарно, но кол-во строк бывает огромным, нужен эффективный скрипт.
Набросал за целый день вот такое, но работать не хочет, не могу понять что он от меня хочет.

[vba]
Код

Sub ZAMENA035()

Dim massPR As Range
Dim s As Long

sFile = ActiveWorkbook.Name
Set sP0 = Workbooks(sFile).Sheets("СВОД")
'Подсчет кол-ва заполненных ячеек
h = sP0.Cells.SpecialCells(xlLastCell).Row.Value
'Цикл перебора ячеек
For i = 2 To h
    massPR = sP0.Range(sP1.Cells(2, 7), sP0.Cells(i, 7)).Value
    s = massPR.Value
'Сравнение значения ячейки с условием
    If Left(s, 2) = "35" Then
'Совмещение символа "0" со значением в ячейке
        s = "0" & s
    End If
Next
End Sub
[/vba]
К сообщению приложен файл: test.xls (41.0 Kb)


Сообщение отредактировал qingwashu - Вторник, 21.06.2022, 04:23
 
Ответить
СообщениеДобрый день.
В общем и целом VBA не основная моя работа, но иногда приходится столкнуться.
При выгрузке данных и формировании отчета часть значений теряет "0" в начале.
Требуется добавить простой скрипт на поиск таких значений в столбце 7 и добавление в начало "0".
Формулой делается элементарно, но кол-во строк бывает огромным, нужен эффективный скрипт.
Набросал за целый день вот такое, но работать не хочет, не могу понять что он от меня хочет.

[vba]
Код

Sub ZAMENA035()

Dim massPR As Range
Dim s As Long

sFile = ActiveWorkbook.Name
Set sP0 = Workbooks(sFile).Sheets("СВОД")
'Подсчет кол-ва заполненных ячеек
h = sP0.Cells.SpecialCells(xlLastCell).Row.Value
'Цикл перебора ячеек
For i = 2 To h
    massPR = sP0.Range(sP1.Cells(2, 7), sP0.Cells(i, 7)).Value
    s = massPR.Value
'Сравнение значения ячейки с условием
    If Left(s, 2) = "35" Then
'Совмещение символа "0" со значением в ячейке
        s = "0" & s
    End If
Next
End Sub
[/vba]

Автор - qingwashu
Дата добавления - 21.06.2022 в 03:46
Pelena Дата: Вторник, 21.06.2022, 08:34 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Вариант
[vba]
Код
Sub ZAMENA035()

    Dim massPR
    Dim s As String

    sFile = ActiveWorkbook.Name
    Set sP0 = Workbooks(sFile).Sheets(1)
    'Подсчет кол-ва заполненных ячеек
    h = sP0.Cells.SpecialCells(xlLastCell).Row
    massPR = sP0.Range(sP0.Cells(2, 7), sP0.Cells(h, 7)).Value
    'Цикл перебора ячеек
    For i = 1 To h - 1
        's = massPR(i, 1)
        'Сравнение значения ячейки с условием
        If Left(massPR(i, 1), 2) = "35" Then
            'Совмещение символа "0" со значением в ячейке
            massPR(i, 1) = "0" & massPR(i, 1)
        End If
    Next
    sP0.Cells(2, 7).Resize(h - 1) = massPR
End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Вариант
[vba]
Код
Sub ZAMENA035()

    Dim massPR
    Dim s As String

    sFile = ActiveWorkbook.Name
    Set sP0 = Workbooks(sFile).Sheets(1)
    'Подсчет кол-ва заполненных ячеек
    h = sP0.Cells.SpecialCells(xlLastCell).Row
    massPR = sP0.Range(sP0.Cells(2, 7), sP0.Cells(h, 7)).Value
    'Цикл перебора ячеек
    For i = 1 To h - 1
        's = massPR(i, 1)
        'Сравнение значения ячейки с условием
        If Left(massPR(i, 1), 2) = "35" Then
            'Совмещение символа "0" со значением в ячейке
            massPR(i, 1) = "0" & massPR(i, 1)
        End If
    Next
    sP0.Cells(2, 7).Resize(h - 1) = massPR
End Sub
[/vba]

Автор - Pelena
Дата добавления - 21.06.2022 в 08:34
qingwashu Дата: Вторник, 21.06.2022, 19:50 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Не пойму, в холостую отрабатывает. Завтра буду с форматами разбираться, может в них дело...
 
Ответить
СообщениеНе пойму, в холостую отрабатывает. Завтра буду с форматами разбираться, может в них дело...

Автор - qingwashu
Дата добавления - 21.06.2022 в 19:50
Gustav Дата: Вторник, 21.06.2022, 22:07 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2797
Репутация: 1161 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Не знаю, у меня Ленин макрос из сообщения №2 прекрасно отрабатывает (Excel 2013). Увеличил размер диапазона до 10 тысяч строк - всё четко и мгновенно. А если поиграться с параметрами строки:[vba]
Код
If Left(massPR(i, 1), 2) = "35" Then
...
If Left(massPR(i, 1), 4) = "0035" Then
[/vba], то легко добавляется и второй, и третий ноль...


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНе знаю, у меня Ленин макрос из сообщения №2 прекрасно отрабатывает (Excel 2013). Увеличил размер диапазона до 10 тысяч строк - всё четко и мгновенно. А если поиграться с параметрами строки:[vba]
Код
If Left(massPR(i, 1), 2) = "35" Then
...
If Left(massPR(i, 1), 4) = "0035" Then
[/vba], то легко добавляется и второй, и третий ноль...

Автор - Gustav
Дата добавления - 21.06.2022 в 22:07
qingwashu Дата: Среда, 22.06.2022, 18:12 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Заработало, спасибо) Сдуру числовой формат поставил)
 
Ответить
СообщениеЗаработало, спасибо) Сдуру числовой формат поставил)

Автор - qingwashu
Дата добавления - 22.06.2022 в 18:12
  • Страница 1 из 1
  • 1
Поиск:

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