Tự động copy những ô có dữ liệu rải rác về đầu mỗi cột tương ứng, làm thế nào? (1 người xem)

Liên hệ QC

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

khamphoa

Thành viên mới
Tham gia
7/3/08
Bài viết
19
Được thích
2
Sau khi xử lý:
+ Bảng tính lên tới hàng trăm cột (Mỗi cột mỗi ĐỊA ĐIỂM)
+ Trong mỗi cột ĐỊA ĐIỂM: xuất hiện hàng trăm ô có dữ liệu nằm RẢI RÁC, không liên tục.
Yêu cầu:
+ TỰ ĐỘNG copy các ô có dữ liệu trong mỗi cột và đưa về đầu mỗi cột ĐỊA ĐIỂM tương ứng.

Cách xử lý thủ công tạm thời (nên MẤT NHIỀU THỜI GIAN, NHIỀU THAO TÁC)
Bước 1: Để đưa dữ liệu mỗi cột về 1 chỗ (bằng cách Sắp xếp) như sau.
(Sắp xếp dữ liệu GIẢM DẦN mỗi ĐỊA ĐIỂM:
Kích vào mỗi ĐỊA ĐIỂM \ chọn Sort\ chọn ZA.
Làm như vậy cho tất cả các ĐỊA ĐIỂM còn lại,
nếu có hàng trăm ĐỊA ĐIỂM, làm mất nhiều thời gian quá).
Bước 2: Sau khi dữ liệu các cột được sắp xếp về 1 chỗ,
Tiếp theo là: tìm vùng có dữ liệu của mỗi ĐỊA ĐIỂM cắt và dán về đầu mỗi cột ĐỊA ĐIỂM tương ứng.
Thao tác này lặp lại cho các ĐỊA ĐIỂM còn lại (nếu có hàng trăm ĐỊA ĐIỂM sẽ mất thời gian)

VẬY có cách nào TỰ ĐỘNG Đưa dữ liệu về đầu mỗi Cột ĐỊA ĐIỂM không?
ĐẦU VÀO: Sheet DATA, các cột ĐỊA ĐIỂM đã được xử lý có dữ liệu nhưng nằm RẢI RÁC.
ĐẦU RA: như trong sheet BAOCAOCHITIET (đã bỏ cột CỬA HÀNG)
 

File đính kèm

Sau khi xử lý:
+ Bảng tính lên tới hàng trăm cột (Mỗi cột mỗi ĐỊA ĐIỂM)
+ Trong mỗi cột ĐỊA ĐIỂM: xuất hiện hàng trăm ô có dữ liệu nằm RẢI RÁC, không liên tục.
Yêu cầu:
+ TỰ ĐỘNG copy các ô có dữ liệu trong mỗi cột và đưa về đầu mỗi cột ĐỊA ĐIỂM tương ứng.

Cách xử lý thủ công tạm thời (nên MẤT NHIỀU THỜI GIAN, NHIỀU THAO TÁC)
Bước 1: Để đưa dữ liệu mỗi cột về 1 chỗ (bằng cách Sắp xếp) như sau.
(Sắp xếp dữ liệu GIẢM DẦN mỗi ĐỊA ĐIỂM:
Kích vào mỗi ĐỊA ĐIỂM \ chọn Sort\ chọn ZA.
Làm như vậy cho tất cả các ĐỊA ĐIỂM còn lại,
nếu có hàng trăm ĐỊA ĐIỂM, làm mất nhiều thời gian quá).
Bước 2: Sau khi dữ liệu các cột được sắp xếp về 1 chỗ,
Tiếp theo là: tìm vùng có dữ liệu của mỗi ĐỊA ĐIỂM cắt và dán về đầu mỗi cột ĐỊA ĐIỂM tương ứng.
Thao tác này lặp lại cho các ĐỊA ĐIỂM còn lại (nếu có hàng trăm ĐỊA ĐIỂM sẽ mất thời gian)

VẬY có cách nào TỰ ĐỘNG Đưa dữ liệu về đầu mỗi Cột ĐỊA ĐIỂM không?
ĐẦU VÀO: Sheet DATA, các cột ĐỊA ĐIỂM đã được xử lý có dữ liệu nhưng nằm RẢI RÁC.
ĐẦU RA: như trong sheet BAOCAOCHITIET (đã bỏ cột CỬA HÀNG)

Bạn thử copy code này vào 1 module rồi chạy thử xem sao. Thay chữ O cho đúng cột bạn cần
PHP:
Sub DataMoved()
Dim data(), Result()
Dim i As Long, j As Long, k As Long, kk As Long
data = Sheets("Data").[A19:O65536].Value
ReDim Result(1 To UBound(data), 1 To UBound(data, 2))
For i = 1 To UBound(data, 2)
   For j = 1 To UBound(data)
      If data(j, i) <> "" Then
         k = k + 1
         Result(k, i) = data(j, i)
      End If
      If k > kk Then kk = k
   Next j
   k = 0
Next i
Sheets("BAOCAOCHITIET").[A19].Resize(kk, UBound(data, 2)) = Result
End Sub
 
Ồh cám ơn bạn quanghai1969 rất nhiều, mình thực hiện được rồi. Vấn đề về Code mình còn amater lắm. Hi vọng nhận được nhiều ý kiến đóng góp hữu ích của bạn trong các dịp sau.
 
Nếu đã dùng VBA sao không lọc lấy trực tiếp dữ liệu từ bảng "CỬA HÀNG" mang sang sheet "BAOCAOCHITIET" luôn mà phải qua trung gian cái bảng có một đống công thức nữa vậy _ khoảng 2000 bảng ghi & trên 50 cưa hàng thì sẽ có bao nhiêu công thức đây hả Trời_ Híc
Thân
 
Web KT

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

Back
Top Bottom