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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение пустых ячеек в огромном массиве данных - Мир MS Excel

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

Excel 2007
Всем привет! Как правильно записать код, который бы заполнял формулу только в пустых ячейках выделенного диапазона. Диапазон A22:R950000. Всегда работало, а тут программа не справляется, даже если выбрать диапазон до 60 тыс. строк
К сообщению приложен файл: example.xlsx (27.5 Kb)
 
Ответить
СообщениеВсем привет! Как правильно записать код, который бы заполнял формулу только в пустых ячейках выделенного диапазона. Диапазон A22:R950000. Всегда работало, а тут программа не справляется, даже если выбрать диапазон до 60 тыс. строк

Автор - Мурад
Дата добавления - 04.10.2016 в 15:38
Karataev Дата: Вторник, 04.10.2016, 16:05 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Макрос ориентируется на пустые ячейки в столбце "A". Если в столбце "A" ячейка пустая, то в эту строку, в столбцы "A:R" копируются данные из вышестоящей строки.
[vba]
Код
Sub Заполнить_пустые()
    
    Dim rng As Range, ar As Range, lr As Long
    
    lr = Columns("A:AB").Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    On Error Resume Next
    Set rng = Range("A9:A" & lr).SpecialCells(xlCellTypeBlanks).EntireRow
    On Error GoTo 0
    If rng Is Nothing Then
        MsgBox "Пустых ячеек нет!", vbExclamation
        Exit Sub
    End If
    
    Application.ScreenUpdating = False

    For Each ar In rng.Areas
        ar.Columns("A:R").Value = ar.Rows(1).Columns("A:R").Offset(-1).Value
    Next
    
    Application.ScreenUpdating = True
    
    MsgBox "Готово!", vbInformation
    
End Sub
[/vba]
 
Ответить
СообщениеМакрос ориентируется на пустые ячейки в столбце "A". Если в столбце "A" ячейка пустая, то в эту строку, в столбцы "A:R" копируются данные из вышестоящей строки.
[vba]
Код
Sub Заполнить_пустые()
    
    Dim rng As Range, ar As Range, lr As Long
    
    lr = Columns("A:AB").Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    On Error Resume Next
    Set rng = Range("A9:A" & lr).SpecialCells(xlCellTypeBlanks).EntireRow
    On Error GoTo 0
    If rng Is Nothing Then
        MsgBox "Пустых ячеек нет!", vbExclamation
        Exit Sub
    End If
    
    Application.ScreenUpdating = False

    For Each ar In rng.Areas
        ar.Columns("A:R").Value = ar.Rows(1).Columns("A:R").Offset(-1).Value
    Next
    
    Application.ScreenUpdating = True
    
    MsgBox "Готово!", vbInformation
    
End Sub
[/vba]

Автор - Karataev
Дата добавления - 04.10.2016 в 16:05
Мурад Дата: Вторник, 04.10.2016, 16:27 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Karataev, спасибо большое! Все сработало :)
 
Ответить
СообщениеKarataev, спасибо большое! Все сработало :)

Автор - Мурад
Дата добавления - 04.10.2016 в 16:27
exelskatyazhelyi Дата: Среда, 01.03.2017, 16:59 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Karataev, а нельзя поправить код, под такие нужды: заполняется так же элементов со строки ниже(если она не пустая. а может быть и пустой), только есть условие чтобы элементы соседнего столбца равнялись друг другу. пример приложил.
 
Ответить
СообщениеKarataev, а нельзя поправить код, под такие нужды: заполняется так же элементов со строки ниже(если она не пустая. а может быть и пустой), только есть условие чтобы элементы соседнего столбца равнялись друг другу. пример приложил.

Автор - exelskatyazhelyi
Дата добавления - 01.03.2017 в 16:59
exelskatyazhelyi Дата: Среда, 01.03.2017, 16:59 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
вот документ
К сообщению приложен файл: 1600984.xlsx (9.4 Kb)
 
Ответить
Сообщениевот документ

Автор - exelskatyazhelyi
Дата добавления - 01.03.2017 в 16:59
_Boroda_ Дата: Среда, 01.03.2017, 17:01 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
В этой теме нельзя. Читайте Правила форума


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

Автор - _Boroda_
Дата добавления - 01.03.2017 в 17:01
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение пустых ячеек в огромном массиве данных (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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