我有一個vba代碼,可以抓取所有時間表的工作表,並將它們放到一個工作表中堆疊在一起。我需要另一個代碼來抓取三個名字,小時,百分比,第一個名字從單元格「B6」開始,小時位於單元格「O47」,百分比在「O48」。下一位員工的姓名,小時,百分比信息正好低於100行,所以下一個員工信息將在「B106」,「O147」,「O148」。我需要一個代碼來循環調用Sheet1的工作表並獲取所有員工,直到代碼識別出單元格爲空,並且這是列表的末尾。從工作表上的三個位置抓取數據,並將其作爲報表放入新工作表
Sub Macro4()
'
' Macro4 Macro
'
'
Sheets("Sheet1").Select
For Counter = 0 To 40
With ActiveCell
.Offset(Counter, 0) = "="
Range("A2").Select
ActiveCell.FormulaR1C1 = "=Sheet1!R[4]C[1]"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=Sheet1!R[45]C[13]*Sheet1!R[46]C[13]/100"
Range("C2").Select
ActiveCell.FormulaR1C1 = "=Sheet1!R[46]C[12]"
Range("A3").Select
ActiveCell.FormulaR1C1 = "=Sheet1!R[103]C[1]"
Range("B3").Select
ActiveCell.FormulaR1C1 = "=Sheet1!R[144]C[13]*Sheet1!R[145]C[13]/100"
Range("C3").Select
ActiveCell.FormulaR1C1 = "=Sheet1!R[145]C[12]"
End Sub
好,而不必重複6號線約30倍是有這樣做的一個有效的方法呢?在位置上的差異僅僅是行和99(即你可以看到一排跳從4到103我嘗試使用計數器,但弄糊塗了。
最終解決THANKS MIKE
Sub Macro1()
a = 1
lastrow = Worksheets("Sheet1").Cells(Rows.Count, 15).End(xlUp).Row
For i = 6 To lastrow Step 100
Worksheets("Sheet2").Cells(a, 1) = Worksheets("Sheet1").Cells(i, 2)
Worksheets("Sheet2").Cells(a, 2) = Worksheets("Sheet1").Cells(i + 41, 15)
Worksheets("Sheet2").Cells(a, 3) = Worksheets("Sheet1").Cells(i + 42, 15)
a = a + 1
Next i
End Sub
更好嗎?我包含了我的代碼。我不知道該網站的工作原理第一次用戶在這裏道歉 – user2867581
好多了,多謝了:) –