Sắp xếp VBA - Mẹo Excel

Mục lục

Excel VBA Macro để sắp xếp dữ liệu. Tôi không thích cách trình ghi macro tạo thêm mã để sắp xếp. Sắp xếp trong Excel VBA phải đơn giản. Một dòng mã, với cột để sắp xếp, theo cách nào (tăng dần hoặc giảm dần) và có một tiêu đề.

Xem video

  • Trình ghi macro Excel không thực hiện tốt công việc sắp xếp bản ghi.
  • Với điều kiện dữ liệu của bạn có thể được chọn bằng Ctrl + * (được gọi là Khu vực hiện tại)
  • Miễn là bạn không sắp xếp theo màu sắc hoặc biểu tượng hoặc nhiều hơn ba cấp độ
  • Sử dụng phương thức Range School cũ (). CurrentRegion.Sort trong Excel

Bản ghi video

Học Excel từ MrExcel Podcast, Episode 2093: Sắp xếp bằng VBA

Chào mừng bạn trở lại netcast, tôi là Bill Jelen. Câu hỏi hôm nay của James ở Huntsville. James, tôi đã sử dụng trình ghi macro để ghi lại hành động sắp xếp dữ liệu. Vì vậy, giả sử rằng James cần sắp xếp dữ liệu này theo Khu vực và Khách hàng. Vì vậy, bạn đi ra đây đến tab View, Macros, Record New Macro, SortMyReports, Phím tắt Ctrl - Tôi sẽ nhập Shift + S ở đó và nhấp vào OK. Được rồi, vậy thì từ đây chúng ta thực hiện: Dữ liệu, Sắp xếp, và chúng ta muốn nói rằng chúng ta muốn Sắp xếp theo Lĩnh vực, sau đó Thêm Cấp độ và Sắp xếp theo Khách hàng và nhấp vào OK. Ở góc dưới bên trái, chúng tôi nhấp vào Dừng ghi. Được rồi, vậy là xong. Có vẻ như đã làm việc, phải không?

Nhưng đây là vấn đề: ngày mai bạn sẽ có nhiều dữ liệu hơn hoặc ít dữ liệu hơn hoặc, bạn biết đấy, bất cứ điều gì. Và Macro được ghi lại thật kinh khủng. Hãy xem qua, tôi sẽ thực hiện Alt + F8 và xem qua SortMyReport, sẽ Chỉnh sửa điều đó. Được rồi, và đây là mọi thứ mà họ đã ghi lại nên SortFields.Clear, và sau đó họ thiết lập một loại mới với SortFields.Add và chúng được mã hóa cứng, và có 568 hàng và tất cả nội dung.

Bây giờ sắp xếp lại trong ngày, tôi thực sự, thực sự dễ dàng. Được rồi, và sau đó trong Excel 2007, họ đã thêm Sắp xếp theo Biểu tượng, Sắp xếp theo Màu sắc, Sắp xếp theo Màu phông chữ, khả năng có 15 Sắp xếp Cấp độ và mọi thứ thực sự rất điên rồ. Vì vậy, tôi không sử dụng Macro đã ghi nữa. Tôi chỉ đi học cũ.

Bây giờ, tôi sẽ chuyển trở lại Excel. Dưới đây là các quy tắc để sắp xếp theo kiểu cũ này hoạt động. Tiêu đề phía trên mỗi Cột: tiêu đề đó phải nằm trên một hàng, không phải hai hàng. Nếu bạn có danh hiệu ở đó và bạn có danh hiệu ở đó cũng tốt. Bạn cần một hàng trống hoàn toàn giữa tiêu đề của bạn và tiêu đề đầu tiên. Nếu bạn có ghi chú ở phía bên tay phải: vợ bạn gọi với danh sách hàng tạp hóa, “Này em yêu, dừng lại trên đường về nhà. Lấy sữa, trứng và rượu vodka. ” Phải có một cột hoàn toàn trống giữa dữ liệu của bạn và cột đó. Và nếu có ghi chú viết sẵn ở dưới cùng, hãy đảm bảo rằng có một hàng hoàn toàn trống giữa bit dữ liệu cuối cùng và những ghi chú đó.

