Sắp xếp tên file trong Excel giống Explorer.

Liên hệ QC

cantl

!!! Giải thoát !!!
Tham gia
6/8/08
Bài viết
1,809
Được thích
1,156
Giới tính
Nam
Các bác ạ, em tổng hợp và so sánh tên file mà gặp tình huống cách sắp xếp Excel nó không khớp với Explorer. Các bác xem giúp món này có cải thiện được không ạ?

PS: File "YEU CAU" trống để làm mẫu (là yêu cầu của đối tác) chứ không phải yêu cầu của em cho GPE nhé.
 

File đính kèm

  • 1668917481813.png
    1668917481813.png
    18.8 KB · Đọc: 50
  • 1668917510911.png
    1668917510911.png
    8.9 KB · Đọc: 48
  • sap xep.rar
    17.3 KB · Đọc: 10
Các bác ạ, em tổng hợp và so sánh tên file mà gặp tình huống cách sắp xếp Excel nó không khớp với Explorer. Các bác xem giúp món này có cải thiện được không ạ?

PS: File "YEU CAU" trống để làm mẫu (là yêu cầu của đối tác) chứ không phải yêu cầu của em cho GPE nhé.
Trên Window Explorer của bạn đang là tên file có đuôi extension (.txt, .xlsx)
Trên Excel đang chỉ có tên file không có đuôi extension.
Bạn đồng nhất tên file giống nhau đi thì nó sẽ sắp xếp giống nhau.
 
Upvote 0
Vẫn là vấn đề sắp xếp tên file.
Em có copy được code, nhưng với file tiếng Việt thì nó sắp xếp không chuẩn.
Chuẩn ở đây là so sánh với sắp xếp Data/Sort của Excel (và Sort by Name của Windows Explorer). Nhờ các anh chị sửa giúp ạ.
 

File đính kèm

  • 1669317928898.png
    1669317928898.png
    171.5 KB · Đọc: 15
  • sap xep R2.rar
    45.4 KB · Đọc: 3
Upvote 0

Đây là 1 file quản lý tập tin bằng Excel rất tuyệt vời của tác giả HeSanbi, chắc nó sẽ giúp ích được cho bạn.
 
Upvote 0
Cảm ơn bạn, sau khi chạy xong thì nó vẫn bị chỗ phần sắp xếp như thế này. Vẫn chưa đúng mong muốn của mình lắm.
 

File đính kèm

  • 1669355270163.png
    1669355270163.png
    301.1 KB · Đọc: 9
Upvote 0
Upvote 0
Cảm ơn bạn, sau khi chạy xong thì nó vẫn bị chỗ phần sắp xếp như thế này. Vẫn chưa đúng mong muốn của mình lắm.
Nếu sắp xếp theo tên mà có nhiều sai lệch thì bạn thử đổi sắp xếp theo ngày Date modified xem có đúng thứ tự mà bạn muốn không.
 
Upvote 0
Mà cái này giống hay không giống thứ tự mục đích cuối cùng là để làm gì bạn?
Mình hơi nông dân về mặt so sánh file thiếu hay đủ.

Cột bên phải để cập nhật cứ có file Báo giá nào thêm thì nhập tay vào (cứ thêm là nhập vào): Nội dung liên quan thì sẽ ghi ở các cột sau. Báo giá thì (lúc bổ sung, lúc thay, lúc hết hạn) nhưng vẫn để vì sau so sánh với dự án khác.
Cột bên trái là cho chạy để đề phòng xem có bỏ sót cái nào không.
Sau còn phải tổng hợp từng vật tư nằm ở Báo giá nào, file nào để gửi bên A kiểm tra. (cái này thì làm bằng tay rồi).

Kết quả cũng tương đối rồi, mình gặp tình huống cách sắp xếp VBA khác Explorer nên không hiểu và xin cách xử lý ấy.
Nếu được thì tốt quá, còn nếu không thì phải chấp nhận 1 số chỗ sẽ có sai lệch như vậy (mặc dù :wallbash: :wallbash: :wallbash: ).
 
Upvote 0
Nếu sắp xếp theo tên mà có nhiều sai lệch thì bạn thử đổi sắp xếp theo ngày Date modified xem có đúng thứ tự mà bạn muốn không.
Cảm ơn bạn, vì mình dùng Sort trong Menu Data nên muốn xếp theo tên thôi.
Có thể VBA không hỗ trợ tiếng Việt nên khác như vậy.
Đại loại ý mình là đã có array1(tên tất cả file có dấu), giờ tạo array2(ten tat ca file) và sort array2(), rồi lấy thứ tự array2() mà đảo các vị trí của array1().
Con đường có vẻ nhiều chông gai. :wallbash: :wallbash: :wallbash:
 
Upvote 0
Mình hơi nông dân về mặt so sánh file thiếu hay đủ.

Cột bên phải để cập nhật cứ có file Báo giá nào thêm thì nhập tay vào (cứ thêm là nhập vào): Nội dung liên quan thì sẽ ghi ở các cột sau. Báo giá thì (lúc bổ sung, lúc thay, lúc hết hạn) nhưng vẫn để vì sau so sánh với dự án khác.
Cột bên trái là cho chạy để đề phòng xem có bỏ sót cái nào không.
Sau còn phải tổng hợp từng vật tư nằm ở Báo giá nào, file nào để gửi bên A kiểm tra. (cái này thì làm bằng tay rồi).

