Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/26: Рейтинг темы: голосов - 26, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16

Нужно автоматизировать заполнение ячеек

13.06.2010, 14:25. Показов 4952. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи в написании макроса.
Имеется два столбца A,B
В этих столбцах имеются данные
[столбец А] [столбец B]
405 10
- -
- -
- -
405 20
- -
- -
- -
- -
- -
- -
408 50
- -
И т.д.
В ручную делается утомительная операция - выделение значения в столбиках А и B (405 и 10 соответсвенно)протягивание до следующих значений (405 и 20) и заполнение CTRL+D (Заполнить вниз)
Нельзя ли как-то автоматизировать этот каторжный труд(количество строк доходит иногда до 7000-8000 строк)?
Буду очень признателен за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.06.2010, 14:25
Ответы с готовыми решениями:

В Excel нужно автоматизировать заполнение столбца.
Здравствуйте !!! в Excel нужно автоматизировать заполнение столбца B по следующему условию: есть столбец A < 1 отдел Товар 1 ...

Календарь MsWord2013 - Автоматизировать заполнение расписания
Здравствуйте. Нужна помощь,мне нужно автоматизировать заполнение расписания. Проблема возникает,в том что нужно указать начало...

Как автоматизировать заполнение документа Word нужными данными?
Здравствуйте. Подскажите пожалуйста как реализовать такую задумку? В организации есть 4 офис-менеджера, т.е. каждый из них может...

35
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
13.06.2010, 15:01
А что находится в строках между указанными значениями?
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16
13.06.2010, 15:14  [ТС]
Между данными находятся пустые ячейки.
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16
13.06.2010, 15:23  [ТС]
Может вот так нагляднее?

| A | B |
|---------|
|405 | 10 |
|----|----|
|----|----|
|----|----|
|405 | 20 |
|----|----|
|----|----|
|460 | 31 |
|----|----|
|----|----|
|504 | 12 |
|----|----|
и.т.д
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
13.06.2010, 16:54
Если я понял всё правильно, то - см.ниже.
Остаётся вопрос: что происходит с последней записью в столбцах?
Она тоже 'протягивается'? До каких пор?
В примере работа заканчивается при достижении последней записи.
Перед началом работы необходимо выделить ячейку в первой строке.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Ex()
Dim aRange() As Variant, i As Long
With ActiveSheet
    For i = ActiveCell.Row To .UsedRange.End(xlDown).Row
        aRange() = Range(.Cells(i, 1), .Cells(i, 2))
        Do While IsEmpty(.Cells(i + 1, 1))
            Range(.Cells(i + 1, 1), .Cells(i + 1, 2)) = aR()
            i = i + 1
        Loop
    Next
End With
End Sub
0
2 / 2 / 1
Регистрация: 01.01.2008
Сообщений: 410
13.06.2010, 16:55
ИМХО надо показать, что должно быть как результат работы рук или макроса.
например

до
405 10
- -
- -
- -
405 20
- -
- -
- -
- -
- -
- -
408 50
- -

после
405 10
405 11
405 12
405 13
405 19
405 20
405 21
и т.д.

по какому закону должны цифры изменяться?
Приведи вид результата, а то что-то не телепатится у меня.
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
13.06.2010, 17:01
Опечатка. Правильно:
Range(.Cells(i + 1, 1), .Cells(i + 1, 2)) = aRange()
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16
13.06.2010, 17:41  [ТС]
Данные должны выглядеть следующим образом:
405|10 вот эти значения должны заполнить все пустые ячейки под ними до следующих новых(отличных от них)значений
405|10
405|10
405|10
Дошли сюда,а здесь берем новые значения и снова заполняем порожние ячейки вниз до новых значений
405|20
405|20
405|20
405|20
405|20
405|20
405|20
405|20
405|20
405|20
405|20
Новые значения и т.д.
408|50
408|50
408|50
и т.д.
Работу макроса ограничиваем например или последей записью или,скажем строкой 8000.
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16
13.06.2010, 17:51  [ТС]
vlth!
Что-то не срабатывает макрос.
Становлюсь в ячейку А1, макрос на выполнение и ...
Appl.-defined or object-defined
и носом елозит в
Do While IsEmpty(.Cells(i + 1, 1))

Текст макроса:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Ex()
Dim aRange() As Variant, i As Long
With ActiveSheet
    For i = ActiveCell.Row To .UsedRange.End(xlDown).Row
        aRange() = Range(.Cells(i, 1), .Cells(i, 2))
        Do While IsEmpty(.Cells(i + 1, 1))
            Range(.Cells(i + 1, 1), .Cells(i + 1, 2)) = aRange()
            i = i + 1
        Loop
    Next
