Tách chữ bị dính trong excel (1 người xem)

  • Thread starter Thread starter quang118
  • Ngày gửi Ngày gửi
Liên hệ QC

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

quang118

Thành viên mới
Tham gia
15/3/21
Bài viết
25
Được thích
3
Nhờ mọi người giúp mình với, mình có 1 file excel khoảng 1700 dòng nhưng chữ có chỗ bị dính có chỗ không, mình đã tham khảo nhiều cách trên mạng nhưng không thành công. Nhờ mọi người giúp mình hàm/ công thức để tách phần chữ bị dính đó với. Mình gửi file mẫu ạ
Xin cảm ơn
 

File đính kèm

Tìm ký tự viết hoa thì chèn một khoảng trắng vào phía trước ký tự đó, cuối cùng xóa bớt khoảng trắng thừa là được.
 
Nhờ mọi người giúp mình với, mình có 1 file excel khoảng 1700 dòng nhưng chữ có chỗ bị dính có chỗ không, mình đã tham khảo nhiều cách trên mạng nhưng không thành công. Nhờ mọi người giúp mình hàm/ công thức để tách phần chữ bị dính đó với. Mình gửi file mẫu ạ
Xin cảm ơn
Copy A2 (NgôMạnh Khôi) sang B2, tách nó ra thế này Ngô Mạnh Khôi, chọn B2 và sử dụng Flash Fill (Data > Flash Fill) là được kết quả theo yêu cầu.
 
Bạn cho giúp mình 1 công thức với, mình chưa hình dung ra
Bài đã được tự động gộp:

được rồi, mình cảm ơn nhiều
 
Copy A2 (NgôMạnh Khôi) sang B2, tách nó ra thế này Ngô Mạnh Khôi, chọn B2 và sử dụng Flash Fill (Data > Flash Fill) là được kết quả theo yêu cầu.
Rất nhanh và tiện ích, tuy nhiên cũng còn một vài trường hợp cần phải kiểm tra lại nha anh.

1630489570392.png
 
Rất nhanh và tiện ích, tuy nhiên cũng còn một vài trường hợp cần phải kiểm tra lại nha anh.
1/ Thì công cụ có sẳn làm được vậy là quá nhanh rồi. Anh cũng không để ý cái vụ đó, nhưng cũng đưa ra để chú Topic và bạn nào có vào xem thì lưu ý mà biết để sửa tay.
2/ Tuy nhiên, nhước điểm đó thì cần báo cáo cho Microsoft để công ty học khắc phục lỗi thôi.
 
1/ Thì công cụ có sẳn làm được vậy là quá nhanh rồi. Anh cũng không để ý cái vụ đó, nhưng cũng đưa ra để chú Topic và bạn nào có vào xem thì lưu ý mà biết để sửa tay.
2/ Tuy nhiên, nhước điểm đó thì cần báo cáo cho Microsoft để công ty học khắc phục lỗi thôi.
Cũng khó cho anh Bill, đem so sánh độ dài của chuỗi gốc và chuỗi mình gõ tay nó thế này bảo sao nó không lỗi (cái này không có khoảng trắng nào nha):

1630490972878.png
 
Chỉ cần so sánh ký tự ban đầu với Ucase(ký tự đó), nếu đúng -> ký tự viết hoa.

View attachment 265249
Hàm LEN trong VBA có nên chỉ việc ghi Len() sao lại thêm VBA.Len() chi ta? Tương tự hàm MID, hàm UCASE? Cho người ta biết là hàm của VBA thay vì WorksheetFunction hả ta? ẹc ... ẹc ...
Anh chưa thử hàm của em, nhưng trước đó anh làm cũng tương tự như vậy, nhưng nó bị lỗi dấu ở 2 mục (Bùi Đắc An Phước và Phan Minh Sáng), em xem nó có bị lỗi về dấu ở hàm của em không?

1630552054926.png
 
Hàm LEN trong VBA có nên chỉ việc ghi Len() sao lại thêm VBA.Len() chi ta? Tương tự hàm MID, hàm UCASE
Một số trường hợp (với file.xls, hoặc Excel2007) sẽ gặp lỗi nếu không ghi cái chữ VBA ở đầu. Em gặp vài lần rồi. Đây cũng là mẹo nên nhớ để xử lý nếu gặp lỗi báo với các functions trong VBA.

em xem nó có bị lỗi về dấu ở hàm của em không?
Cái đó là bảng mã unicode tổ hợp và unicode dựng sẵn.
Cái hình em chụp ở trên, chữ "Đ" được gõ bởi bảng mã Unicode tổ hợp.
 
Một số trường hợp (với file.xls, hoặc Excel2007) sẽ gặp lỗi nếu không ghi cái chữ VBA ở đầu. Em gặp vài lần rồi. Đây cũng là mẹo nên nhớ để xử lý nếu gặp lỗi báo với các functions trong VBA.


Cái đó là bảng mã unicode tổ hợp và unicode dựng sẵn.
Cái hình em chụp ở trên, chữ "Đ" được gõ bởi bảng mã Unicode tổ hợp.
Từ lúc biết về VBA đến nay đã xài 97-2003, 2007, 2010 và hiện nay 365 (xài lâu dài nhất là 2010), nhưng chưa bao giờ bị lỗi về hàm của VBA. Nó chỉ bị lỗi khi và chỉ khi có một Control hay Object nào đó mà nó không tương thích hoặc bị Missing trong file thay vì lỗi vào control hay đối tượng đó, nó lại báo lỗi ngay cái hàm mà hằng ngày mình dùng chả bị lỗi. Cứ bỏ check Missing là không còn bị lỗi này nữa.
 