Toàn bộ mục tiêu của tôi là chúng ta có thể đến bất kỳ ô nào: góc trên cùng bên trái ô chứa dữ liệu này và nhấn Ctrl + * và nó sẽ chọn dữ liệu được sắp xếp. Bây giờ, tôi sẽ nhấn Ctrl +. sẽ đưa chúng ta đến góc này và sau đó nhấn Ctrl +. sẽ đưa chúng ta đến góc dưới cùng bên phải, Ctrl +. đưa chúng ta đến góc dưới cùng bên trái. Được rồi, vì vậy nếu Ctrl + * sẽ chọn chính xác dữ liệu của bạn thì mọi thứ thật tuyệt. Nếu bạn đặt danh sách hàng tạp hóa của mình vào Cột H và chúng tôi thấy chúng tôi xuất hiện ở đây và Ctrl + *, thì bây giờ, chúng tôi đang sắp xếp danh sách hàng tạp hóa như một phần của nội dung và danh sách hàng tạp hóa của bạn sẽ bị xáo trộn. Hoặc chúng ta sẽ hoàn tác: nếu hàng này không có ở đây, bây giờ chúng ta thực hiện Ctrl + *, hãy xem chúng ta- bây giờ chúng sẽ không biết gì vì chúng không còn bất kỳ tiêu đề nào nữa, được chứ?

Vì vậy, nếu bạn định sử dụng mã của tôi, hãy đảm bảo rằng tất cả các quy tắc này đều đúng: không sắp xếp màu của tôi, không sắp xếp biểu tượng của tôi, 3 cấp độ sắp xếp trở xuống. Hoàn tác, được rồi. Vì vậy, đây là những gì chúng tôi biết: chúng tôi biết rằng mỗi ngày dữ liệu của chúng tôi sẽ bắt đầu bằng A5. Nếu chúng ta không biết chúng ta có thể có bao nhiêu hàng hoặc bao nhiêu thậm chí bao nhiêu cột. Tôi không thể tưởng tượng một tình huống mà các cột được hoán đổi cho nhau nhưng chắc chắn số lượng hàng sẽ thay đổi. Vì vậy, Alt + F11, chúng ta sẽ bắt đầu từ ô góc trên bên trái đó. Vì vậy, Range, trong trường hợp của tôi là “A5” .CurrentRegion. Khu vực hiện tại là tài sản xây dựng tuyệt vời này cho biết chúng tôi sẽ nhấn Ctrl + Shift + * và mọi thứ bao gồm ở đó là những gì sẽ được sắp xếp. Và chúng tôi làm. Sắp xếp, được rồi.

Bây giờ, đây là điều. Nếu bạn muốn thực hiện sắp xếp một cấp rất dễ dàng: Key1: =. : = và chúng tôi chỉ nói rằng nó sẽ là Range - Ồ, tôi quên nó là gì. Đó là Sector, Sector ở đâu? Sector nằm trong Cột C. Vì vậy, C5 trong trường hợp của tôi, Range (“C5”) và sau đó, Order1: = xlAscending. Tôi đã nhấn phím Mũi tên xuống ở đó, rồi nhấn Tab. Được rồi, tôi có thể tiếp tục đi ra bên phải nhưng tôi sẽ không làm như vậy. Tôi sẽ chuyển đến một dòng mới nên dấu cách, gạch dưới để chuyển sang dòng mới, tiếp tục dòng mã này, được chứ? Và nếu tôi có sắp xếp cấp hai: Key2: = và trong trường hợp này tôi muốn sắp xếp theo khách hàng nằm trong Cột D, vì vậy D5. Và sau đó, Order2: xlAscending. Xinh đẹp.

