2015-11-24 512 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)'您希望查看的列的编号。 –