2016-04-05 3 views
0

У меня есть рабочий лист, где код находится в столбце A, затем макрос смещает ссылку на строку и копирует ее обратно на другой лист.Excel VBA: вызывать абсолютную ячейку из динамической ссылки

Я хотел бы изменить это так, что макрос просматривает диапазон столбцов, скажем, столбцы A к E, находит код, то смотрит вдоль ряда, чтобы забрать из колонки F, затем так далее.

Это мой код в его нынешнем виде; это, очевидно, работает только для одного столбца кода, поскольку он использует Offset. Я должен также указать, что в столбцах A, B, C и/или D могут быть коды, поэтому поиск следующей пустой ячейки не будет работать.

''code above here for rest of macro 
'' ws refers to the destination worksheet 
''c is the code, in this case in column A but will be in columns A, B, C or D 
ws.Range("A" & lastRow) = c.Offset(, 1) 
ws.Range("B" & lastRow) = c.Offset(, 2) 
'' code below to continue similarly 

Надеюсь, что это имеет смысл!


Название отредактирован 'абсолютной ячейки'

ответ

0

возможно что-то с помощью .Row

, например

Cells(ActiveCell.Row, "A") 

это будет идти в колонну A в той же строке, что является так же как и смещение столбца, но вы можете перейти в столбец A из любого столбца, не имея нескольких offset

редактировать

testc = Worksheets("Sheet1").Range("A:A").Find(code).address 
Range(testc).Select 

Sheets("Sheet1").Cells(ActiveCell.Row, "B").Copy _ 
    Destination:=Sheets("Sheet1").Range("A" & lastrow) 
+0

спасибо за предложение. Я попытался добавить его на лист, например, так: 'ws.Range (« A »& lastRow) = c.Cells (c.Row,« B »)', но он не отображает правильный код из столбца A. Do ты знаешь почему? – joel2703

+0

Извините, я, вероятно, не объяснил это в моем вопросе. «c» задается как 'c = Worksheets (« Sheet2 »). Range (« A: A »). Find (code)', который находит правильную строку, затем находит данные в столбце 'B' и копирует его в' ws.Range ("A" и lastRow) '. Имеет ли это смысл? – joel2703

+0

Изменив его, теперь я получаю код _above_, который мне нужен: ws.Range («A» & lastRow) = c.Cells (ActiveRow, «B») '. Это почему-то также вызывает lastRow? спасибо большое за вашу помощь @ ballsy26 – joel2703