2017-01-20 2 views
0

В листе A, у меня есть один столбец с показаниями счетчика со статическим именованным диапазоном «MeterData». Первая строка диапазона - это дата (мм/дд/гг) при считывании счетчиков. Остальные строки содержат показания счетчика.Скопируйте статический именованный диапазон и вставьте его в переменный адрес ячейки в другом листе

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

В Рабочем листе B у меня есть 12 столбцов с заголовками с января по декабрь соответственно. Если, например, месяц, выбранный в листе A, - февраль, то я хочу, чтобы именованный диапазон был скопирован, а затем вставлен под февральский заголовок в листе B. Первый заголовок (январь) в листе B находится в ячейке G4.

Существует веская причина, почему показания счетчика не введены непосредственно в рабочий лист B.

Любая помощь с VBA будет очень высоко ценится. Я настоящий новичок и медленно учился копировать и адаптировать короткие решения VBA, но на самом деле не знаю больше. Спасибо за ваше время и знания.

ответ

0

Попробуйте это. Я прокомментировал код, чтобы объяснить, что он делает, чтобы вы могли лучше адаптировать его к своим требованиям.

'Examine cell above 'MeterData' range - store in mth 
mth = Range("MeterData").Offset(-1, 0).Cells(1, 1).Text 

'Set destination column to 20 as default 
paste_column = 20 
'Skip on error as Match might not find the month(?) so will remain at 20 
On Error Resume Next 
'Re-set destination to column using Match to find occurence of 'mth' on row 4 
paste_column = WorksheetFunction.Match(mth, Sheets("WorksheetB").Range("4:4"), 0) 

Remove error skipping 
On error goto 0 

'Copy 'MeterData' range and Paste to WorksheetB, row 5, column found above. 
Range("MeterData").Copy Destination:=Sheets("WorksheetB").Cells(5, paste_column) 

EDIT: Теперь с Copy/Paste Специальных значений

'Examine cell above 'MeterData' range - store in mth 
mth = Range("MeterData").Offset(-1, 0).Cells(1, 1).Text 

'Set destination column to 20 as default 
paste_column = 20 
'Skip on error as Match might not find the month(?) so will remain at 20 
On Error Resume Next 
'Re-set destination to column using Match to find occurence of 'mth' on row 4 
paste_column = WorksheetFunction.Match(mth, Sheets("WorksheetB").Range("4:4"), 0) 

'Remove error skipping 
On Error GoTo 0 

'Copy 'MeterData' range into buffer 
Range("MeterData").Copy 

'Paste to WorksheetB, row 5, column found above. 
Sheets("WorksheetB").Cells(5, paste_column).PasteSpecial Paste:=xlPasteValues 

'Remove highlighter identifying copied area 
Application.CutCopyMode = False 
+0

Humble спасибо за быстрый ответ. Код выглядит следующим образом: 1. Навигация по целевым адресам работает нормально, аналогично столбцу 20 по умолчанию, когда не выполняется сопоставление. 2. Однако при вставке ячейки назначения ВСЕ заполняются ** # REF ** вместо исходных данных. 3. Также вставляются исходные форматы, записывающие условное форматирование в диапазоне назначения (каждая альтернативная строка затенена серым цветом). Надеюсь, я проясняю эти проблемы и приветствую ваши предложения. –

+0

Я отредактировал свой оригинальный ответ, чтобы отобразить только данные результата, а не исходные формулы. – CLR

+0

Отлично! Огромное спасибо. Я потратил довольно много времени, пытаясь взломать это и смог найти точное соответствие описанию проблемы. –

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

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