TÌM TÊN CỘT VÀ COPY CẢ CỘT SANG SHEET KHÁC BẰNG VBA (3 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

ngoc0977760224

Thành viên mới
Tham gia
19/3/24
Bài viết
4
Được thích
0
Chào các bạn

Nhờ các bạn giúp mình viết code VBA để tìm tên cột theo chỉ định và copy cột đó sang một sheet khác như file mô tả đính kèm. Ví dụ chỉ cần copy 3 cột không theo thứ tự trong một dữ liệu data ở sheet khác, dòng tiêu đề cột có thể là ở dòng đầu tiên hoặc dòng thứ 2, 3.
 

File đính kèm

Bạn cần lấy ví dụ cụ thể hơn để người khác có cách nhìn rõ nét hơn;
Ví dụ bạn cần copy 3 cột nào & tại sao tiêu đề cột lại ở 3 dòng khác nhau?
Thêm nữa CSDL của bạn rất lôi thôi; Cho dù là file ví dụ nhưng cũng phải nghiêm túc trong giả lập:
→ Tên người, dù là HS (học sinh), là danh từ riêng nên phải viết hoa;
Điều này chứng tỏ bạn trân trọng những người có nhã ý giúp bạn;
→ CSDL của bạn chưa có mã số duy nhất cho từng HS
Những vấn đề này sẽ góp phần không nhỏ để bạn thông hiểu các câu lệnh VBA trong tương lai, 1 khi có người giúp viết cho bạn,
. . . . .
 
Upvote 0
Cái này chỉ cần record macro thôi

1. Ctrl/F find tên cột
2. Lôi chuột về đầu cột
3. Copy/Paste sang sheet kia.
4. Quay trở về sheet ban đầu

Đặt code vào vòng lặp đủ mấy cột thôi

For Each e in [ { "tên", "Loại", "Hạng" } ]
Đặt code ở đây
Next e
 
Upvote 0
Chào các bạn

Nhờ các bạn giúp mình viết code VBA để tìm tên cột theo chỉ định và copy cột đó sang một sheet khác như file mô tả đính kèm. Ví dụ chỉ cần copy 3 cột không theo thứ tự trong một dữ liệu data ở sheet khác, dòng tiêu đề cột có thể là ở dòng đầu tiên hoặc dòng thứ 2, 3.
Trong khi chờ đợi . Tham khảo code sau:
Mã:
Option Explicit

Sub CopyCot()
Dim i&, Lr&, C&, R&
Dim Rng As Range
Dim TieuDe As Range
Set TieuDe = Sheets("BÁO CÁO").Range("A1:C1")
With Sheets("DATA")
Set Rng = .UsedRange
Lr = .UsedRange.Rows(.UsedRange.Rows.Count).Row
For i = 1 To TieuDe.Columns.Count
    If Not Rng.Find(TieuDe(i)) Is Nothing Then
        C = Rng.Find(TieuDe(i)).Column
        R = Rng.Find(TieuDe(i)).Row + 1
       .Range(.Cells(R, C), .Cells(Lr, C)).Copy Sheets("BÁO CÁO").Cells(2, i)
    End If
Next i
End With
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom