Vòng lặp với mảng dữ liệu

Liên hệ QC

ngocbinh.no.kia

Thành viên mới
Tham gia
25/1/11
Bài viết
42
Được thích
2
Tôi có code như sau; nhờ anh em tạo giúp 1 vòng lặp. xin cảm ơn
Ghi chú: Range("PA_SXTM_B5") là mảng ô gồm 5 dòng và 22 cột, nhưng chỉ sử dụng dữ liệu ở các cột 1, 13, 18, và 22

Sub SAOLUUPA()
Dim arrB
Set arrB = Range("PA_SXTM_B5")

Sheets("BA").Cells(1, 1) = arrB(1, 1)
Sheets("BA").Cells(1, 2) = arrB(1, 13)
Sheets("BA").Cells(1, 3) = arrB(1, 18)
Sheets("BA").Cells(1, 4) = arrB(1, 22)
Sheets("BA").Cells(1, 5) = arrB(2, 1)
Sheets("BA").Cells(1, 6) = arrB(2, 13)
Sheets("BA").Cells(1, 7) = arrB(2, 18)
Sheets("BA").Cells(1, 7) = arrB(2, 22)
Sheets("BA").Cells(1, 8) = arrB(3, 1)
Sheets("BA").Cells(1, 9) = arrB(3, 13)
Sheets("BA").Cells(1, 10) = arrB(3, 18)
Sheets("BA").Cells(1, 11) = arrB(3, 22)
Sheets("BA").Cells(1, 12) = arrB(4, 1)
Sheets("BA").Cells(1, 13) = arrB(4, 13)
Sheets("BA").Cells(1, 14) = arrB(4, 18)
Sheets("BA").Cells(1, 15) = arrB(4, 22)
Sheets("BA").Cells(1, 16) = arrB(5, 1)
Sheets("BA").Cells(1, 17) = arrB(5, 13)
Sheets("BA").Cells(1, 18) = arrB(5, 18)
Sheets("BA").Cells(1, 19) = arrB(5, 22)
End Sub

Sub GOIPA()
Dim arrA(1 To 5, 1 To 22)
arrA(1, 1) = Sheets("BA").Cells(1, 1)
arrA(1, 13) = Sheets("BA").Cells(1, 2)
arrA(1, 18) = Sheets("BA").Cells(1, 3)
arrA(1, 22) = Sheets("BA").Cells(1, 4)
arrA(2, 1) = Sheets("BA").Cells(1, 5)
arrA(2, 13) = Sheets("BA").Cells(1, 6)
arrA(2, 18) = Sheets("BA").Cells(1, 7)
arrA(2, 22) = Sheets("BA").Cells(1, 7)
arrA(3, 1) = Sheets("BA").Cells(1, 8)
arrA(3, 13) = Sheets("BA").Cells(1, 9)
arrA(3, 18) = Sheets("BA").Cells(1, 10)
arrA(3, 22) = Sheets("BA").Cells(1, 11)
arrA(4, 1) = Sheets("BA").Cells(1, 12)
arrA(4, 13) = Sheets("BA").Cells(1, 13)
arrA(4, 18) = Sheets("BA").Cells(1, 14)
arrA(4, 22) = Sheets("BA").Cells(1, 15)
arrA(5, 1) = Sheets("BA").Cells(1, 16)
arrA(5, 13) = Sheets("BA").Cells(1, 17)
arrA(5, 18) = Sheets("BA").Cells(1, 18)
arrA(5, 22) = Sheets("BA").Cells(1, 19)
Range("PA_SXTM_B5") = arrA

End Sub
 
PHP:
Sub SAOLUUPA()
Dim data as variant, lastRow as long, iCol as long
Dim listCols as variant
listCols = array(1, 13, 18, 22)
data = Range("PA_SXTM_B5").value2
With Sheet("BA")
lastRow  = .range("A" & .rows.count).end(xlUp).row + 1
For iCol = 1 to 19
.Cells(lastRow, iCol).value = data(int((iCol - 1)/4)+1, listCols((iCol -1) mod 4)))
Next iCol
End with
End Sub
 
Upvote 0
Hai dòng này thì dòng trên có ý nghĩa gì đâu bạn.
Gõ nhầm; nó chạy 7-8 tăng dần
Bài đã được tự động gộp:

PHP:
Sub SAOLUUPA()
Dim data as variant, lastRow as long, iCol as long
Dim listCols as variant
listCols = array(1, 13, 18, 22)
data = Range("PA_SXTM_B5").value2
With Sheet("BA")
lastRow  = .range("A" & .rows.count).end(xlUp).row + 1
For iCol = 1 to 19
.Cells(lastRow, iCol).value = data(int((iCol - 1)/4)+1, listCols((iCol -1) mod 4)))
Next iCol
End with
End Sub
Cho minh xin luôn cái Sub GOIPA nữa
Bài đã được tự động gộp:

PHP:
Sub SAOLUUPA()
Dim data as variant, lastRow as long, iCol as long
Dim listCols as variant
listCols = array(1, 13, 18, 22)
data = Range("PA_SXTM_B5").value2
With Sheet("BA")
lastRow  = .range("A" & .rows.count).end(xlUp).row + 1
For iCol = 1 to 19
.Cells(lastRow, iCol).value = data(int((iCol - 1)/4)+1, listCols((iCol -1) mod 4)))
Next iCol
End with
End Sub
Lỗi ở dòng: .Cells(lastRow, iCol).value = data(int((iCol - 1)/4)+1, listCols((iCol -1) mod 4)))
Hình như là chưa định nghĩa: set icol =?
Bài đã được tự động gộp:
 

File đính kèm

  • FILE MAU.xlsm
    19.7 KB · Đọc: 6
Lần chỉnh sửa cuối:
Upvote 0
UP LEN DAY CHO AI CẦN THAM KHẢO
Sub SAOLUUPA2()
Dim arrB, lastRow As Long, iCol As Long, Tongcot As Long
Tongcot = 4 'So cot cua mang du lieu
Dim listCols As Variant
listCols = Array(1, 13, 18, 22)

arrB = Range("PA_SXTM_B5").Value
With Sheets("BA")
lastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
For iCol = 0 To (UBound(arrB) * Tongcot - 1)
.Cells(lastRow, iCol + 1).Value = arrB(Int(iCol / Tongcot) + 1, listCols(iCol Mod Tongcot))
Next iCol
End With
MsgBox ("Xong!")
End Sub

Sub GOIPA2()
Dim arrB, lastRow As Long, iCol As Long, Tongcot As Long, lastCol As Long
Tongcot = 4 'So cot cua mang du lieu
Dim listCols As Variant
listCols = Array(1, 13, 18, 22)
With Sheets("BA")
lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
lastCol = .Cells(lastRow, .Columns.Count).End(xlToLeft).Column
ReDim arrB(1 To 5, 1 To 22)
For iCol = 0 To lastCol - 1
arrB(Int(iCol / Tongcot) + 1, listCols(iCol Mod Tongcot)) = .Cells(lastRow, iCol + 1).Value
Next iCol
Range("PA_SXTM_B5").Value = arrB
End With
MsgBox ("Xong!")
End Sub
 

File đính kèm

  • FILE MAU.xlsm
    23 KB · Đọc: 6
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom