Thử thế này xem sao. Lưu ý là file Source đang mở và dòng tiêu đề phải chuẩnchào các bạn,
yêu cầu: khi chạy Macro thì sẽ kiểm tra trên file SOURCE, khi Column 1 có giá trị là A thì copy:
Column 2 -> Colume 5 (của file TARGET)
Column 3 -> Colume 4 (của file TARGET)
Column 4 -> Colume 7 (của file TARGET)
Column 5 -> Colume 2 (của file TARGET)
Column 6 -> Colume 8 (của file TARGET)
Column 7 -> Colume 3 (của file TARGET)
Column 8 -> Colume 6 (của file TARGET)
Column 9-> Colume 9 (của file TARGET)
Các bạn có thể chỉ cho mình cách làm với.
Thử thế này xem sao. Lưu ý là file Source đang mở và dòng tiêu đề phải chuẩn
Bấm nút GPE trong sheet1, file Target.Cám ơn bạn đã hướng dẫn, nhưng đoạn code sau mình chưa hiểu lắm, bạn có thể giải thích giúp mình không?
.Range(.[C2], .[C65536].End(3)).Resize(, 10).AdvancedFilter 2, [B1:B2], [C4:J4]
Bây giờ mình đã có Format chuẩn của hai file mình muốn copy, bạn có thể xem giúp mình được không? Trong file SOURCE mình đã ghi rõ cột nào mình muốn copy.
*** Chỉ khi nào ô của cột G (file Source) có giá trị là "Thực hiện" thì mới copy giá trị của các ô trong cột J,L,P,R,S,T,W,X sang các cột của file Target.
Cám ơn các bạn!
File kia phải đúng tên file là SOURCE.xls, tôi thử không bị lỗi, bạn đặt tên khác là "tèo"Chào bạn Ba Tê,
Mình đã copy vào chung một Folder và chạy Macro (Click nút GPE trong file Target) nhưng nó vẫn chưa copy được, bạn có thể xem lại giúp mình được không?
Cám ơn bạn,
File kia phải đúng tên file là SOURCE.xls, tôi thử không bị lỗi, bạn đặt tên khác là "tèo"
Bạn xem file đính kèm đã đúng ý chưa nhé. (mình chỉ làm theo hướng dẫn trong file)Chưa ai giup dc mình file EX này sao??????????????????????.
Tôi xin đưa ra 1 cách giải:Tôi có 4 cột số liệu (như trong hình)
Các bạn chép giúp tôi lần lượt từng cột số liệu sang cột [G:G]
Public Sub Ghep()
Dim i As Long, rng As Range, kq(), DongCuoi As Long
Set rng = Sheet1.Range("B2:E" & [B65536].End(xlUp).Row)
For i = 1 To rng.Columns.Count
DongCuoi = Sheet1.Range("F65536").End(xlUp).Row
rng(1, i).Resize(rng.Rows.Count, 1).Copy
Sheet1.Range("F" & DongCuoi + 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next i
End Sub
Set rng = Sheet1.Range("B2:E" & [B65536].End(xlUp).Row)
Em thử dùng mảng xem sao!..........................................................................
(4) Bạn nào thử sức viết một macro khác không các bạn?
Chúc ngày mới tốt lành!
Public Sub Ghep()
Dim i As Integer, j As Integer, k As Integer
Dim data(), kq()
data = Sheet1.Range("B2:E" & Sheet1.Range("E65536").End(xlUp).Row)
ReDim kq(1 To UBound(data, 1) * UBound(data, 2))
For i = 1 To UBound(data, 2)
For j = 1 To UBound(data, 1)
k = k + 1
kq(k) = data(j, i)
Next j
Next i
[G2].Resize(UBound(data, 1) * UBound(data, 2), 1) = Application.Transpose(kq)
End Sub
Tôi có 4 cột số liệu (như trong hình)
Các bạn chép giúp tôi lần lượt từng cột số liệu sang cột [G:G]
vSub coopy()
Application.ScreenUpdating = False
Dim LastRow, i As Long
LastRow = [b10000].End(3).Row - 1
For i = 1 To 3
[g10000].End(3).Row.Offset(1).Resize(LastRow).Value = [a2].Offset(, i).Resize(LastRow).Value
Next
Application.ScreenUpdating = True
End Sub
Code này báo lỗi tại dòng:xin được nộp bài
(ko có số liệu nên chưa test.....hiihihihi)
Mã:vSub coopy() Application.ScreenUpdating = False Dim LastRow, i As Long LastRow = [b10000].End(3).Row - 1 For i = 1 To 3 [g10000].End(3).Row.Offset(1).Resize(LastRow).Value = [a2].Offset(, i).Resize(LastRow).Value Next Application.ScreenUpdating = True End Sub
[G10000].End(3).Row.Offset(1).Resize(LastRow).Value = [a2].Offset(, i).Resize(LastRow).Value
Em nghĩ ý ba có thể viết thế này(1) Bạn nào có thể dịch từ ngôn ngữ VBA của macro của bạn này sang tiếng Việt được không vậy?
(2) Bạn nào có thể khái quát chu trình của macro của bạn í không vậy các bạn?
(3) Câu lệnh
Có thể thay bằng câu lênh nào khác, nhưng vẫn đạt mục đích không, các bạn?Mã:Set rng = Sheet1.Range("B2:E" & [B65536].End(xlUp).Row)
(4) Bạn nào thử sức viết một macro khác không các bạn?
Chúc ngày mới tốt lành!
Sub Test()
Dim Lastrow As Long, rng As Range
Lastrow = Sheet1.Cells(Sheet1.Columns(2).Rows.Count, 2).End(xlUp).Row
ser rng = Sheet1.Range("B2:E" & Lastrow)
End Sub