Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2011, 17:16   #1
MarieGu
Новичок
Джуниор
 
Регистрация: 17.04.2011
Сообщений: 2
По умолчанию Макрос:копирование по определенным условиям

Дорогие, пожалуйста помогите в решении проблемы с макросом. У меня огромная таблица с данными. Во вложении пример. Мне надо написать макрос:
скопировать данные из ячейки D15 в ячейки C5:C15, и так далее из ячейки D24 в ячейки C16:C24. При этом ячейки D15, D24 надо обнаружить по цвету.

Заранее большое спасибо
Вложения
Тип файла: rar Copy.rar (3.5 Кб, 16 просмотров)
MarieGu вне форума Ответить с цитированием
Старый 10.10.2011, 17:50   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Sub tt()
    Dim x&, y&, cc As Range
    x = 5
    For Each cc In [d5:d24]
        If cc.Interior.ColorIndex = 8 Then
            y = cc.Row
            Range(Cells(x, 3), Cells(y, 3)) = cc.Value
            x = y + 1
        End If
    Next
End Sub
Осталось недоделано - вероятно область [d524] нужно определять динамически.
В примере это можно сделать и с помощью currentregion, и стандартно
iLastRow = Cells(Rows.Count, 4).End(xlUp).Row
Как лучше - это нужно смотреть реальный файл.

P.S. Например так:
Код:
Sub ttt()
    Dim x&, y&, cc As Range
    x = 5
    For Each cc In [d5].CurrentRegion.Columns(2).Cells
        If cc.Interior.ColorIndex = 8 Then
            y = cc.Row
            Range(Cells(x, 3), Cells(y, 3)) = cc.Value
            x = y + 1
        End If
    Next
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 10.10.2011 в 17:54.
Hugo121 вне форума Ответить с цитированием
Старый 10.10.2011, 17:53   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

На скорую руку, убегать пора:
Код:
Sub MarieGu()
Dim c As Range, d As Range
Set c = Cells(Rows.Count, "D").End(xlUp)
Set d = c
On Error Resume Next
Do
    Set c = c(0)
    If Err Then Exit Sub
    If c.Interior.ColorIndex > 0 Then 'окрашенная ячейка
        Range(d, c(2)).Offset(, -1) = d
        Set d = c
    End If
Loop
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 10.10.2011, 18:28   #4
MarieGu
Новичок
Джуниор
 
Регистрация: 17.04.2011
Сообщений: 2
По умолчанию

Уважаемые, ОГРОМНОЕ ВАМ СПАСИБО!!!
MarieGu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование данных по определенным критериям на другой лист. Dilmira Microsoft Office Excel 5 28.04.2011 16:11
Копирование данных по двум условиям nuwanda Microsoft Office Excel 1 17.12.2010 15:08
Разделение строк удовлетворяющих определенным условиям prettyfly Microsoft Office Excel 1 15.11.2010 16:52
Поиск данных по условиям соответствия и копирование Игор41 Microsoft Office Excel 7 10.06.2010 23:23
отбор уникальных значений по определенным условиям Alex___ Microsoft Office Excel 39 12.10.2009 17:02