của bạn đây
Private Sub Worksheet_Change[ByVal Target As Range] If Intersect[Columns["C"], Target] Is Nothing Then Exit Sub Rows[Target.Row].Copy Sheets["Sheet2"].Range["C" & Rows.Count].End[xlUp].Offset[1, -2] End Sub
Để triển khai mã.
- Nhấn Alt+F11 để mở cửa sổ VBA
- Tìm Sheet1 ở bên trái và nhấp đúp vào nó
-
- The VBA window can now be closed
Trân trọng,
Trowa
Ssimensg
Thành viên mới
3 Tháng chín 2013
- #1
Xin chào.
Tôi có một bảng tính với các giá trị từ A1. K1901. Hãy gọi nó là Trang tính 1
Các giá trị quan trọng nằm trong cột K. Tôi muốn sao chép tất cả các hàng vào Worksheet2 nếu tiêu chí văn bản được đáp ứng trong cột K.
Tôi không rành về macro, vì vậy tôi sẽ đánh giá cao một công thức
AnhJB7
Excel Ronin3 Tháng chín 2013
- #2
Xin chào, Simensg. Mã.
Từ Excel, nhấn Alt-F11 để chuyển đến trình soạn thảo VBA, Chèn, Mô-đun và đặt mã này vào đó. Option Explicit
Sub CopyWithAutoFilter[]
' constants
Const ksWSSource = "Hoja1"
Const ksDataSource = "A1:A1901"
Const ksConditionSource = "K1:K1901"
Const ksConditionCriteria = "L1"
Const ksWSTarget = "Hoja2"
Const ksDataTarget = "A1"
' declarations
' start
' process
With Worksheets[ksWSSource]
.Range[ksConditionSource].AutoFilter 1, "=" & .Range[ksConditionCriteria].Value
.Range[ksDataSource].Copy Worksheets[ksWSTarget].Range[ksDataTarget]
End With
' end
End Sub
Regards!
AnhJB7
Excel Ronin3 Tháng chín 2013
- #3
Xin chào, Simensg.
Cách tiếp cận công thức sử dụng cột trợ giúp trong trang tính nguồn có thể là.
L1. tiêu chí để lọc [giống như phương pháp trước với VBA]
M1. =CONTAR. SI[K$1. K1;L$1] -----> bằng tiếng Anh. =COUNTIF[K$1. K1,L$1]
Sao chép M1 theo yêu cầu [đến M1901].
Trong trang tính mục tiêu.
A1. =INDICE[Hoja1. 1 đô la Úc. A$1901;COINCIDIR[FILA[];Hoja1. 1 đô la Mỹ. M$1901;0]] -----> bằng tiếng Anh. =INDEX[Hoja1. 1 đô la Úc. A$1901,MATCH[ROW[],Hoja1. 1 đô la Mỹ. M$1901,0]]
Sao chép A1.
Trân trọng.
Ssimensg
Thành viên mới
3 Tháng chín 2013
- #5
Tôi xin lỗi.
Tôi nghĩ rằng tôi đã trình bày hơi không rõ ràng và tôi cần đi sâu hơn vào chi tiết. Dữ liệu là bản ghi từ giải bóng đá Tây Ban Nha trong 5 năm qua.
Cột A. Tên giải đấu [SP1]
Cột B. Ngày
Cột C. Đội nhà
Cột D. Đội khách
Cột E. Bàn thắng của đội chủ nhà
Cột F. Bàn thắng theo đội khách
Cột G. Tổng số bàn thắng
Cột H. Tỷ lệ đội chủ nhà thắng
Cột I. Tỷ lệ hòa
Cột J. Tỷ lệ đội khách thắng
Cột K. Tỷ lệ đội nhà thắng / Tỷ lệ đội khách thắng
Tôi muốn sao chép tất cả các hàng [hoặc ít nhất là cột K] khi e. g Barcelona được chơi trên sân nhà.
Trong đầu tôi nó sẽ như thế này [nếu excel có bản sao công thức]
Sheet2 Ô A1. copyif=[A1. K1901;"*Barca*"]
Trân trọng.
Người đàn ông nhỏ
Ninja Excel3 Tháng chín 2013
- #6
Xin chào Simensg Mã.
Bạn chỉ cần thay đổi một chút mã mà bạn đã nhận được. Có thể muốn xóa nội dung của sheet2 trước. Nếu điều này không hoạt động, hãy mở một phiên bản XL mới, hãy đặt dữ liệu của bạn vào Trang tính 1. Sub MoveData[]
Sheet2.[A1:K1901].ClearContents
Sheet1.[K1:K1901].AutoFilter 1, "*Barca*"
Sheet1.[A1:K1901].Copy Sheet2.[A1]
Sheet1.[A1].AutoFilter
End Sub
Take care
Smallman
AnhJB7
Excel Ronin3 Tháng chín 2013
- #7
Xin chào, Simseng.
Cả VBA và giải pháp công thức của tôi cũng như VB điện tín/điện tín của Smallman đều hoạt động.
SirJB7 VBA.
- thay đổi hằng số ksDataSource thành "A1. K1901"
- đặt vào L1 giá trị để lọc tương ứng với giá trị cột C [đội chủ nhà]
Công thức SirJB7.
- thay đổi công thức A1 thành.
A1. =INDICE[Hoja1. 1 đô la Úc. A$1901;COINCIDIR[FILA[];Hoja1. $M$1. $M$1901;0]] -----> bằng tiếng Anh. =INDEX[Hoja1. 1 đô la Úc. A$1901,MATCH[ROW[],Hoja1. $M$1. $M$1901,0]]
- sao chép qua K1
- sao chép xuống qua hàng 1901
Smallman wire VBA.
- thay đổi "K" cho giá trị của cột C [đội chủ nhà]
- thay đổi [K1. K1901] đến [A1. K1901] trong tuyên bố sao chép
Nếu có bất kỳ sự cố nào, hãy cân nhắc tải tệp mẫu lên [bao gồm các ví dụ thủ công về đầu ra mong muốn nếu có], tệp này sẽ rất hữu ích cho những người đọc tệp này và có thể . Cảm ơn bạn. Hãy xem các bài đăng dính được đánh dấu màu đỏ tại trang chính của diễn đàn này để biết hướng dẫn tải lên.
Trân trọng.
ĐÃ CHỈNH SỬA
PS. Có vẻ như cả hai chúng tôi đã viết cùng một lúc.
Ocá sấu
Thành viên mới
1 Tháng mười hai 2015
- #11
Tôi đang cố gắng sử dụng phương pháp Sir JB7 bên dưới. Dữ liệu của tôi bắt đầu ở hàng 2 trên trang nguồn [tiêu đề dữ liệu ở hàng một]. Tôi đang cố sao chép dữ liệu bắt đầu từ hàng 2 trên trang tính mới [bên dưới các tiêu đề dữ liệu tương tự]. Vì một số lý do, công thức của tôi đang lấy dữ liệu từ hàng 3 trên nguồn. Tôi đã thử thực hiện các thay đổi nhỏ nhưng tôi không thể bắt đầu kéo từ hàng 2. Bất kỳ đề xuất? . tôi sắp phát điên.
Giải Oscar
L1. tiêu chí để lọc [giống như phương pháp trước với VBA]
M1. =CONTAR. SI[K$1. K1;L$1] -----> bằng tiếng Anh. =COUNTIF[K$1. K1,L$1]
Sao chép M1 theo yêu cầu [đến M1901].
- thay đổi công thức A1 thành.
A1. =INDICE[Hoja1. 1 đô la Úc. A$1901;COINCIDIR[FILA[];Hoja1. $M$1. $M$1901;0]] -----> bằng tiếng Anh. =INDEX[Hoja1. 1 đô la Úc. A$1901,MATCH[ROW[],Hoja1. $M$1. $M$1901,0]]
- sao chép qua K1
- sao chép xuống qua hàng 1901
Kđầu gối
Thành viên mới
31 Tháng Bảy, 2017
- #13
@Smallman
Đây là một trợ giúp rất lớn, yêu thích mã VBA. Nó có thể được sửa đổi để nó tìm kiếm các tiêu chí trong 3 cột khác nhau không?
Tôi có một bảng dữ liệu và tôi muốn sao chép nó giống như tập lệnh trên nếu ví dụ về tiêu chí. "MH" nằm trong cột D, E hoặc F.
Hiện tại tôi có thể đưa nó vào bộ lọc cho cột D, nhưng không có ở E hoặc F, vì sau khi bộ lọc đầu tiên được áp dụng, thì bộ lọc E và F không có "MH" kể từ đó .
Cảm ơn trước.
Tôi hy vọng lời giải thích của tôi có ý nghĩa.
Cảm ơn
NNARAYANK991
Ninja Excel
31 Tháng Bảy, 2017
- #14
Xin chào,
Thật khó để thực hiện bộ lọc trên nhiều cột; .
Nếu bất kỳ cột nào chứa văn bản MH , thì văn bản được nối cũng sẽ chứa văn bản đó và bộ lọc trên cột trợ giúp sẽ xem xét hàng đó để đưa vào.
Naraya
JJessica2292
Thành viên mới
13 Tháng mười 2017
- #16
Xin chào.
Tôi đang bắt đầu sử dụng VBA và tôi đang cố gắng sử dụng mã do @Smallman cung cấp nhưng tôi vẫn gặp phải lỗi Biên dịch "Dự kiến. kết thúc câu lệnh" sau AutoFilter 1 trong 'Sheet1. [K1. K1901]. Bộ lọc tự động 1, "*Barca*"'
Tôi đang làm gì sai vậy??