|
5学分
如题
arr1=[B2:F9]
arr2 =[Y2:Z9]
希望新数组可以合并这2个数组,不知道不用循环可以做到吗??(注明:行范围一样,列范围不一样,但都是二维数组)
不希望通过单元格过度
谢谢解答
示例来了
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" (ByRef Destination As Any, ByVal Length As Long)
Sub Demo()
' 吕布于2011/04/09
Dim arr1() As Variant, arr2() As Variant, arrResult() As Variant
Dim lCount As Long
' 取得原始值
arr1 = Range("B2:F9").Value
arr2 = Range("H2:I9").Value
ReDim arrResult(LBound(arr1, 1) To UBound(arr1, 1), LBound(arr1, 2) To UBound(arr1, 2) + UBound(arr2, 2))
' 复制arr1到arrResult
lCount = (UBound(arr1, 1) * UBound(arr1, 2))
CopyMemory ByVal VarPtr(arrResult(1, 1)), ByVal VarPtr(arr1(1, 1)), 16& * lCount
ZeroMemory ByVal VarPtr(arr1(1, 1)), 16& * lCount
' 复制arr2到arrResult
lCount = (UBound(arr2, 1) * UBound(arr2, 2))
CopyMemory ByVal VarPtr(arrResult(1, 1 + UBound(arr1, 2))), ByVal VarPtr(arr2(1, 1)), 16& * lCount
ZeroMemory ByVal VarPtr(arr2(1, 1)), 16& * lCount
' 填充arrResult到表格
Range("B12").Resize(UBound(arrResult, 1), UBound(arrResult, 2)).ClearContents
Range("B12").Resize(UBound(arrResult, 1), UBound(arrResult, 2)) = arrResult
End Sub
API合并二维数组.rar
(8.48 KB, 下载次数: 18)
|
最佳答案
查看完整内容
示例来了
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" (ByRef Destination As Any, ByVal Length As Long)
Sub Demo()
' 吕布于2011/04/09
Dim arr1() As Variant, arr2() As Variant, arrResult() As Variant
Dim lCount As Long
...
|