Em xin code VBA Lấy dữ liệu từ nhiều cột, ghi kết quả vào 1 cột

Liên hệ QC

hoalv1985

Thành viên hoạt động
Tham gia
27/11/17
Bài viết
130
Được thích
20
Giới tính
Nam
Em muốn lấy dữ liệu cột a hết, xong cột B, xong cột c. Như file đính kèm ( cột H là cột kết quả). Bằng cách xác định dòng cuối từng cột em cũng chạy được VBA nhưng giờ em muốn tổng thể hơn là em ko dừng ở cột a, b, c nữa mà số cột sẽ biến đổi ( ví dụ: là 10 cột). Các anh chị cho em xin code với ạ. Em cảm ơn!
 

File đính kèm

  • DEMO.xlsm
    14.8 KB · Đọc: 15
Em muốn lấy dữ liệu cột a hết, xong cột B, xong cột c. Như file đính kèm ( cột H là cột kết quả). Bằng cách xác định dòng cuối từng cột em cũng chạy được VBA nhưng giờ em muốn tổng thể hơn là em ko dừng ở cột a, b, c nữa mà số cột sẽ biến đổi ( ví dụ: là 10 cột). Các anh chị cho em xin code với ạ. Em cảm ơn!
Vậy bạn cho code tìm cột cuối rồi tiếp code dòng cuối của các cột cho đến cột cuối
 
Upvote 0
Em muốn lấy dữ liệu cột a hết, xong cột B, xong cột c. Như file đính kèm ( cột H là cột kết quả). Bằng cách xác định dòng cuối từng cột em cũng chạy được VBA nhưng giờ em muốn tổng thể hơn là em ko dừng ở cột a, b, c nữa mà số cột sẽ biến đổi ( ví dụ: là 10 cột). Các anh chị cho em xin code với ạ. Em cảm ơn!
Thử code dưới đây
Mã:
Sub abc()
Dim demo
Dim kq
Dim rws, cls
Dim i, j, k
demo = Sheet1.Range("A1").CurrentRegion
rws = UBound(demo)
cls = UBound(demo, 2)
ReDim kq(1 To rws * cls, 1 To 1)
For j = 1 To cls
    For i = 1 To rws
        If demo(i, j) <> "" Then
            k = k + 1
            kq(k, 1) = demo(i, j)
        Else
            Exit For
        End If
    Next i
Next j
Sheet1.Range("A1").Offset(, cls + 1).Resize(k, 1) = kq
End Sub
 
Upvote 0
Thử code dưới đây
Mã:
Sub abc()
Dim demo
Dim kq
Dim rws, cls
Dim i, j, k
demo = Sheet1.Range("A1").CurrentRegion
rws = UBound(demo)
cls = UBound(demo, 2)
ReDim kq(1 To rws * cls, 1 To 1)
For j = 1 To cls
    For i = 1 To rws
        If demo(i, j) <> "" Then
            k = k + 1
            kq(k, 1) = demo(i, j)
        Else
            Exit For
        End If
    Next i
Next j
Sheet1.Range("A1").Offset(, cls + 1).Resize(k, 1) = kq
End Sub
Em cảm ơn anh ạ. Để em chạy thử xem ạ
 
Upvote 0
Thử code dưới đây
Mã:
Sub abc()
Dim demo
Dim kq
Dim rws, cls
Dim i, j, k
demo = Sheet1.Range("A1").CurrentRegion
rws = UBound(demo)
cls = UBound(demo, 2)
ReDim kq(1 To rws * cls, 1 To 1)
For j = 1 To cls
    For i = 1 To rws
        If demo(i, j) <> "" Then
            k = k + 1
            kq(k, 1) = demo(i, j)
        Else
            Exit For
        End If
    Next i
Next j
Sheet1.Range("A1").Offset(, cls + 1).Resize(k, 1) = kq
End Sub
Em test thử thì thấy nếu số dòng và số cột lên lớn thì ko đúng anh ah. Như file em đính kèm ạ. Em ko biết lỗi ở đâu anh ah. chỉ thấy tổng số hàng ko đúng anh ah. Anh xem giúp em với ạ
 

File đính kèm

  • DEMO- HÀO.xlsm
    32.7 KB · Đọc: 14
Upvote 0
Em test thử thì thấy nếu số dòng và số cột lên lớn thì ko đúng anh ah. Như file em đính kèm ạ. Em ko biết lỗi ở đâu anh ah. chỉ thấy tổng số hàng ko đúng anh ah. Anh xem giúp em với ạ
Đây là do dữ liệu mẫu & file bài 5 của bạn khác nhau tại dòng đầu tiên.
Mẫu bài 1, dòng dầu tất cả khác rỗng.
Mẫu bài 5, 1 số cột có dòng đầu là rỗng.
 
Upvote 0
Đây là do dữ liệu mẫu & file bài 5 của bạn khác nhau tại dòng đầu tiên.
Mẫu bài 1, dòng dầu tất cả khác rỗng.
Mẫu bài 5, 1 số cột có dòng đầu là rỗng.
Vâng anh. Em cảm ơn anh ạ. Thế giờ khác phục lỗi đó thì có thể sửa lại code giúp em với anh. vì đôi khi 1 bảng tính dòng đầu cũng rỗng anh ah.
 
Upvote 0
Em nhờ các A/C giúp em chút ạ
Đã bị khóa.
Em xin code VBA với ạ
Tiêu đề vẫn chung chung không rõ ràng.
'--------------------------------------------
Tiêu đề bạn chỉ cần ghi "tóm tắt" yêu cầu.
Sau đó trong bài viết bạn giải thích rõ từng yêu cầu, phải lấy cái gì, cộng trừ nhân chia với cái gì, ghi vào chỗ nào, v.v...
Với bài của bạn, tiêu đề chỉ cần: "Lấy dữ liệu từ nhiều cột, ghi kết quả vào 1 cột"
(Trong bài viết bạn kèm file và giải thích rõ, từ bảng dữ liệu có nhiều cột liên tiếp (hay cách quãng), lấy dữ liệu từ trên xuống (hay từ dưới lên), hết cột này đến cột kế tiếp (từ trái sang phải hay từ phải sang trái), v.v..... kết quả ghi vào cột nào, sheet nào, và 1 đống yêu cầu gì đó có thể có).
 
Upvote 0
Bài giải sẵn cho này này. :)

Nhắc bằng thừa. Thớt rõ ràng cho rằng bạn cố tình si-pem.

Mãi cho đến lúc thấy cái này của người đang viết code mới chịu sửa. Mà chỉ sửa vì biết là mình không thể tiếp tục làm ngơ.
Cái này sửa không vấn đề, nhưng bạn cần sửa tiêu đề đi đã rồi tính.
 
Upvote 0
Web KT
Back
Top Bottom