End With
End Sub
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
13.06.2010, 19:16
Твоя правда - в Excel'97, например, массив заполнить таким образом
не удаётся. Ну так не беда - перепишем код иначе:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Ex()
Dim i As Long, X1 As Double, X2 As Double
With ActiveSheet
    For i = ActiveCell.Row To .UsedRange.End(xlDown).Row
        X1 = .Cells(i, 1): X2 = .Cells(i, 2)
        Do While IsEmpty(.Cells(i + 1, 1))
            .Cells(i + 1, 1) = X1: .Cells(i + 1, 2) = X2
            i = i + 1
        Loop
    Next i
End With
End Sub
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
13.06.2010, 19:20
Да, забыл оговориться: первая строка должна содержать
непустые ячейки
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
13.06.2010, 19:38
Хотя почему - можно и пустые! ))
0
2 / 2 / 1
Регистрация: 01.01.2008
Сообщений: 410
14.06.2010, 09:20
2with
Ну ты лихой макрос наваял :-)
Может что-то попроще?
типа:
Visual Basic
1
2
3
4
5
6
7
Sub Exx()
For i = Selection.Row To Selection.Row + Selection.Rows.Count - 2
If Cells(i + 1, 1) = Empty Then
Cells(i + 1, 1) = Cells(i, 1): Cells(i + 1, 2) = Cells(i, 2)
End If
Next i
End Sub
блин, я почему-то никогда таким синтаксисом не пользовался
Cells(i + 1, 1) = Cells(i, 1): Cells(i + 1, 2) = Cells(i, 2)
/
спасибо!
0
2 / 2 / 1
Регистрация: 01.01.2008
Сообщений: 410
14.06.2010, 09:21
пробелы убежали. Это я про ':'
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16
14.06.2010, 12:08  [ТС]
vlth!
Ничего не получается...
Что происходит:
-использую последнюю версии макроса уважаемого 'vlth'
-становлюсь на А1 (к примеру, не пустой)
-макрос на запуск
-запоняет столбец A и B до первого нового значения и все...
Причем пару раз макрос сработал на несколько новых значений больше.
Т.е.
Первое значение
10-1
он протянул до следующего нового значения
20-2
эти цифры протянул еще до
30-3
и остановился.

Макрос выполнялся в Excel 97.
Что за беда?
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
14.06.2010, 12:44
Согласен. У меня то же самое. Исправить это нетрудно, но ты так и не
ответил на вопрос, когда должна заканчиваться работа макроса
Заполняем диапазон от последней строки, содержащей новые значения,
'до упора'? - наверное, всё-таки как-то иначе...
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16
14.06.2010, 13:03  [ТС]
Работу макроса останавливаем на 8000 строке.Так можно?
0
2 / 2 / 1
Регистрация: 01.01.2008
Сообщений: 410
14.06.2010, 13:07
господа! может мой испытаете? а то мне грустно как-то... :-(
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
14.06.2010, 13:10
Можно так, а можно иначе, скажем, от последней записи заполнить
энное кол-во строк.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Example()
Dim i As Long
With ActiveSheet
    For i = ActiveCell.Row To 8000
        If IsEmpty(.Cells(i + 1, 1)) Then
            .Cells(i + 1, 1) = .Cells(i, 1)
            .Cells(i + 1, 2) = .Cells(i, 2)
        End If
    Next i
End With
End Sub
0
0 / 0 / 0
Регистрация: 13.06.2010
Сообщений: 16
14.06.2010, 13:24  [ТС]
IgorT!
К сожалению твой вариант макроса у меня не запускается совсем...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.06.2010, 13:24
Помогаю со студенческими работами здесь

Автоматизировать заполнение "Графика выполненных работ по месяцам"
Используя готовую рабочую книгу Blank1.xls, автоматизировать заполнение "Графика выполненных работ по месяцам". Из диапазона дат в...

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

Заполнение ячеек
Отлавливаю ошибку и нужно реализовать такую последовательность:если хоть одна ячейка заполнена,то не выводим MsgBox,а если не заполнена не...

Макрос на заполнение ячеек
Добрый день, фоурмчане! Необходима ваша неоценимая помощь и подсказ, как разобраться с заданием: "В произвольные клетки...

Заполнение диапазона ячеек
Еще вопрос. Запросите у пользователя диапазон ячеек и заполните его случайными символами. Программа должна запускаться по нажатии на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru