2012-03-26 4 views
1

Я хотел бы знать, как написать макрос, чтобы скопировать значение L3 до L2 на основании того, что A2 и A3 равны, а B2 и B3 также равны. Если последующие строки столбцов A и B не равны, макросу не нужно подталкивать данные вверх. В некоторых случаях может быть до 10 последующих строк, где значения столбцов A & B равны, а самое раннее значение месяца должно скатиться до верхней строки, где A & B соответствует.копирование ячеек в Excel на основе значений в других ячейках

Весь лист имеет около 150 строк со многими значениями Город и Компания. В настоящее время я выполняю эту операцию вручную, и это занимает много времени. Целью таблицы является предоставление свода результатов продаж на основе данных, которые извлекаются из нашего пакета CRM на основе SQL. Строка 4 не имеет значимых данных - это контекст, но это не повредит, если данные свернуты в строке 2 до тех пор, пока все месяцы с посещениями отображаются в верхней строке, где находятся столбцы A & B.

Я предполагаю, что макрос должен пройти через JAN (столбец E) и завершить этот столбец, а затем после этого последовательно пройти через столбцы G через P. Необходимо обрабатывать только столбцы E-P. Я не думаю, что это будет иметь негативные последствия, если данные будут конкатенированы в ячейках или просто перезаписаны. Как только макрос будет завершен, верхняя строка для данной Компании на определенном сайте должна содержать значения за все месяцы, в которые она была посещена.

Мои знания в области программирования ограничены, но я могу обычно модифицировать код, чтобы изменить его, если я получу хороший образец. Надеюсь, моя просьба понятна.

+0

Пожалуйста, покажите нам пример того, что вы пытаетесь сделать, а не описывать его в прозе. Используйте символ фиксированной ширины ('{}'), чтобы воспроизвести небольшую часть вашей электронной таблицы. –

+0

Опубликуйте свое изображение в любом онлайн-хранилище (imghack или еще), мы можем отредактировать ваш вопрос и добавить изображение в свою очередь после этого. – JMax

ответ

0

на основе первого начального вопроса «как скопировать L3 к L2, если B2 = B3 и A2 = A3», этот основной макрос вы начали вдоль этих линий:

Option Explicit 

Sub CopyUP() 
Dim LR As Long, Rw As Long, col As Long 

LR = Range("A" & Rows.Count).End(xlUp).Row 'last row with data 

For Rw = LR To 2 Step -1     'from the bottom up, compare 
    If Range("A" & Rw) = Range("A" & Rw - 1) And _ 
     Range("B" & Rw) = Range("B" & Rw - 1) Then 

     For col = 5 To 16  'columns E:P 
      If Cells(Rw, col) <> "" Then Cells(Rw - 1, col) = Cells(Rw, col) 
     Next col 

    End If 
Next Rw 

End Sub 
+0

Спасибо за ваш ответ. Я тестировал его в своих данных, и, насколько я понимаю, макрос сравнивает значения в столбцах A и B с последовательными строками, в которых есть значения в ячейке по всему листу и непрерывно выбивает значение в столбце L сверху вниз пока значения в столбцах A & B не изменятся. Это тот эффект, который я искал. Проблема, которую я обнаружил сейчас, состоит в том, что ячейка в столбце L для нижней строки для блока совпадающих значений столбца A и B всегда пуста, поэтому данные в столбце L эффективно стираются, а не копируются. –

+0

Есть ли способ: a) расширить копирование значений, включив столбцы E в P и b), чтобы пропускать пустые ячейки в этих столбцах, чтобы остальная часть данных не была стерта? –

+0

Я отредактировал предложение макроса выше, чтобы включить столбцы E: P, и он будет копировать только UP, если есть что-то скопировать. –

Смежные вопросы