我目前正在尝试将两个范围合并为一个范围。我的范围是动态的,因为它们根据日期而变化。例如,假设我要组合的两个范围是A3:A10,另一个是C7:C12。每天刷新并将索引移动1 ...所以新范围是A4:A11和C8:C13。我想将两者合并为一个不同的列。我假设这必须在vba中实现...但是,我的运气很少。我有值表明我想在工作表中创建范围的行号。我试过制作VBA宏,但我一直没有运气。我一直得到9(我想要的范围的第一项)作为我的结果而不是范围,但我想使用该函数来打印整个组合范围。我也考虑过使用Sub,但我在使用Sub方面经验不足。
这是我到目前为止所做的...请告诉我任何建议或提示。
Function FiveYTwoY()
Worksheets("India Data").Activate
index5_90 = Cells(10, 2).Value '5Y 90 day index
index5_yes = Cells(9, 2).Value '5Y yesterday index
index2_90 = Cells(7, 2).Value '2Y 90 day index
index2_yes = Cells(6, 2).Value '2Y yesterday index
Dim range5 As Range
Set range5 = Range(Cells(index5_90, 20), Cells(index5_yes, 20))
Dim range2 As Range
Set range2 = Range(Cells(index2_90, 17), Cells(index2_yes, 17))
FiveYTwoY = Union(range2, range5)
End Function
感谢您的帮助
答案 0 :(得分:0)
您应该避免使用.Select/Activate
。您可能希望看到THIS。完全限定您的对象。
此外,您必须使用Set
分配范围,如下所示
Sub Sample()
Dim range5 As Range, range2 As Range, FiveYTwoY As Range
With Worksheets("India Data")
index5_90 = .Cells(10, 2).Value '5Y 90 day index
index5_yes = .Cells(9, 2).Value '5Y yesterday index
index2_90 = .Cells(7, 2).Value '2Y 90 day index
index2_yes = .Cells(6, 2).Value '2Y yesterday index
Set range5 = .Range(.Cells(index5_90, 20), .Cells(index5_yes, 20))
Set range2 = .Range(.Cells(index2_90, 17), .Cells(index2_yes, 17))
Set FiveYTwoY = Union(range2, range5)
With FiveYTwoY
'
'~~> Do whatever you want with that range here
'
End With
End With
End Sub