Kết quả cũng tương đối rồi, mình gặp tình huống cách sắp xếp VBA khác Explorer nên không hiểu và xin cách xử lý ấy.
Nếu được thì tốt quá, còn nếu không thì phải chấp nhận 1 số chỗ sẽ có sai lệch như vậy (mặc dù :wallbash: :wallbash: :wallbash: ).
Mình thấy cốt lõi là bạn muốn xem file báo giá nào có mà trong folder lại không có hoặc ngược lại. Vậy thì conditional formatting tô màu file nào không có là đủ dùng rồi chứ cần gì phức tạp?
 
Upvote 0
Mình thấy cốt lõi là bạn muốn xem file báo giá nào có mà trong folder lại không có hoặc ngược lại. Vậy thì conditional formatting tô màu file nào không có là đủ dùng rồi chứ cần gì phức tạp?
Cảm ơn bạn, mình đã kết hợp thêm conditional formatting luôn ấy chứ.
Cơ bản là nhìn không vừa ý nên cứ tức anh ách thôi, mò mãi không được nên xin trợ giúp. :wallbash: :wallbash: :wallbash:
Thôi quay lại sửa thủ công mấy chỗ cục bộ vậy.
 
Upvote 0
Từ khóa dịch sang tiếng Việt: Cái đó gọi là thứ tự sắp xếp tự nhiên.

Vài dòng Python rồi chuyển thành thư viện VBA là ngon lành.

1669365349843.png
 
Upvote 0

File đính kèm

  • 1669365910548.png
    1669365910548.png
    202 KB · Đọc: 7
Lần chỉnh sửa cuối:
Upvote 0
Mình hơi nông dân về mặt so sánh file thiếu hay đủ.

Cột bên phải để cập nhật cứ có file Báo giá nào thêm thì nhập tay vào (cứ thêm là nhập vào): Nội dung liên quan thì sẽ ghi ở các cột sau. Báo giá thì (lúc bổ sung, lúc thay, lúc hết hạn) nhưng vẫn để vì sau so sánh với dự án khác.
Cột bên trái là cho chạy để đề phòng xem có bỏ sót cái nào không.
Sau còn phải tổng hợp từng vật tư nằm ở Báo giá nào, file nào để gửi bên A kiểm tra. (cái này thì làm bằng tay rồi).

Kết quả cũng tương đối rồi, mình gặp tình huống cách sắp xếp VBA khác Explorer nên không hiểu và xin cách xử lý ấy.
Nếu được thì tốt quá, còn nếu không thì phải chấp nhận 1 số chỗ sẽ có sai lệch như vậy (mặc dù :wallbash: :wallbash: :wallbash: ).
Sao phải khổ vậy. Đã dùng VBA rồi còn phụ thuộc vào sort làm gì!
--
Mang1 là mảng từ dữ liệu nhập tay, có sẵn trên Excel.
Mang2 là mảng danh sách file thực tế lấy bằng cách duyệt file trong thư mục.
Mang3 là kết quả, dùng để ghi xuống sheet.
Mang3 được tạo bằng cách so sánh từng phần tử của Mang2 với các phần tử của Mang1, nếu có thì ghi vào Mang3 ở vị trí tương ứng với Mang1, không có thì ghi vào cuối Mang3. Code so sánh đơn giản đại loại như sau:
Mã:
k = Ubound(Mang1, 1)
For i = 1 to Ubound(Mang2, 1)
  For j = 1 to Ubound(Mang1, 1)
    If Mang2(i) = Mang1(j, 1) Then
      Mang3(j, 1) = Mang2(i)
      Go to Next_i
    End If
  Next
  k = k + 1
  Mang3(k, 1) = Mang2(i)
Next_i:
Next
Tôi trả lời trên điện thoại nên chỉ viết đoạn chính, code có thể có lỗi chính tả.
 
Upvote 0
Sao phải khổ vậy. Đã dùng VBA rồi còn phụ thuộc vào sort làm gì!
--
Mang1 là mảng từ dữ liệu nhập tay, có sẵn trên Excel.
Mang2 là mảng danh sách file thực tế lấy bằng cách duyệt file trong thư mục.
Mang3 là kết quả, dùng để ghi xuống sheet.
Mang3 được tạo bằng cách so sánh từng phần tử của Mang2 với các phần tử của Mang1, nếu có thì ghi vào Mang3 ở vị trí tương ứng với Mang1, không có thì ghi vào cuối Mang3. Code so sánh đơn giản đại loại như sau:
Mã:
k = Ubound(Mang1, 1)
For i = 1 to Ubound(Mang2, 1)
  For j = 1 to Ubound(Mang1, 1)
    If Mang2(i) = Mang1(j, 1) Then
      Mang3(j, 1) = Mang2(i)
      Go to Next_i
    End If
  Next
  k = k + 1
  Mang3(k, 1) = Mang2(i)
Next_i:
Next
Tôi trả lời trên điện thoại nên chỉ viết đoạn chính, code có thể có lỗi chính tả.
Vâng. Cách tiếp cận của bác khác hẳn cách nghĩ của em, em thì cứ nghĩ lấy hết tên file rồi sắp xếp A->Z nên mới bị vậy. Đúng là so sánh thế này thì sẽ theo thứ tự luôn. Nhưng kết quả gần có nên em chờ tí nữa. :) :) :)
 
Upvote 0
Web KT

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

Back
Top Bottom