Tạo macro copy cột từ file Excel này sang File Excel khác (2 người xem)

  • Thread starter Thread starter trietvm
  • Ngày gửi Ngày gửi

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

trietvm

Thành viên mới
Tham gia
7/12/09
Bài viết
6
Được thích
1
Chào mọi người,mình là mem mới của diễn đàn mình đang cần tạo 1 macro để copy các cột từ file excel này sang file excel khác.Cụ thể như sau:
file excel 1 có thứ tự các cột A,B,C,D,E. Mình muốn copy sang file excel 2 có các thứ tự cột được thay đổi như sau: C,A,B,E,D chẳng hạn thế.
Rất mong được mọi người hướng dẫn giúp,mình xin cảm ơn.
 
Chào mọi người,mình là mem mới của diễn đàn mình đang cần tạo 1 macro để copy các cột từ file excel này sang file excel khác.Cụ thể như sau:
file excel 1 có thứ tự các cột A,B,C,D,E. Mình muốn copy sang file excel 2 có các thứ tự cột được thay đổi như sau: C,A,B,E,D chẳng hạn thế.
Rất mong được mọi người hướng dẫn giúp,mình xin cảm ơn.
Bạn đưa 1 ít dữ liệu giả lập lên nhé.
 
Upvote 0
ví dụ: file Excel 1 có các cột nội dung như sau:
A B C D E
001 Bánh Cái 10 1000
002 Kẹo Cây 5 20000
003 Cafe Gói 3 75000
.... ...... ..... ...... .......

Mình muốn file excel 2 có thứ tự các cột được đổi lại như sau:
D E A B C
10 1000 001 Bánh Cái
5 20000 002 Kẹo Cây
3 75000 003 Cafe Gói

Rất mong được bạn domfootwear giúp đỡ :)
 
Upvote 0
ví dụ: file Excel 1 có các cột nội dung như sau:
A B C D E
001 Bánh Cái 10 1000
002 Kẹo Cây 5 20000
003 Cafe Gói 3 75000
.... ...... ..... ...... .......

Mình muốn file excel 2 có thứ tự các cột được đổi lại như sau:
D E A B C
10 1000 001 Bánh Cái
5 20000 002 Kẹo Cây
3 75000 003 Cafe Gói

Rất mong được bạn domfootwear giúp đỡ :)
Bạn dùng code này nhé:

Mã:
Sub CopyCot()
    With Worksheets("Sheet1")
        .Columns("a").Copy Worksheets("Sheet2").Columns("c")
        .Columns("b").Copy Worksheets("Sheet2").Columns("d")
        .Columns("c").Copy Worksheets("Sheet2").Columns("e")
        .Columns("d").Copy Worksheets("Sheet2").Columns("a")
        .Columns("e").Copy Worksheets("Sheet2").Columns("b")
    End With
    Worksheets("Sheet2").Activate
End Sub

Bạn tham khảo thêm file nhé.
 

File đính kèm

Upvote 0
Rất cảm ơn bạn domfootwear đã trả lời mình câu hỏi trên,mình lại có 1 câu hỏi nữa là trong khi copy các cột từ Sheet1 sang Sheet2 mình muốn Insert vào Sheet2 một cột có giá trị mặc định chẳng hạn:

D E A B C F
10 1000 001 Bánh Cái VNĐ
5 20000 002 Kẹo Cây VNĐ
3 75000 003 Cafe Gói VNĐ
 
Upvote 0
Rất cảm ơn bạn domfootwear đã trả lời mình câu hỏi trên,mình lại có 1 câu hỏi nữa là trong khi copy các cột từ Sheet1 sang Sheet2 mình muốn Insert vào Sheet2 một cột có giá trị mặc định chẳng hạn:

D E A B C F
10 1000 001 Bánh Cái VNĐ
5 20000 002 Kẹo Cây VNĐ
3 75000 003 Cafe Gói VNĐ

Cái này bạn định dạng thôi. Vào Format Cells (Ctrl+1) chọn thẻ Number, chọn Custom bạn gõ vào định dạng bạn cần. VD bạn muốn 1,000 cái, bạn gõ #,##0 "cái", OK
 
Upvote 0
Rất cảm ơn bạn domfootwear đã trả lời mình câu hỏi trên,mình lại có 1 câu hỏi nữa là trong khi copy các cột từ Sheet1 sang Sheet2 mình muốn Insert vào Sheet2 một cột có giá trị mặc định chẳng hạn:

D E A B C F
10 1000 001 Bánh Cái VNĐ
5 20000 002 Kẹo Cây VNĐ
3 75000 003 Cafe Gói VNĐ
Bạn dùng code sau nhe:

Mã:
Sub CopyCot()
    With Worksheets("Sheet1")
        .Columns("a").Copy Worksheets("Sheet2").Columns("c")
        .Columns("b").Copy Worksheets("Sheet2").Columns("d")
        .Columns("c").Copy Worksheets("Sheet2").Columns("e")
        .Columns("d").Copy Worksheets("Sheet2").Columns("a")
        .Columns("e").Copy Worksheets("Sheet2").Columns("b")
    End With
    With Worksheets("Sheet2")
        .Range("F2:F" & .[E65500].End(xlUp).Row) = "VNÐ"
        .Activate
    End With
End Sub
 

File đính kèm

Upvote 0
hic hic,mình muốn viết macro làm tự động, vì file dữ liệu của mình có khoảng 1000 dòng
 
Upvote 0
Mình tham gia Dom nên làm gọn code bài 7 1 chút vì nó có quy luật

PHP:
Sub CopyCot1()
    For i = 1 To 5
        Sheet1.Columns(i).Copy Sheet2.Columns(IIf(i > 3, i - 3, i + 2))
  Next
        Sheet2.Range("F2:F" & Sheet2.[E65500].End(xlUp).Row) = "VNÐ"
        Sheet2.Activate