Tôi không có phân loại cấp độ thứ ba nhưng nếu bạn đã làm, nó sẽ là Key3 và sau đó là Order3. Và rồi cái tiếp theo này, cái bạn phải làm là Header, được chứ? Vì vậy, Header: = xlGuess đó là nơi bạn đang gặp rất nhiều rắc rối. Và vì vậy chúng tôi sẽ nói xl Có ở đó, chắc chắn với tư cách là Tiêu đề. Ngay cả trong những ngày xưa, Macro Recorder cũng sử dụng xlGuess. Tôi ghét Excel phải đoán.

Đó là nó. Một dòng mã, đó là tất cả những gì bạn phải làm và nó sẽ hoạt động với nhiều hàng hơn, ít hàng hơn. Đó là một điều tuyệt đẹp. Được rồi, chúng ta sẽ quay lại đây với Excel. Ctrl + Shift + S vẫn là thứ được gán. Nó ngay bây giờ- Nếu bạn vừa chuyển sang VBA và bạn tự nhập nó, bạn có thể đi tới Alt + F8, tìm tên Macro của bạn, nhấp vào Tùy chọn và gõ Ctrl + Shift + S vào đó hoặc chúng tôi thậm chí có thể gán nó cho một Phím tắt ở đây trên Thanh công cụ Truy nhập Nhanh. Nhấp chuột phải, Tùy chỉnh Thanh công cụ Truy cập Nhanh nơi tôi chọn từ các Macro của chúng tôi. Tôi có một Macro tên là SortMyReport, sẽ nhấp vào Thêm - Tôi ghét lưu đồ nhỏ ở đó. Chúng tôi sẽ sửa đổi điều đó và tôi rất muốn có một số loại tình huống từ A đến Z ở đó nhưng tất nhiên là không. Có lẽ mũi tên đó ai biết, ai biết thì cứ chọn tùy ý.Quả bóng 8 ma thuật, tôi không biết. Tôi sẽ chọn anh chàng nhỏ bé này ở đây, bấm OK, bấm OK. Được rồi, bây giờ dữ liệu của chúng tôi được Sắp xếp theo Ngày, tôi chọn - và tôi chọn gì không quan trọng. Nó luôn quay trở lại và sắp xếp nó từ A5, tôi nhấp vào anh chàng nhỏ bé và dữ liệu của tôi bây giờ được Sắp xếp theo ngành, trong lĩnh vực, theo Khách hàng. Nó hoạt động tốt, được chứ?

Vì vậy, nếu bạn là một fan hâm mộ của Máy ghi âm Macro, tôi xin gửi lời chúc tốt đẹp nhất đến bạn. Nhưng mã Macro Recorder ngày nay để sắp xếp trong VBA đơn giản hơn nhiều; để quay lại, chỉ cần sử dụng cơ bản này, một dòng mã.

Chà, đây thường là nơi tôi cố gắng và kêu gọi bạn mua cuốn sách này, nhưng hôm nay tôi nghĩ bạn nên xem qua cuốn sách này: Excel 2016 VBA và Macros của Tracy và chính tôi. Chà! Kiểm tra điều này. Tôi không nhận ra có một phiên bản bằng ngôn ngữ khác. Chúng tôi sẽ giúp bạn hoàn thiện Đường cong học tập Macro từ việc ghi lại Macro đầu tiên của bạn vào mã bạn cần.

Vâng, tóm tắt đơn giản cho ngày hôm nay: Excel Macro Recorder không thực hiện tốt công việc ghi và sắp xếp: miễn là dữ liệu của bạn có thể được chọn bằng Ctrl + * được gọi là vùng hiện tại, miễn là bạn không sắp xếp như màu hoặc biểu tượng hoặc nhiều hơn ba cấp, chỉ cần sử dụng phương thức old-school Range (). CurrentRegion.Sort trong VBA để sắp xếp.

Tôi muốn cảm ơn James vì ​​đã gửi câu hỏi đó. Tôi muốn cảm ơn bạn đã ghé qua. Chúng tôi sẽ gặp bạn lần sau cho một netcast khác từ.

Tải tập tin

Tải file mẫu tại đây: Podcast2093.xlsm

thú vị bài viết...