2010-07-01 95 views
3

我在下面有这段代码,基本上我希望能够做到从R16R200Range("G16").SelectG200的整个范围的单元格。循环这个Excel宏?

即当它改变R17则成为G16 17,当R18那么G18等

所以整个函数运行变化R2R3G2G3,再次启动并改变R3R4G3G4

Sub Search() 

Range("H2").Select 
ActiveCell.FormulaR1C1 = "=IF(ISNUMBER(SEARCH(R16C6,RC[4])),RC[2],"""")" ' Edit RXX value 
Range("H2").Select 
Selection.AutoFill Destination:=Range("H2:H385") 
Range("H2:H385").Select 
Range("G16").Select ' Edit GXX value 
ActiveCell.FormulaR1C1 = "=SpecialConcatenate(C[1])" 
Range("G11").Select 
Application.Run "Test.xlsm!CopyPaste" 
Range("H2").Select 

End Sub 

回答

2
Sub Search2() 

    With Range("h2:h385") 
     .FormulaR1C1 = "=IF(ISNUMBER(SEARCH(R[14]C6,RC[4])),RC[2],"""")" 
    End With 

    Range("G16").FormulaR1C1 = "=SpecialConcatenate(C[1])" 
    Application.Run "Test.xlsm!CopyPaste" 

End Sub 

如果你把括号内的R个,这使得它相对于Wh是你所在的atever cell。所以R [14]当你在第2行时会指向第16行,当你在第200行时它会指向第214行。

+0

嗨,感谢您的回应:) - 这是否也会增加G的范围?即从h2变为h3,G从g2变为g3→重复[h4,g4,/ h5,g6等] – Tom 2010-07-01 18:23:09

+0

是的。 R [14] C6意味着在列G中向下14行。无论当前列是什么,C6总是指向列G(因为它不使用括号)。 R [14]随着行更改而改变。 RC [4]意味着停留在同一行,并向右移动4列。在这一个中,行和列都是相对于活动单元格的。 – 2010-07-02 13:04:31