End Sub
 
Upvote 0
Mình tham gia thêm, nếu cấu trúc chép vùng nguồn và vùng đích quá phức tạp thì ta nên đặt Name tương ứng ở 2 sheet. Khi đó câu lệnh trở nên đơn giản hơn. Ta sửa qua 1 chút là được

PHP:
Sub copy()
For i = 1 To 5
Sheet1.Range("nguon" & i).copy Sheet2.Range("dich" & i)
Next
 Sheet2.Range("F2:F" & Sheet2.[E65500].End(xlUp).Row) = "VNÐ"
 Sheet2.Activate
End Sub
 

File đính kèm

Upvote 0
Bạn dùng code sau nhe:

Mã:
Sub CopyCot()
    With Worksheets("Sheet1")
        .Columns("a").Copy Worksheets("Sheet2").Columns("c")
        .Columns("b").Copy Worksheets("Sheet2").Columns("d")
        .Columns("c").Copy Worksheets("Sheet2").Columns("e")
        .Columns("d").Copy Worksheets("Sheet2").Columns("a")
        .Columns("e").Copy Worksheets("Sheet2").Columns("b")
    End With
    With Worksheets("Sheet2")
        .Range("F2:F" & .[E65500].End(xlUp).Row) = "VNÐ"
        .Activate
    End With
End Sub

Mình có làm theo đoạn code trên để insert giá trị mặc định cho các cột B,C,E ở Sheet 2 nhưng sao không được nhỉ,mong bạn xem hộ mình với (có đính kèm file).
 
Upvote 0
Xin cho mình biết ý nghĩa của dòng lệnh:
Range("F2:F" & .[E65500].End(xlUp).Row) = "VNÐ"

Mình muốn chèn vào cột F từ dòng 2 đến dòng cuối cùng của các cột khác tương ứng trong sheet thì làm sao nhỉ?
 
Upvote 0
Xin cho mình biết ý nghĩa của dòng lệnh:
Range("F2:F" & .[E65500].End(xlUp).Row) = "VNÐ"

Mình muốn chèn vào cột F từ dòng 2 đến dòng cuối cùng của các cột khác tương ứng trong sheet thì làm sao nhỉ?

Đoạn code trên nó sẽ cho giá trị vào cột F từ dòng 2 đến dòng cuối cùng của cột E, bạn thử lại đi nhé, cột E có dòng cuối cùng ở đâu thì nó sẽ cho ra kết quả đến đó.
 
Upvote 0
cho em hoi cach copy du lieu

em có sheet 1 toàn là ngày tháng định dạng ngày tháng ví dụ:
10-02-2010 nghiệm thu bê tông
12-2-2010 nghiệm thu cốt thép
bây giờ em muốn copy dữ liệu này sang một ô ở sheet 2
Ngày 10 tháng 02 năm 2010
Nghiệm thu bê tông
bây giờ em chỉ cần copy một phát nhưng cách đó 5 dòng em được ngay:
Ngày 12 tháng 02 năm 2010
Nghiệm thu cốt thép
Bây giờ em đang muốn copy paste như thế lên 500 trang mà nhiều quá hix cứ mỗi lần copy lại phải chỉnh sửa. hix các bác giúp em với!
Cảm ơn các bác trước nha!
 

File đính kèm

Upvote 0
Bạn nào có chương trình Quản lý tài chính tài sản công đoàn bằng excel cho mình xin với. rất cảm ơn
 
Upvote 0
Cho mình hỏi thêm, theo ví dụ của trietvm đưa ra, giả sử mình sử dụng AutoFilter đã ẩn đi một số dòng. Bây giờ mình vẫn copy dữ liệu từ sheet 1 sang sheet 2 với số cột thay đổi tương tự như trên (A, B, C, D, E sang C,A,B,E,D) trừ dòng tiêu đề (dòng 1, dùng AutoFilter) thì code phải đổi ra sao?
 
Upvote 0
Cho mình hỏi thêm, theo ví dụ của trietvm đưa ra, giả sử mình sử dụng AutoFilter đã ẩn đi một số dòng. Bây giờ mình vẫn copy dữ liệu từ sheet 1 sang sheet 2 với số cột thay đổi tương tự như trên (A, B, C, D, E sang C,A,B,E,D) trừ dòng tiêu đề (dòng 1, dùng AutoFilter) thì code phải đổi ra sao?
Muốn copy đảo cột thì dùng advancedfilter là gọn nhất.
PHP:
Sub copy_dao_cot()
Sheet1.Range("A1:E10000").AdvancedFilter 2, , Sheet2.[A1:E1]
End Sub
 

File đính kèm

Upvote 0
Ơ, hay thật, rất ngắn gọn. Nhưng mình thử lọc dữ liệu, ấn copy sang sheet2 thì file vẫn copy tất cả các dữ liệu dù ẩn hay không. Mình có cách nào ko?
 
Upvote 0
Mình cũng muốn hỏi cái này là mình dùng macro đúng không vậy các bạn?

Mình muốn tạo 1 bảng lấy mã hàng từ 1 sheet khác nhưng khi nhấp vào cột mã hàng thì nó thể hiện mã hàng, tên hàng, đơn vị tính của 1 sheet khác giống hình thì làm cách nào vậy mọi người ?
 

File đính kèm

Upvote 0
Mình muốn tạo 1 bảng lấy mã hàng từ 1 sheet khác nhưng khi nhấp vào cột mã hàng thì nó thể hiện mã hàng, tên hàng, đơn vị tính của 1 sheet khác giống hình thì làm cách nào vậy mọi người ?
Muốn biết làm sao thì đưa cái file excel lên.
 
Upvote 0

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

Back
Top Bottom