Redim mảng ở sheet khác (1 người xem)

  • Thread starter Thread starter rilie
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

rilie

Thành viên mới
Tham gia
7/6/17
Bài viết
12
Được thích
0
Giới tính
Nam
Bình thường khi Redim kích thước mảng mình hay làm kiểu này
ReDim kq(1 To 113, 1 To 8) '( sheet2 hiện kết quả)
arr = Sheets("Data").Range("A2:H" & dongcuoi).Value
Nhưng khi thêm trường hợp mảng động arr2() dữ liệu nằm ở sheet data ( 1 phần trong mảng arr) lại bí không biết Redim kiểu gi để lấy dữ liệu.
Nhờ Anh Chị hướng dẫn giúp !
 
Bình thường khi Redim kích thước mảng mình hay làm kiểu này
ReDim kq(1 To 113, 1 To 8) '( sheet2 hiện kết quả)
Phi lý. Redim chỉ thay đổi kích thước mảng bằng cách tạo một mảng mới. Việc "sheet2 hiện kết quả" không thể xảy ra.

arr = Sheets("Data").Range("A2:H" & dongcuoi).Value
Nhưng khi thêm trường hợp mảng động arr2() dữ liệu nằm ở sheet data ( 1 phần trong mảng arr) lại bí không biết Redim kiểu gi để lấy dữ liệu.
Nhờ Anh Chị hướng dẫn giúp !
Redim, như đã nói trên, là lệnh tạo mảng mới, làm sao "lấy dữ liệu" được.
Muốn lấy một phần của mảng data thỉ dùng offset và resize, hoặc Range.
arr2 = Sheets("Data").Range("A2").Offset(số dòng, số cột).Resize(lượng dòng, lượng cột)

Muốn đổ dữ liệu từ mảng này sang mảng kia thì dùng vòng lặp
 
Upvote 0
Chắc do mình trình bày không rõ: ví dụ như code bên dưới mình có data tầm 20.000 dòng. Vòng lặp sẽ chạy hết đến 20.000 dòng dữ liệu cho dù đến dòng thứ 200 đến 215 đã lọc ra những dữ liệu cần. Như thế hơi thừa nên mình muốn giới hạn lại mảng phải lọc trong khoản 100 dòng khi thỏa điều kiện if đầu tiên. Đại loại thế...

Sub id()
Dim arr(), dongcuoi As Integer
Dim i As Integer, J As Integer, k As Integer, t As Integer
'Dim kq(1 To 3500, 1 To 10)
Dim kq()
Application.ScreenUpdating = False
dongcuoi = Sheets("Data").Range("B" & Rows.Count).End(xlUp).Row
arr = Sheets("Data").Range("A2:H" & dongcuoi).Value
ReDim kq(1 To 113, 1 To 6)
For i = LBound(arr, 1) To UBound(arr, 1)
If arr(i, 1) = Sheets("PU").Cells(5, 8) Then
k = k + 1
For J = 3 To 6
kq(k, J - 1) = arr(i, J)
kq(k, 1) = k
Next J
End If
Next i
Sheets("T").Range("B12").Resize(102, 6).Value = kq
 
Upvote 0
Xin lỗi nhé. Tính tôi nhát lắm. Nghe đến con số chục ngàn dòng là tôi rét không muốn làm tiếp.
Bạn chịu khó chờ người khác nhé.
 
Upvote 0
Web KT

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

Back
Top Bottom