2017-08-14 90 views
2

我试图将多维数组放入一个范围。但是,范围是分割(非连续)范围,我需要能够使用.Cells而不是标准.Range("A1")。我的下面的代码在某种程度上起作用,但是对于联盟中的每个范围来说,只能放在数组的前两个实例中。Excel VBA - 将多维数组转换为非连续区域(使用单元格联合)

请参阅以下内容:

Dim TestArray(1 To 2, 1 To 3) As Integer 
TestArray(1, 1) = 1 
TestArray(2, 1) = 2 
TestArray(1, 2) = 3 
TestArray(2, 2) = 4 
TestArray(1, 3) = 5 
TestArray(2, 3) = 6 

Union(Range(Cells(78, 1), Cells(79, 1)), Range(Cells(78, 4), Cells(79, 4)), _ 
     Range(Cells(78, 6), Cells(79, 6))).Value = TestArray 

我的结果如下:

A78=1  
A79=2  
D78=1  
D79=2  
F78=1  
F79=2 

我要像我的结果:

A78=1  
A79=2  
D78=3  
D79=4  
F78=5  
F79=6 

任何帮助,将不胜感激!

+0

这需要通用性如何?没有直接的方法来使用'='就像你试过的一样,所以你可能需要编写一个辅助函数。函数的复杂程度取决于** 1这样的东西**你能否始终保证范围将有正确的行数/列数** 2是否数组的大小总是相同** 3.同一行上的单元格总是触摸等等。如果它总是和你的例子一样简单,那么分别分配3行就行(如Domenic的答案) – Wolfie

回答

0

尝试...

Range("A78:A79").Value = Application.Index(TestArray, 0, 1) 
Range("D78:D79").Value = Application.Index(TestArray, 0, 2) 
Range("F78:F79").Value = Application.Index(TestArray, 0, 3) 

希望这有助于!

相关问题