befaint
|||||||||||||
- Tham gia
- 6/1/11
- Bài viết
- 14,557
- Được thích
- 19,765
1. Hàm gộp 2 mảng 2 chiều:
Hoặc:
2. Hàm gộp 2 mảng 1 chiều:
Hoặc:
PHP:
Function Combine2Arrays2D(ByVal Arr1 As Variant, ByVal Arr2 As Variant) As Variant
Rem Arr1 và Arr2 là mang 2 chiêu
If IsArray(Arr1) = False Or IsArray(Arr2) = False Then Exit Function
Dim lB1f As Long, lB1s As Long, uB1f As Long, uB1s As Long
Dim lB2f As Long, lB2s As Long, uB2f As Long, uB2s As Long
Dim m1 As Long, n1 As Long, m2 As Long, n2 As Long
Dim Result(), m As Long, n As Long, i As Long, k As Long
lB1f = LBound(Arr1, 1): lB1s = LBound(Arr1, 2)
uB1f = UBound(Arr1, 1): uB1s = UBound(Arr1, 2)
lB2f = LBound(Arr2, 1): lB2s = LBound(Arr2, 2)
uB2f = UBound(Arr2, 1): uB2s = UBound(Arr2, 2)
m1 = uB1f - lB1f + 1: n1 = uB1s - lB1s + 1
m2 = uB2f - lB2f + 1: n2 = uB2s - lB2s + 1
If n1 <> n2 Then Exit Function
ReDim Result(1 To m1 + m2, 1 To n1)
For i = lB1f To uB1f
m = m + 1
n = 0
For k = lB1s To uB1s
n = n + 1
Result(m, n) = Arr1(i, k)
Next k
Next i
For i = lB2f To uB2f
m = m + 1
n = 0
For k = lB2s To uB2s
n = n + 1
Result(m, n) = Arr2(i, k)
Next k
Next i
Combine2Arrays2D = Result
End Function
PHP:
Function Combine2Arrays2Ds(ByVal Arr1 As Variant, ByVal Arr2 As Variant) As Variant
Rem Arr1 và Arr2 là mang 2 chiêu
If IsArray(Arr1) = False Or IsArray(Arr2) = False Then Exit Function
Dim lB1f As Long, lB1s As Long, uB1f As Long, uB1s As Long
Dim lB2f As Long, lB2s As Long, uB2f As Long, uB2s As Long
Dim m1 As Long, n1 As Long, m2 As Long, n2 As Long
Dim Result(), m As Long, n As Long, i As Long, k As Long, opCalc
lB1f = LBound(Arr1, 1): lB1s = LBound(Arr1, 2)
uB1f = UBound(Arr1, 1): uB1s = UBound(Arr1, 2)
lB2f = LBound(Arr2, 1): lB2s = LBound(Arr2, 2)
uB2f = UBound(Arr2, 1): uB2s = UBound(Arr2, 2)
m1 = uB1f - lB1f + 1: n1 = uB1s - lB1s + 1
m2 = uB2f - lB2f + 1: n2 = uB2s - lB2s + 1
If n1 <> n2 Then Exit Function
If n1 > Columns.Count Then Exit Function
If m1 + m2 > Rows.Count Then Exit Function
With Application
opCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
.ScreenUpdating = False
With Worksheets.Add
.Range("A1").Resize(m1, n1) = Arr1
.Range("A1").Offset(m1).Resize(m2, n1) = Arr2
Combine2Arrays2Ds = .Range("A1").Resize(m1 + m2, n1)
.Delete
End With
.Calculation = opCalc
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Function
PHP:
Function Combine2Arrays1D(ByVal Arr1 As Variant, ByVal Arr2 As Variant) As Variant
Rem Arr1 và Arr2 là mang 1 chiêu
If IsArray(Arr1) = False Or IsArray(Arr2) = False Then Exit Function
Dim lB1 As Long, uB1 As Long, lB2 As Long, uB2 As Long
Dim Result(), i As Long, j As Long, m1 As Long, m2 As Long, m As Long
lB1 = LBound(Arr1): uB1 = UBound(Arr1)
lB2 = LBound(Arr2): uB2 = UBound(Arr2)
m1 = uB1 - lB1 + 1: m2 = uB2 - lB2 + 1
Result = Arr1
m = IIf(LBound(Result) = 0, m1 + m2 - 1, m1 + m2)
ReDim Preserve Result(LBound(Result) To m)
j = IIf(LBound(Result) = 0, m1, m1 + 1)
For i = lB2 To uB2
Result(j) = Arr2(i)
j = j + 1
Next i
Combine2Arrays1D = Result
End Function
PHP:
Function Combine2Arrays1Ds(ByVal Arr1 As Variant, Arr2 As Variant) As Variant
Rem Arr1 và Arr2 là mang 1 chiêu
If IsArray(Arr1) = False Or IsArray(Arr2) = False Then Exit Function
Dim sDelimiter As String
sDelimiter = "|@|$|$|%|"
Combine2Arrays1Ds = Split(Join(Arr1, sDelimiter) & sDelimiter & Join(Arr2, sDelimiter), sDelimiter)
End Function
Lần chỉnh sửa cuối: