2013-07-10 3 views
0

Я новичок в создании макросов в Excel, и я нахожусь в трудном положении. У меня есть woorkheet из 48 столбцов и 6000+ строк. Мне нужно извлечь данные из 20 столбцов и всех строк и поместить их в таблицу из 3 столбцов и равное количество строк. Например, скопируйте лист1: A2, E1, E3 и вставьте в новый лист3: A2, B2, C2. Необходимо автоматизировать из-за размера электронной таблицы и того факта, что данные не отформатированы для непосредственного копированиякопировать данные из одного листа на новый рабочий лист

Я получил ошибку 424 (Требуется объект) с использованием следующего сценария.

Private Sub CommandButton1_Click() 
Dim Counter As Integer 
Counter = 3 
Counter_H = 2 
Do Until ThisWorkbook.Sheets("MASTER_LEAK_REPAIRS_CY2012").Cells(Counter, 4).Value  = " " 
thisworkbooks.Sheets("Sheet1").Select("A" & Counter, "B" & Counter, "C" &  Counter).Value = thisworkbooks.Sheets("MASTER_LEAK_REPAIRS_CY2012").Select("D" & Counter, "Q" & (Counter - Counter_H), "Q" & Counter).Value 
    Counter = Counter + 1 
    Counter_H = Counter + 1 
Loop 
End Sub 

Пожалуйста, помогите мне.

+0

измените 'thisworkbooks' на' ThisWorkbook' ... сделайте это дважды! –

+0

это звучит применительно к VLOOKUP – chancea

ответ

0

Новый ответ, основанный на нижнем комментарии.

Private Sub CommandButton1_Click() 
Dim Counter As Integer 
Counter = 3 
Counter_H = 2 

Do Until ThisWorkbook.Sheets("MASTER_LEAK_REPAIRS_CY2012").Cells(Counter, 4).Value = "" 
    ThisWorkbook.Sheets("Sheet1").Range("A" & Counter) = ThisWorkbook.Sheets("MASTER_LEAK_REPAIRS_CY2012").Range("D" & Counter)  
    ThisWorkbook.Sheets("Sheet1").Range("B" & Counter) = ThisWorkbook.Sheets("MASTER_LEAK_REPAIRS_CY2012").Range("Q" & (Counter - Counter_H)) 
    ThisWorkbook.Sheets("Sheet1").Range("C" & Counter) = ThisWorkbook.Sheets("MASTER_LEAK_REPAIRS_CY2012").Range("Q" & Counter) 
    Counter = Counter + 1 
    Counter_H = Counter + 1 
Loop 
End Sub 

Когда я попробовал вас оригинально, я получил ошибку 450, но с этим я этого не сделал.

Сообщите мне, если у вас есть какие-либо проблемы!

+1

Просто для ваших знаний - смените «Do ... Loop» на 'While ... Wend' не является хорошим направлением, поскольку« While ... Wend »- это старомодный тип цикла с некоторыми недостатками (например, вы не можете использовать что-либо вроде 'Exit Do'). Будет работать, но стараюсь избегать ... –

+0

Благодарим вас за предложение Matt. Я попробовал и получил ошибку 450. Я изменил тест на меньшую таблицу, но она не запускалась. Private Sub CommandButton1_Click() Dim Счетчик As Integer Dim Counter_H As Integer Счетчик = 3 Counter_H = 2 У До ThisWorkbook.Sheets ("Студенты"). Cells (счетчик, 4) .Value = "" ThisWorkbook .Sheets («Sheet1»). Выберите («A» и «Счетчик», «B» и «Счетчик», «C» и «Счетчик») .Value = ThisWorkbook.Sheets («Студенты»). Выберите («A» и «Counter», «C» "& (счетчик - Counter_H), "C" и счетчик) .Value Счетчик = Счетчик + 1 Counter_H = счетчик + 1 Loop End Sub – user2569708

+0

Я извиняюсь, я скопировал опять не справился, лол – user2569708

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