2014-10-20 38 views
0

我有一個需要重新組織的記錄列表。它們的格式如下。 ID是與以下5行對應的數字。我需要這個數字存在於每一行旁邊的列A中,並帶有相應的ID號。 我需要ID號存在於列A中,就像在第二個圖像中看到的那樣。這需要在宏中使用VBA來完成,因爲有超過100條記錄。宏來複制數據並迭代一系列記錄

有人能指出我正確的方向嗎?我不知道引用ID字段沒有1如下面的代碼做1的最佳途徑......

Stage 1

Final Stage

Range("A2").Select 
Selection.AutoFill Destination:=Range("A2:A5"), Type:=xlFillDefault 
Range("A2:A5").Select 
Range("A7").Select 
ActiveCell.FormulaR1C1 = "=R6C[2]" 
Range("A7").Select 
Selection.AutoFill Destination:=Range("A7:A10"), Type:=xlFillDefault 
Range("A7:A10").Select 
Range("A12").Select 
ActiveCell.FormulaR1C1 = "=R11C[2]" 

回答

1

假設: 您的數據組會出現在列「B」中,從第1行開始,並且在稱爲「Sheet1」的工作表中包含4個附加記錄

Public Sub AutoFillRecordGroup() 

Dim irecordgroup as Integer 
Dim xlrange as Excel.Range 
Dim varcell as Variant 
Set xlrange = ThisWorkbook.Sheets("Sheet1").Range("B1" & ThisWorkbook.Sheets("Sheet1").Range("B1048576").End(xlup).Address) 

irecordgroup = 1 
For Each varcell in xlrange 
If varcell.value = "ID" Then 
varcell(1,-1).value = irecordgroup 
varcell(2,-1).value = irecordgroup 
varcell(3,-1).value = irecordgroup 
varcell(4,-1).value = irecordgroup 
irecordgroup = irecordgroup + 1 
End If 
Next varcell 

End Sub 

Public Sub AutoFillRecordGroup() 

Dim irecordgroup as Integer 
Dim xlrange as Excel.Range 
Dim varcell as Variant 
Set xlrange = ThisWorkbook.Sheets("Sheet1").Range("B1" & ThisWorkbook.Sheets("Sheet1").Range("B1048576").End(xlup).Address) 

irecordgroup = 1 
For Each varcell in xlrange 
If varcell.value = "ID" Then 
varcell(1,-1).value = varcell(0,1).value 
varcell(2,-1).value = varcell(0,1).value 
varcell(3,-1).value = varcell(0,1).value 
varcell(4,-1).value = varcell(0,1).value 
irecordgroup = irecordgroup + 1 
End If 
Next varcell 

End Sub 
+0

相反的假設ID是連續的我要改變它,從每個凱文的音符第二個選項更新的列C. – Kevin 2014-10-20 21:54:50

+0

得到id的值。 – cronos2546 2014-10-20 22:17:25

+0

@ cronos2546似乎在您設置xl範圍的行上出現運行時錯誤.. – JDS 2014-11-05 21:50:14