2015-11-11 2 views
-1

Я новичок в VBA и хочу написать простой макрос для извлечения данных с одного листа и добавления его на другой рабочий лист в пределах одной и той же книги. Может ли кто-нибудь из вас помочь мне с макросом для того же? благодаря!Макрос для извлечения данных из одного ws в другой в Excel 2010

+0

Я ничего не имею, это моя ель st VBA. Никогда не делал vba. – Josh

ответ

0
sub copy 
thisworkbook.sheets(put here number of sheet to copy TO).cells(rows,columns).value=thisworkbook.sheets(number of sheet to copy FROM).cells(rows,columns).value 
end sub 

пример

Sub Copy() 
ThisWorkbook.Sheets(1).Cells(1,1).Value=ThisWorkbook.Sheets(2).Cells(1,1).Value 
End Sub 

это можно было бы скопировать содержимое из второго листа - ячейки "А1" на первом листе - ячейки "A1"

что-нибудь еще?

+0

для копирования больших областей вместо диапазона использования ячеек (ячейки (1,1), ячейки (3,1)), этот экземпляр будет скопировать содержимое из ячеек A1 в A3 – Lance

0

Поскольку вы никогда не кодируются прежде, вы можете добавить

Option Explicit 

К началу кода, над

Sub Copy() 

Это более правильный способ кодирования.

Я помню, как начинал свою кодировку в vba и проходил копирование ячеек с одного листа на другой. Я предлагаю вам начать смотреть на For-Next заявления, как это поможет, когда вы начинаете копировать большое количество данных, например:

Option Explicit 
Sub Copy() 
Dim intCounter as Integer  'intCounter is the variable when is denoted by a prefix 'int' and is a counter for the for statement 
For intCounter=1 to Sheets(1).Cells(Rows.Count, 1).End(xlUp).Rows 
'The above line denotes For the Counter = to 1 all the way to the end of the sheet 
Sheets(1).Cells(intCounter,1).Value=Sheets(2).Cells(intCounter,1).Value 
'The above will take the cell in Sheet 1 row intCounter Column 1 to Sheet 2 row intCounter Column 1 
Next 
'The Above line 'Next' will start the loop over, adding 1 to the Value of intCounter 
End Sub 

Я предлагаю вам поиграть с кодом и посмотреть, что изменение значения будут делать в суб рутина.

Также обратите внимание, что вышеуказанная подпрограмма зависит от наличия данных в Листе 1 и столбце 1 и только передача данных из 1 ячейки за раз, если вы хотите делать больше одной ячейки за раз, как указано выше вы можете использовать

Range(Cells(intCounter,1),Cells(intCounter,whateverColumnNumberYouWant)).Value 

в месте

Cells(intCounter,1).Value 

Хотелось бы надеяться, что это дает вам что-то, чтобы играть с, что поможет вашим усилиям