- Tham gia
- 17/8/08
- Bài viết
- 8,662
- Được thích
- 16,720
- Giới tính
- Nam
Tôi mới học cách xử lý mảng nên chưa rành về nó lắm, tôi có một thủ tục như sau:
Và từ đó, rút gọn lại như dưới đây:
Xin vui lòng cho hỏi, Với cách rút gọn như trên, không biết đã tối ưu chưa?
Xin cảm ơn rất nhiều!
PHP:
Sub Test()
Dim iArr As Long, sArray, MyArr
With HocArray
sArray = Range(.[A4], .[A65536].End(xlUp)).Resize(, 11).Value
ReDim MyArr(1 To UBound(sArray, 1), 1 To 14)
For iArr = 1 To UBound(sArray, 1)
MyArr(iArr, 1) = sArray(iArr, 2)
MyArr(iArr, 2) = sArray(iArr, 3)
MyArr(iArr, 3) = sArray(iArr, 4)
MyArr(iArr, 4) = sArray(iArr, 5)
MyArr(iArr, 5) = sArray(iArr, 6)
MyArr(iArr, 6) = sArray(iArr, 7)
MyArr(iArr, 7) = MyArr(iArr, 1) + MyArr(iArr, 3) + MyArr(iArr, 5)
MyArr(iArr, 8) = MyArr(iArr, 2) + MyArr(iArr, 4) + MyArr(iArr, 6)
MyArr(iArr, 9) = sArray(iArr, 8)
MyArr(iArr, 10) = sArray(iArr, 9)
MyArr(iArr, 11) = sArray(iArr, 10)
MyArr(iArr, 12) = sArray(iArr, 11)
MyArr(iArr, 13) = MyArr(iArr, 8) + MyArr(iArr, 9) + MyArr(iArr, 10) + MyArr(iArr, 11) + MyArr(iArr, 12)
MyArr(iArr, 14) = sArray(iArr, 1)
Next
.[M4].Resize(UBound(MyArr, 1), 14).Value = MyArr
End With
End Sub
Và từ đó, rút gọn lại như dưới đây:
PHP:
Sub TestRutGon()
Dim iArr As Long, jArr As Long, sArray, MyArr
With HocArray
sArray = Range(.[A4], .[A65536].End(xlUp)).Resize(, 11).Value
ReDim MyArr(1 To UBound(sArray, 1), 1 To 14)
For iArr = 1 To UBound(sArray, 1)
For jArr = 1 To 6
MyArr(iArr, jArr) = sArray(iArr, jArr + 1)
Next
MyArr(iArr, 7) = MyArr(iArr, 1) + MyArr(iArr, 3) + MyArr(iArr, 5)
MyArr(iArr, 8) = MyArr(iArr, 2) + MyArr(iArr, 4) + MyArr(iArr, 6)
For jArr = 9 To 12
MyArr(iArr, jArr) = sArray(iArr, jArr - 1)
Next
MyArr(iArr, 13) = MyArr(iArr, 8) + MyArr(iArr, 9) + MyArr(iArr, 10) + MyArr(iArr, 11) + MyArr(iArr, 12)
MyArr(iArr, 14) = sArray(iArr, 1)
Next
.[M4].Resize(UBound(MyArr, 1), 14).Value = MyArr
End With
End Sub
Xin vui lòng cho hỏi, Với cách rút gọn như trên, không biết đã tối ưu chưa?
Xin cảm ơn rất nhiều!