Lần chỉnh sửa cuối:
Từ lúc biết về VBA đến nay đã xài 97-2003, 2007, 2010 và hiện nay 365 (xà lâu dài nhất là 2010), nhưng chưa bao giờ bị lỗi về hàm của VBA. Nó chỉ bị lỗi khi và chỉ khi có một Control hay Object nào đó mà nó không tương thích hoặc bị Missing trong file thay vì lỗi vào control hay đối tượng đó, nó lại báo lỗi ngay cái hàm mà hằng ngày mình dùng chả bị lỗi. Cứ bỏ check Missing là không còn bị lỗi này nữa.
Anh chưa bị lỗi vì chưa gặp thôi mà. :)

Lỗi đây anh nhé.


Từ vụ này

em nhớ và đã xử lý cho vài trường hợp khác.
 
Anh chưa bị lỗi vì chưa gặp thôi mà. :)

Lỗi đây anh nhé.


Từ vụ này

em nhớ và đã xử lý cho vài trường hợp khác.
Cũng trên cái bài trong đường dẫn đó, người trả lời nói xử lý trên Missing của nó là hoàn toàn khớp với những gì anh đã nói ở bài trên, tức là anh đã từng gặp lỗi này và xử lý nó như thế.

1630556349576.png

Nhược điểm của việc sử dụng tiền tố của VBA hoặc Strings là che giấu một sự cố dường như xảy ra với các hàm Strings nhưng có thể gây ra sự cố thực sự của nó sau này khi nó nằm ngoài tầm tay của mình.

1630556517327.png

Vì thế mình cũng đừng nên thêm VBA. mà làm gì, nếu có lỗi cứ xử lý lỗi MISSING là được rồi.
 
Lần chỉnh sửa cuối:
Cũng khó cho anh Bill, đem so sánh độ dài của chuỗi gốc và chuỗi mình gõ tay nó thế này bảo sao nó không lỗi (cái này không có khoảng trắng nào nha):

View attachment 265227
He he.
Người ta gõ unicode tổ hợp (trong Unikey chọn bảng mã Unicode tổ hợp), còn bạn gõ unicode dựng sẵn (bảng mã Unicode)

vd. "ù" của bạn là 1 "linh kiện": "ù" (mã = 249), "ù" của người ta là 2 "linh kiện": linh kiện "u" (mã = 117) và linh kiện "`" (dấu huyền, mã = 768) được ghép với nhau trong quá trình hiển thị để thành "ù"
 
Hàm LEN trong VBA có nên chỉ việc ghi Len() sao lại thêm VBA.Len() chi ta? Tương tự hàm MID, hàm UCASE? Cho người ta biết là hàm của VBA thay vì WorksheetFunction hả ta? ẹc ... ẹc ...
Một số trường hợp (với file.xls, hoặc Excel2007) sẽ gặp lỗi nếu không ghi cái chữ VBA ở đầu. Em gặp vài lần rồi. Đây cũng là mẹo nên nhớ để xử lý nếu gặp lỗi báo với các functions trong VBA.
Bình thường thì mặc định không gian danh phận (namespace) của các hàm trong một code module là VBA.
Vì vậy, gọi hàm nằm trong đống hàm thư viện của VBA thì nó tự động nhận ra.

Người ta vẫn cố tình đưa tiền tố 'VBA' lên khi gọi hàm VBA là vì hai lý do (tôi đã có bài giải thích cái này một vài lần rồi):

1. Để tránh các Option trên đầu module làm thay đổi mặc định của hàm.
Điển hình nhất là hàm Array. Hàm này mặc định LBound là 0. Nếu đầu module đặt Option Base 1 thì các mảng dựng từ hàm này sẽ có LBound là 1. Dùng VBA.Array(...) sẽ bỏ qua Option, và bảo đảm LBound là 0.

2. Để gọi đích danh hàm khi có khả năng hàm này bị một hàm người dùng che mất (trùng tên).
Nếu tôi viết một hàm người dùng lây tên là Mid thì kể từ đó về sau, mọi lần gọin hàm Mid đều là gọi hàm UDF của tôi. Muốn gọi Mid nguyên thuỷ thì phải có tiền tố VBA.
Điểm này rất quan trọng khi vào một project lớn, code gom từ nhiều mối. Cũng giống như biến toàn cục, ai biết có một module nào đó người ta nổi hứng viết một hàm trùng tên với hàm có sẵn của VBA. (có thể vì lkys do đặc thù nào đó, hoặc chỉ đơn thuần là do hàm lạ, ít dùng nên người ta không biết tên)

1630817334150.png

Từ lúc biết về VBA đến nay đã xài 97-2003, 2007, 2010 và hiện nay 365 (xài lâu dài nhất là 2010), nhưng chưa bao giờ bị lỗi về hàm của VBA. Nó chỉ bị lỗi khi và chỉ khi có một Control hay Object nào đó mà nó không tương thích hoặc bị Missing trong file thay vì lỗi vào control hay đối tượng đó, nó lại báo lỗi ngay cái hàm mà hằng ngày mình dùng chả bị lỗi. Cứ bỏ check Missing là không còn bị lỗi này nữa.
Chưa bị gì hết là do chưa gặp những Project khủng mà phải gộp code do nhiều người viết. Mỗi người viết một vài modules hay vài phần (subs/funcs) của các modules.

Gặp lỗi này mà không biết hai điều tôi nêu trên thì debug khùng luôn.
 
Web KT

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

Back
Top Bottom