View Single Post
  #9   Report Post  
Posted to microsoft.public.excel.programming
GS[_2_] GS[_2_] is offline
external usenet poster
 
Posts: 3,514
Default Set a Range to a variable

If I understand correctly, you want a 6row by 12col table containing
the results. If so then try...

Sub CombineData()
Dim sec1, sec2, sec3, n&, lRows&, lCols&, vaDataOut()

'Load ranges into arrays
sec1 = Range("$B$3:$E$3")
sec2 = Range("$G$3:$J$3")
sec3 = Range("$L$3:$O$3")

'Get the number of rows/cols for the output
lRows = (UBound(sec1, 1) + UBound(sec2, 1) + UBound(sec3, 1)) * 2
lCols = UBound(sec1, 2) + UBound(sec2, 2) + UBound(sec3, 2)

'Resize the output array
ReDim vaDataOut(1 To lRows, 1 To lCols)

'Load the output array
For n = 1 To UBound(sec1, 2) '//fortunately they're all the same
'sec1
vaDataOut(1, n) = sec1(1, n): vaDataOut(2, n) = sec1(1, n)
vaDataOut(3, n + 4) = sec1(1, n): vaDataOut(4, n + 8) = sec1(1, n)
vaDataOut(5, n + 4) = sec1(1, n): vaDataOut(6, n + 8) = sec1(1, n)

'sec2
vaDataOut(1, n + 4) = sec2(1, n): vaDataOut(2, n + 8) = sec2(1, n)
vaDataOut(3, n) = sec2(1, n): vaDataOut(4, n) = sec2(1, n)
vaDataOut(5, n + 8) = sec2(1, n): vaDataOut(6, n + 4) = sec2(1, n)

'sec3
vaDataOut(1, n + 8) = sec3(1, n): vaDataOut(2, n + 4) = sec3(1, n)
vaDataOut(3, n + 8) = sec3(1, n): vaDataOut(4, n + 4) = sec3(1, n)
vaDataOut(5, n) = sec3(1, n): vaDataOut(6, n) = sec3(1, n)
Next

'Dump the data back into the wks
Range("$B$10").Resize(lRows, lCols) = vaDataOut
End Sub

--
Garry

Free usenet access at http://www.eternal-september.org
Classic VB Users Regroup!
comp.lang.basic.visual.misc
microsoft.public.vb.general.discussion