Viết thủ tục tìm kiếm, thay thế giá trị trên Sheet - xin trợ giúp! (1 người xem)

Liên hệ QC

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

Xuantruong

Thành viên mới
Tham gia
8/4/07
Bài viết
15
Được thích
1
File excel của tôi có nhiều dữ liệu bị nhập sai, do đó cần phải được sửa đổi, chẳng hạn sửa "Tuổi trể" thành "Tuổi Trẻ". Tôi đã dùng code như sau:

Selection.Replace What:="Tuổi Trể", Replacement:="Tuoi Tre", LookAt:=xlWhole


Có điều chưa ưng ý là không viết được rõ chữ "Tuổi Trẻ" trong VBA, phải viết "Tuoi Tre" trong Replacement. Các bác có cách nào giải quyết vấn đề tiếng Việt trong code của VBA không, chỉ tôi với.

Thanks.

___________________________________________
Chủ đề sẽ được chuyển tới chuyên mục phù hợp
 
Chỉnh sửa lần cuối bởi điều hành viên:
VBA không hỗ trợ font unicode. Bạn có thể nhập tiếng Việt vào cửa sổ code bằng font VNI-Times. Trước khi nhập vào Tools\Options\Editor format để chỉnh font sang VNI-times cho phù hợp. Thân
 
Trước khi nhập vào Tools\Options\Editor format để chỉnh font sang VNI-times cho phù hợp
Hic, bác chỉ thêm đi chứ trong Tool\Options tôi chưa nhìn ra chỗ nào gọi là "Editor Format" để chỉnh font. Mới lại chuyển sang font VNI Times liệu code nó có hoạt động được không khi file excel của tôi đang ở font Times new roman?Thanks bác.
 
Tôi dùng Unikey và chọn chế độ Unicode tổ hợp trong VBA office 2007 thấy chạy tốt ở mọi chỗ từ thể hiện lên form đến các đối tượng khác.
 
Excel tôi đang dùng là phiên bản 2003 bác ạ.
 
-Tools\Options\Editor format trong cửa sổ code ( bấm Alt+F11)
-Sử dụng cách trên với điều kiện dữ liệu ở các sheet phải nhập bằng font VNI-times. Có thể dùng Vietkey02.1 để chuyển đổi từ unicode sang VNI-times.
 
Vẫn không được bác ạ. Tôi chuyển sang font VNI - times - bold (Western) (không thấy có font VNI - times) như bác chỉ, nhưng không gõ được tiếng Việt. Hay là excel của tôi thiếu cái gì đó?
 
Xuantruong đã viết:
File excel của tôi có nhiều dữ liệu bị nhập sai, do đó cần phải được sửa đổi, chẳng hạn sửa "Tuổi trể" thành "Tuổi Trẻ". Tôi đã dùng code như sau:

Selection.Replace What:="Tuổi Trể", Replacement:="Tuoi Tre", LookAt:=xlWhole


Có điều chưa ưng ý là không viết được rõ chữ "Tuổi Trẻ" trong VBA, phải viết "Tuoi Tre" trong Replacement. Các bác có cách nào giải quyết vấn đề tiếng Việt trong code của VBA không, chỉ tôi với.

Thanks.

Bạn làm thế này.

Selection.Replace What:= Tcvn3ToUnicode("Kiểu gõ TCVN3") , Replacement:=Tcvn3ToUnicode("Kiểu gõ TCVN3"), LookAt:=xlWhole

Khi chạy nó sẽ đúng với tính chất Unicode.
 
Bạn áp dụng theo sự chỉ dẫn của bạn Tuan thử coi. Tôi nghĩ đó là giải pháp hay. Còn nếu muốn gõ được tiếng Việt trong code thì tôi thường chỉnh editor format sang font VNI-times-bold như bạn đã chỉnh, chỉnh bộ gõ Vietkey sang mã VNI rồi nhập tiếng Việt bình thường.
 
bạn vào vietky/va chọn unicode hay bảng mã TCVN3 là được
 
