2015-06-05 2 views
0

До сих пор у меня этот код ниже; подсчет последней ячейки работает нормально, но копирует/вставляет неверные данные на неверный лист. Следует скопировать данные и использовать формулу из ячейки «Анализ» в ячейке B2 и ее использовать основной лист, где находится VBA. Выглядит, что не хватает, чтобы выполнить копию/выбрать «разбор», но не смог это сделать.Скопируйте формулу с определенного листа и ячейки и перетащите ее до определенного столбца последней строки

Sub drag_formula_original() 

Dim myLastRow As Long 
With Worksheets("Parsing") 



myLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 

.Range("B2").Copy Destination:=.Range("B2:B" & myLastRow) 
Application.CutCopyMode = False 

End With 
End Sub 

Его решения. Большое спасибо.

+0

Спасибо за ответы. Можете ли вы проверить мой новый код выше? Фактически теперь выдается сообщение об ошибке. – Gonzalo

+0

Я обновил, но теперь он копирует правильные данные, но не соответствует листу. Должен перейти в «Анализ» вместо первого листа книги. Большое спасибо. – Gonzalo

ответ

1
Range("B2").Copy 

выше будет захватывать по умолчанию из ActiveSheet

вы должны сказать ему, что лист вы хотели бы, чтобы выбрать этот диапазон/значение из.

sheets("Parsing").Range("B2").Copy 

Edit: Просто заметил твоего

Чтобы реально использовать с вами нужно использовать «» например ваша копия строка будет выглядеть, как показано ниже

.Range("B2").Copy 

Еще одна вещь, чтобы отметить это:

Range("B2:B" & myLastRow).Select 
ActiveSheet.Paste 

весьма неэффективно, ниже будет лучше. Выбор в целом лучше держаться подальше от него довольно медленно

Range("B2:B" & myLastRow).Paste 

или с с

.Range("B2:B" & myLastRow).Paste 
+0

или поскольку OP использует оператор 'with', они могут просто использовать' .Range (..) ', как это происходит с' .Cells' уже – chancea

+0

Просто заметили, что и немного изменили ответ :) – 99moorem

+0

Большое спасибо. Я обновил, однако теперь он копирует правильные данные, но не соответствует листу. Должен перейти на лист «Анализ» вместо первого листа книги. Anyidea почему? – Gonzalo

0

Я просто скопировать и вставить код и запустил его. Я ничего не изменил в вашем коде, за исключением добавления «Option Explicit» перед вашим юзером. (Только персональная привычка)

Option Explicit 
Sub drag_formula_original() 

Dim myLastRow As Long 
With Worksheets("Parsing") 

myLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 

Range("B2").Copy 
Range("B2:B" & myLastRow).Select 
ActiveSheet.Paste 
Application.CutCopyMode = False 

End With 
End Sub 

Я, однако, использовал очень простую формулу в ячейке B2. То, что я сделал, было, чтобы столбец A переходил от 1 до 10, а столбец C - от 11 до 20. Ячейка B2 была = A2 + C2. После запуска кода я проверил каждую ячейку в столбце B и каждый из них имел правильную формулу в них, а не жестко закодированное значение.

Трюк, который я делаю, когда хочу сделать что-то подобное, но не могу понять, как я записываю макрос меня, перетаскивая формулу ячейки по-разному, а затем останавливаю запись и просматриваю код, который он сделал , Из этого вы должны быть в состоянии настроить его, чтобы делать то, что вы хотите.

Когда я сделал, что я получил этот код:

Sub Macro1() 
' 
' Macro1 Macro 
' 

' 
    Range("B2").Select 
    Selection.AutoFill Destination:=Range("B2:B15"), Type:=xlFillDefault 
    Range("B2:B15").Select 
End Sub 
+0

Thats, right, Но я хотел, чтобы код работал на другом листе: «Parsing» – Gonzalo