2015-11-24 212 views
0

我想設置一個第一。)遍歷一個列表,並在某些細胞替代值,然後2)複製和粘貼值列表雙重嵌套For循環在Excel VBA

所以代碼一個由例如:

Column A  Column B 
    NY   500 
    CA   1000 
    GA   200 

我有一個用於循環通過塔A進行迭代(以替換細胞值D4,D5,D6與NY然後CA然後GA),但我需要一個第二個for循環,將複製並將這些值一次一個地粘貼到列B中(例如,在第一次替換NY之後將B1中的值複製並粘貼到B1中,然後在替換CA之後將B2複製到B2中,然後B3等)

Sub Macro2() 

    Dim x As Integer 
    NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count 
    Range("A1").Select 
    For x = 1 To NumRows 
     Range("D4") = ActiveCell 
     Range("D5") = ActiveCell 
     Range("D6") = ActiveCell 
     ActiveCell.Offset(1, 0).Select 
    Next 

End Sub 
+0

如果我理解這個正確的,你想複製範圍A1中的值到列D中的每個範圍,然後在列B中? –

+0

基本上,我迭代通過列A來替換D4,5,6中的值(例如,所有3個單元格將在第一次迭代中具有NY,然後是第二次中的CA等) - 但是,我想遍歷列B一次只能計算一個值。因此,在NY「替換」發生之後複製並粘貼列B1,然後將B2替換爲CA「替換」等。 – user3682157

+0

是的。你能否說B列的值應該被複制到哪裏? –

回答

1

我想這就是你要求的...在這種情況下,它可以在一個循環中完成 - 不需要嵌套循環。

Sub MM() 

    For i = 1 To Cells(1, 1).End(xlDown).Row 
     '// Assign the value of Cells(i, 1) [1 = column number] to the range D4:D6. 
     [D4:D6] = Cells(i, 1).Value 
     '// This is the same as copy -> paste values. Change the "2" for different column 
     Cells(i, 2).Value = Cells(i, 2).Value 
    Next 

End Sub 
+0

嗨宏男!你介意解釋一下宏的每一步是幹什麼的?此外,我正在遍歷的特定列在哪裏調用 - 我只問,因爲在我的實際示例中,它不是列a和b,而是實際列ET和EU – user3682157

+0

請參閱上面的編輯 - 基本上只是更改'Cells中的第二個數字(r ,c)'您希望查看的列的編號。 –