Bạn cần hiểu rõ hơn như thế này.
Nếu khói văn bản của bạn là gõ Unicode thì giá trị được tìm và thay thế cũng phải kiểu gõ Unicode.
Nếu sai kiểu gõ, mặ dù nhìn được tiếng Việt thì cũng không tìm được đúng.
 
Hic. +-+-+-+ Thanks các bác. Nhưng đúng là với excel tôi thuộc loại newbie, làm thế nào cũng không ra được. Tôi upload file lên, các bác viết cái code để chuyển đúng thành chữ "Tuổi Trẻ" ở những chữ viết sai chính tả giúp tôi với...
 

File đính kèm

-Vấn đề của bạn là chỉnh sửa các từ nhập sai nằm bất cứ nơi đâu trên sheet Data phải không?
-Thế thì theo mình nên tạo 1 sheet phụ để lấy mẫu:( xem file đính kèm
+Khi chương trình chạy, các từ lấy mẫu này không bị thay đổi
+Khi ta tham chiếu đến giá trị của ô, vấn đề font chữ không quan trọng nữa.
-Bạn nhập các từ sai ở ô bất kỳ trên sheet data, rồi chạy chương trình. (Mở cửa sổ code, bấm F5 - run.)

Mình gởi file đính kèm đây
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
voda đã viết:
Sub suachu()
Sheet1.Cells.Select
Selection.Replace What:=Sheet2.Range("A2").Value, Replacement:=Sheet2.Range("B2").Value, LookAt:=xlWhole
Selection.Replace What:=Sheet2.Range("A3").Value, Replacement:=Sheet2.Range("B2").Value, LookAt:=xlWhole
Selection.Replace What:=Sheet2.Range("A4").Value, Replacement:=Sheet2.Range("B2").Value, LookAt:=xlWhole
Selection.Replace What:=Sheet2.Range("A5").Value, Replacement:=Sheet2.Range("B2").Value, LookAt:=xlWhole
Range("A1").Select
End Sub
Dear all,
-------
Các bạn có thể cải tiến thủ tục trên bằng 1 vòng duyệt
 
Vấn đề của bạn là chỉnh sửa các từ nhập sai nằm bất cứ nơi đâu trên sheet Data phải không?
Không phải bác ạ. Cột A đó chứa rất nhiều dữ liệu sai và cần phải sửa tương ứng sang cột B, ví dụ ô A2 dữ liệu nhập sai là "Tuổi trể" cần chỉnh sang ô B2 là Tuổi Trẻ, ô A9 dữ liệu nhập sai là "An Nỉnh" cần chỉnh sang ô B9 là "An Ninh". Tôi upload lại file, các bác xem giúp với.
 

File đính kèm

Mình nghĩ dù yêu cầu thế nào cũng phải tạo mẫu cho các từ nhập sai kiểu như Auto Correct vậy. VBA không thể đọc được các từ sai bất kỳ.
Mình tạo mẫu trên 1 sheet riêng. Chương trình chạy sẽ chỉnh sửa dữ liệu trong sheet data .
Biến x phụ thuộc vào số dòng của dữ liệu cần chỉnh ( sheet data). Biến y phụ thuộc vào số dòng của dữ liệu mẫu ( sheet Laymau)
Mình gời file đính kèm, không biết đã đúng ý bạn chưa? Bác nào có cách tốt hơn xin giúp thêm.
 

File đính kèm

Dear Xuantruong,
----------------
Anh Vợ Đá (chắc anh này chán đời nên mới qua đây ngủ nhờ! he! he!) nói đúng đó, để hiệu quả thì bạn phải thống kê được kết quả sai và đưa ra từ thay thế (lập danh mục lỗi chính tả)! (Không biết ai mà hậu đậu, viết sai nhiều lỗi chính tả đến thế)!
Với bảng này, bạn có thể sử dụng VLOOKUP:
VLOOKUP(<Lỗi chính tả>,<Bảng thống kê lỗi chính tả>, <chỉ số cột chứa từ thay thế>,0)
(chú ý tham số range_lookup=0 hay TRUE - Approximate Macth)
Hi vọng đây là giải pháp có thể chấp nhận được!
 
Web KT

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

Back
Top Bottom