PDA

View Full Version : Loại khoảng trắng & bỏ dấu tiếng việt



Thien
08-09-07, 11:19 AM
Nhờ các bác viết code ứng dụng trong việc Loại khoảng trắng & bỏ dấu tiếng việt. Hiện tại ứng dụng hàm LoaiDauUni & AllTrim thấy phải mở thêm cột khó khăn quá.

ví dụ: khi chọn chữ Tàu Hủ và chạy macro sẽ thành TauHu.

Ứng dụng hàm trên chỉnh sửa tá lả để thành marco chẳng được như ý. Tiện cho mình hướng dẫn sự khác nhau giữa hàm & macro & cách chuyển đổi chúng.

TC.

levanduyet
08-09-07, 11:34 AM
Tôi xin giới thiệu nguyên tắc để bạn viết thủ tục trên theo ý của bạn.

_Đầu tiên bạn phải có 2 mảng: mảng A chứa các ký tự có cả dấu, mảng B chứa các ký tự không có dấu. Ví dụ


Dim arrA As Variant, arrB As Variant
arrA = Array("a", "¨", "Ê", " ")
arrB = Array("a", "a", "a", "")
Sau đó bạn chỉ việc viết vòng lập quét qua chuổi bạn cần chuyển đổi, so sánh nếu là ký tự ở mảng a (arrA) thì sẽ được thay thế bằng chuổi ở mảng B (arrB)

Vậy là bạn viết được một thủ tục theo ý của bạn.

Chúc bạn thành công.

Lê Văn Duyệt

phamduylong
08-09-07, 01:23 PM
Nhờ các bác viết code ứng dụng trong việc Loại khoảng trắng & bỏ dấu tiếng việt. Hiện tại ứng dụng hàm LoaiDauUni & AllTrim thấy phải mở thêm cột khó khăn quá.
ví dụ: khi chọn chữ Tàu Hủ và chạy macro sẽ thành TauHu.
Ứng dụng hàm trên chỉnh sửa tá lả để thành marco chẳng được như ý. Tiện cho mình hướng dẫn sự khác nhau giữa hàm & macro & cách chuyển đổi chúng.
TC.
Bạn viết thủ tục này:


Sub LoaiDau()
For Each mycell In Selection
mycell.Value = AllTrim(LoaiDauUni(mycell.Value))
Next
End Sub


Chọn các cell cần chuyển đổi, chay Sub LoaiDau.

Theo mẫu Sub này, bạn có thể viết các Sub khác để chuyển trực tiếp không cần mở cột phụ.

Thien
10-09-07, 11:03 AM
Dear phamduylong.
Cảm ơn bác đã chỉ dẫn. Nhưng bạn chưa test code của bạn thì phải. Mình chép code bạn đặt vào Module rùi chạy thì bị báo lỗi chổ này nè "LoaiDauUni".
(Mình vẫn addin tiện ích của bạn mà).

Bạn xem lại giúp nhen.

TC.

Trời ơi tới giờ mà chưa ai giúp giải đáp hả ta. Buồn quá đi mất. đi ngủ nha.

TC.

phamduylong
12-09-07, 01:32 PM
Trời ơi tới giờ mà chưa ai giúp giải đáp hả ta. Buồn quá đi mất. đi ngủ nha.
TC.
Bạn phải viết sub LoaiDau và phải mở HoTroTiengViet VBA.xla mới có thủ tục và hàm để làm việc. Tôi đã ghi vào HoTroTiengViet VBA.xla.
Muốn sử dụng, bạn phải mở HoTroTiengViet VBA.xla, mỡ tập tin cần làm việc, chọn vùng, menu Tools > Macro > nhập vào Macro Name =Loaidau > Run.

Thien
12-09-07, 03:00 PM
Dear All
chẳng lẽ không có ai khác giải đáp giùm sao trời.

To phamduylong.
Cảm ơn bạn đã quan tâm. Nhưng như bài 4 mình đã nói có sử dụng add-in của bạn mà vẫn báo lỗi đó chứ.


Muốn sử dụng, bạn phải mở HoTroTiengViet VBA.xla, mỡ tập tin cần làm việc, chọn vùng, menu Tools > Macro > nhập vào Macro Name =Loaidau > Run.
Nhấn ALT+F8 là thấy macro Loaidau đó nhấn run là được mà, chỉ chi mà dài dòng thế.

Xem lại dùm nha.

TC.

Thien
18-09-07, 02:38 PM
Chào Thien,
Bạn kiểm tra cẩn thận lại xem sau, mình đã Add-Ins của anh Long thấy chạy rất tốt.
TP.

Anh ơi em biết hàm thì chạy rất tốt nhưng dùng code này thì đang bị báo lỗi

Sub LoaiDau()
For Each mycell In Selection
mycell.Value = AllTrim(LoaiDauUni(mycell.Value))
Next
End Sub

Có nhã ý thì giúp dùm.

TC.

ThuNghi
18-09-07, 03:00 PM
Nó báo làm sao đại ca, chắc là không có function LoaiDauUni thì sao mà chạy.
Mà dùng UDF không hay hơn Sub sao.
Chép function LoaiDauUni vào file.

TranThanhPhong
18-09-07, 03:37 PM
Chào bạn Thiện

Bạn add-ins file đính kèm | sau đó mở file cần loại bỏ dấu | chọn vùng cần loại bỏ dấu | nhấp phải chuột | chọn Loai bo dau. OK

Không phục hồi có dấu lại được, mình khuyên bạn nên dùng hàm!

http://i167.photobucket.com/albums/u147/ttphong2007/Loaibodau.jpg

Thanh Phong

Thien
19-09-07, 05:23 PM
Dear Anh Phong.
Rất cảm ơn Anh đã giải đáp. Đúng như ý mình, mà mình thì đang rất cần.

Dear Thunghi
nó báo lỗi ngay LoaiDauUni trong đoạn code mycell.Value = AllTrim(LoaiDauUni(mycell.Value))

Thân chào.

ongtrungducmx25
28-09-07, 11:37 AM
bạn chỉnh lại thử xem loại bỏ dấu nhưng không loại bỏ khoảng trắng có được không!

vungoc
28-09-07, 11:54 AM
Cho tôi được cảm ơn thầy Phạm Duy Long đã giúp tôi hàm:

=LoaiDauUni(Left(A1),1) ' Để lấy 1 ký tự đầu tiên phía bên trái và lọai bỏ dấu (bảng mã unicode).

Cảm ơn cả anh Thu Nghi nữa !

TranThanhPhong
28-09-07, 11:55 AM
bạn chỉnh lại thử xem loại bỏ dấu nhưng không loại bỏ khoảng trắng có được không!

Vâng, cái này loại dấu không loại khoảng trắng! Cái này dùng font Unicode.

TP.

duong78
28-09-07, 02:08 PM
Các bác ơi khi sử dụng nó rồi nhưng các chữ nó lại liền nhau ko cách như chữ ban đầu? Các bác có cách nào khi bỏ dấu mà nó vẫn giữ như vị trí ban đầu ko?

ongtrungducmx25
28-09-07, 06:53 PM
mình thấy có phần miền tự điền dấu khi mình gõ vào chữ không dấu thì nó chuyển sang có dấu thì không biết code đó viết như thế nào zậy ai có thể cho biết cái này không!

phamduylong
28-09-07, 08:04 PM
Vâng, cái này loại dấu không loại khoảng trắng! Cái này dùng font Unicode.
Trong HoTroTiengViet VBA.xla có hàm AllTrim loại bỏ các khoảng trắng.
Bạn kết hợp AllTrim(LoaiDauUni(A1)) để loại bỏ dấu và loại bỏ khoảng trắng.

vt01
03-12-07, 01:44 PM
Có cái nào loại bỏ dấu của bảng mã TCVN ko, cho mình xin với

BNTT
03-12-07, 02:48 PM
Các bác ơi, em có cái này, chỉ để loại bỏ khoảng trắng (khi lỡ nhấn Space hai lần trở lên)

Các bác xem và góp ý dùm em xem có thể làm cho nó ngắn hơn không:


Public Function BoKhoangTrang(ABC)
XYZ = Trim(ABC)
ViTri = InStr(1, XYZ, Space(2))
Do While ViTri > 0
XYZ = Left(XYZ, ViTri) & Trim(Mid(XYZ, ViTri))
ViTri = InStr(1, XYZ, Space(2))
Loop
BoKhoangTrang = XYZ
End Function

FunnyBoy
03-12-07, 03:38 PM
Các bác ơi, em có cái này, chỉ để loại bỏ khoảng trắng (khi lỡ nhấn Space hai lần trở lên)

Các bác xem và góp ý dùm em xem có thể làm cho nó ngắn hơn không:


Public Function BoKhoangTrang(ABC)
XYZ = Trim(ABC)
ViTri = InStr(1, XYZ, Space(2))
Do While ViTri > 0
XYZ = Left(XYZ, ViTri) & Trim(Mid(XYZ, ViTri))
ViTri = InStr(1, XYZ, Space(2))
Loop
BoKhoangTrang = XYZ
End Function


Ủa Excel có sẵn hàm Trim loại bỏ nhiều hơn 1 khoảng trắng trong chuỗi và chừa lại 1 khoảng trắng thôi. Em thử thấy vẫn Ok với tất cả bảng mã, do vậy mình đâu cần tạo UDF. Không biết anh BNTT dùng hàm tạo trên vào việc gì đặc biệt vậy mà hàm Trim không đáp ứng được?.

FB

BNTT
03-12-07, 04:13 PM
Hàm Trim chỉ có thể dùng trong cell của Excel thôi.
Mình làm cái này để gài vào mấy ô nhập liệu trong cái Form.
Gán vào cái sự kiện AfterUpdate()ấy.

FunnyBoy
03-12-07, 04:32 PM
Hàm Trim chỉ có thể dùng trong cell của Excel thôi.
Mình làm cái này để gài vào mấy ô nhập liệu trong cái Form.
Gán vào cái sự kiện AfterUpdate()ấy.

Nếu chỉ có yêu cầu như thế thì anh nên dùng luôn hàm Trim của Excel để thực hiện việc loại khoảng trắng.

Ví dụ:

Private Sub TextBox1_AfterUpdate()
Sheets(1).Cells(1, 1).Value = Application.WorksheetFunction.Trim(TextBox1.Value)
End Sub
Anh xem thêm file đính kèm.

FB.

BNTT
03-12-07, 05:16 PM
Không phải rồi bạn ơi, tôi dùng cái này cho riêng cái Textbox thôi:


Sub Textbox1_AfterUpdate()
Textbox1 = BoKhoangTrang(Textbox1)
End Sub

Chớ không phải dùng cho 1 cell ở ngoài Excel sau khi nhập vào Textbox1.

Mr Okebab
03-12-07, 06:23 PM
Không phải rồi bạn ơi, tôi dùng cái này cho riêng cái Textbox thôi:


Sub Textbox1_AfterUpdate()
Textbox1 = BoKhoangTrang(Textbox1)
End Sub
Chớ không phải dùng cho 1 cell ở ngoài Excel sau khi nhập vào Textbox1.


Bác xem nhé :

Sub Textbox1_AfterUpdate()
Textbox1.Value = WorksheetFunction.Trim(Textbox1.Value)
End Sub


Thân!

BNTT
03-12-07, 08:43 PM
Hình như tớ đã dùng cái này 1 lần, nhưng hồi đó còn rất dốt VBA, nó cứ làm sau ấy nên mới sử dụng cái hàm BoKhoangTrang kia. Để tớ xem thử nhé.
Cảm ơn Bap nhiều. Hôm nào xuống Saigon đi ăn lẩu dê nữa nhé! ...

ongtrungducmx25
05-12-07, 09:52 AM
Nếu chỉ có yêu cầu như thế thì anh nên dùng luôn hàm Trim của Excel để thực hiện việc loại khoảng trắng.

Ví dụ:

Private Sub TextBox1_AfterUpdate()
Sheets(1).Cells(1, 1).Value = Application.WorksheetFunction.Trim(TextBox1.Value)
End Sub
Anh xem thêm file đính kèm.

FB.

cái này của pác loại bỏ khoảng trắng rất tốt nhưng bạn có cách nào thêm vào khi chọn row hoặc colum một cách tùy ý có được không,hơn nữa cái của bạn làm thì mình chỉ gõ một dòng thôi nhưng xuống dòng thì không được (còn trong 1cell khi muốn gõ dòng kế tiếp thì nhấn Alt+ẻnter là gõ được rồi ), không có nút insert để chuyển ra ngoài cho thuận tiện, mỗi lần nhập xong thì đóng lại thì khó lắm bạn nhé! mong bạn cải tiến tiếp tục nhé

cool
08-08-08, 09:06 AM
Macro của các bác chạy ngon rồi, nhưng làm sao để cho nó chuyển tự động được không
VD: khi điền tên vào A1: Nguyễn Văn Bình thì tự động B1: Nguyen Van Binh

ongtrungducmx25
01-09-08, 07:35 PM
làm thế nào khi nhập tên vào cột Họ & Tên thì Excel biết được thừa khoảng trắng
vd:
stt|Họ và Tên|thừa khoảng trắng
1|Nguyễn Văn An| chữ An(tên)
2|Trần Minh Phi|chữ Minh(chư lót)
3| Dương Hùng Minh|chữ Dương(họ)
loại bỏ khoảng trắng
stt| Họ và Tên
1|Nguyễn Văn An
2|Trần Minh Phi
3|Dương Hùng Minh

có như thế thì hay biết mấy có thể nào dùng VBA được không

Mr Okebab
01-09-08, 08:42 PM
làm thế nào khi nhập tên vào cột Họ & Tên thì Excel biết được thừa khoảng trắng
vd:
stt|Họ và Tên|thừa khoảng trắng
1|Nguyễn Văn An| chữ An(tên)
2|Trần Minh Phi|chữ Minh(chư lót)
3| Dương Hùng Minh|chữ Dương(họ)loại bỏ khoảng trắng
stt| Họ và Tên
1|Nguyễn Văn An
2|Trần Minh Phi
3|Dương Hùng Minhcó như thế thì hay biết mấy có thể nào dùng VBA được không

Biết được nghĩa là như thế nào bác nhỉ ??? nghĩa là thông báo ở ô bên cạnh à ??

Nếu thế chỉ cần :


=NOT(ISERROR(FIND(" ";A1;1)))" " : 2 khoảng trắng

Nếu là True thì OK, nếu là False thì nghĩa là có lỗi.

Thân!

NhatTuViSu
02-09-08, 08:39 AM
Xin các Bro chỉ giúp
Tôi copy 1 sheet "TH" của File A dán vào sheet (trống) file B, đặt tên là "BANG1", khá nhiều cell trong "TH" có truy cập giá trị của cell khác
Tại BANG1 làm sao loại bỏ các đường link này để mỗi khi mở, không hỏi "Update..."
(không dùng paste values, vì muốn copy các công thức hữu ích)
cám ơn nhìu

ongtrungducmx25
02-09-08, 08:41 AM
không cần phải thông báo đâu chỉ cần loại bỏ khoảng là được rồi nếu dùng công thức thì phải thêm cột phục thì rườm rà nhé!

Mr Okebab
02-09-08, 01:25 PM
không cần phải thông báo đâu chỉ cần loại bỏ khoảng là được rồi nếu dùng công thức thì phải thêm cột phục thì rườm rà nhé!

Có nghĩa là tại A1, khi nhập họ tên xong thì tư động loại trừ khoảng trắng thừa cũng trên A1 luôn phải không ???

Thân!

phamduylong
02-09-08, 02:41 PM
Có nghĩa là tại A1, khi nhập họ tên xong thì tư động loại trừ khoảng trắng thừa cũng trên A1 luôn phải không ???
Thân!
Bạn có thể viết thủ tục trong Thisworkbook nếu muốn tất cả các sheet khi nhập xong thì loại khoảng trắng ô mới nhập:


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Target.Value = Application.WorksheetFunction.Trim(Target.Value)
End Sub


Còn nếu muốn chỉ làm việc riêng 1 sheet nào đó thì viết thủ tục trong trong Worksheet đó:


Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = Application.WorksheetFunction.Trim(Target.Value)
End Sub

ongtrungducmx25
03-09-08, 08:50 AM
em muốn cập nhật thêm khi gõ vào chữ thường thì chuyển sang Chữ Hoa Đầu Câu thì như thế nào nhỉ!

phamduylong
03-09-08, 05:12 PM
em muốn cập nhật thêm khi gõ vào chữ thường thì chuyển sang Chữ Hoa Đầu Câu thì như thế nào nhỉ!
Trong VBA không có hàm tương đương với PROPER của Excel nên phải viết thủ tục làm việc này:


Private Sub Worksheet_Change(ByVal Target As Range)
myValue = LCase(Application.WorksheetFunction.Trim(Target.Va lue))
If myValue <> "" Then
i = 0
Do
Mid(myValue, i + 1, 1) = UCase(Mid(myValue, i + 1, 1))
i = InStr(i + 1, myValue, " ")
Loop While i > 0
Target.Value = myValue
End If
End Sub


Thủ tục trên tương đương với TRIM(PROPER(chuỗi)) của Excel.
Chú ý sau khi chuyển xong nó thành chuỗi (mất công thức)

Đính chính:
Bài số 32 viết sai. bạn xóa Selection

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = Application.WorksheetFunction.Trim(Target.Value)
End Sub
Đúng là:

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Value = Application.WorksheetFunction.Trim(Target.Value)
End Sub
Tôi đã chỉnh lại bài 32

thuys53
12-12-08, 08:30 AM
Bác nào có hàm chuyển đổi như trên post lên cho em xem với.
Em cũng đang muốn chuyển đổi tên Tiếng Việt sang thành tên không dấu nhưng vẫn giữ lại khoảng trắng.
VD giống như của cool y.

BNTT
14-12-08, 11:52 AM
bỏ dấu trong unikey là sao mình chưa hiểu lém

Bạn chọn một đoạn văn muốn bỏ dấu (loại bỏ các dấu thanh), nhấn Copy (Ctrl+C)


Mở cửa sổ Công cụ của Unikey:

http://i216.photobucket.com/albums/cc49/BNTT_photos/000-131.gif


Ở Nguồn và Đích, chọn cùng một loại bảng mã.


Đánh dấu kiểm vào tùy chọn Loại bỏ dấu trong nhóm các tùy chọn bên phải.


Nhấn nút Chuyển mã phía dưới bên trái.


Quay lại nơi chứa văn bản cần loại bỏ dấu thanh, nhấn Ctrl+V để dán nội dung đã được loại bỏ hết dấu thanh tiếng Việt.

Bé tí xíu
14-12-08, 12:36 PM
Cảm ơn anh BNTT nhìu nhìu. Có vậy thôi mà Bé tí xíu hổng biết làm, xưa giờ cứ phải gõ lại cả câu nếu muốn bỏ cái dấu thanh đi.
Nhưng trong đó có cái "Không dùng rich text" là sao hở anh? Rich Text = "chữ giàu" ? hay "nhiều chữ" (giống benhieuchien) ?

ngocpc_th
12-10-10, 04:22 PM
Thank bạn nhiều ... đang cần chuyển đổi tên để in bằng ... năm nay mẫu bằng tc có cả tiếng anh

bj189
26-09-12, 11:16 AM
các bác cho em hỏi hàm loại dấu này bị lỗi là do cái gì , dùng hàm rồi mà vẫn còn dấu như thường

Hoàng Trọng Nghĩa
26-09-12, 11:53 AM
các bác cho em hỏi hàm loại dấu này bị lỗi là do cái gì , dùng hàm rồi mà vẫn còn dấu như thường

Bạn gửi lên cái file mà không thấy cái addins đâu hết, làm sao biết được lỗi tại đâu?

bj189
26-09-12, 12:35 PM
Bạn gửi lên cái file mà không thấy cái addins đâu hết, làm sao biết được lỗi tại đâu?

vâng đây ạ , bác đổi đôi xls thành xla

Hoàng Trọng Nghĩa
26-09-12, 02:17 PM
vâng đây ạ , bác đổi đôi xls thành xla

Code thì không sai, nhưng chuỗi nguồn (tức chuỗi tại ô A1) có vấn đề! Tôi không biết người nhập vô ô đó bằng loại font gì, nhưng khi tôi gõ lại cụm chuỗi của bạn "thuốc bổ thảo dược cảm bo 3 , keo ho" thành cụm chuỗi "thuốc bổ thảo dược cảm kẹo ho" bằng font Unicode thì không có vấn đề gì. Bạn kiểm tra lại xem.

siwtom
26-09-12, 05:41 PM
vâng đây ạ , bác đổi đôi xls thành xla

Để sửa 1 ô trong bảng tính thì dễ rồi. Nhưng nếu trong bảng tính bạn có nhiều chỗ như thế thì làm thế nào?
Tôi sẽ chỉ ra nguyên nhân cho bạn để bạn có hướng giải quyết.
Nguyên nhân: trong ô A1 bạn có unicode tổ hợp mà hàm LoaiDauUni không hỗ trợ unicode tổ hợp (bạn cứ thử viết lại A1 nhưng dùng unicode tổ hợp thì bạn sẽ thấy).
------------
Tôi đã kiểm tra thế nào?
1. Tôi xóa hết chỉ để trong A1 chữ "ố". Kiểm tra Len(...) tôi thấy nó có độ dài = 2 (ghi trên đĩa sẽ mất 4 bai). Mà chữ "ố" dựng sẵn chỉ có độ dài = 1 (ghi trên đĩa sẽ mất 2 bai). Bạn có thể làm một test nhỏ:

[CODE]
Sub Button1_Click()
Range("A10").Value = ChrW(&H1ED1)
Range("A11").Value = ChrW(&HF4) & ChrW(&H301)
End Sub
[/QUOTE]

Bạn sẽ thấy trong A10 và A11 đều có chữ "ố". Nhưng "ố" trong A10 là unicode dựng sẵn, ghi trên đĩa sẽ mất 2 bai là D1 và E1 (theo thứ tự), còn "ố" trong A11 là unicode tổ hợp, ghi trên đĩa sẽ mất 4 bai - 2 bai là chữ "ô" (bai F4 và 00 theo thứ tự) còn 2 bai là dấu "sắc" (bai 01 và 03 - theo thứ tự)

Bạn có thể tưởng tượng unicode tổ hợp và dựng sẵn như sau: bạn tới cửa hàng A và nói: cho tôi đặt chữ "ố". Họ làm cho bạn 1 linh kiện là chữ "ố". Nó là 1 "cục" duy nhất. Bạn sang cửa hàng B và cũng đặt chữ "ố". Họ cung cấp cho bạn 2 linh kiện, 2 "cục" - là linh kiện chữ "ô" và linh kiện dấu sắc. Bạn "lồng" (tổ hợp) 2 linh kiện thì cũng có chữ "ố".

Tại sao B lại sản xuất 2 linh kiện? Tôi đoán mò nhé, tự bịa ra để hiểu vấn đề thôi. B nghĩ: làm 2 linh kiện ta có thể bán cho 3 loại khách - đặt chữ "ô", đặt dấu phẩy, và đặt chữ "ố". Còn A phải sản xuất tới 3 linh kiện để bán cho 3 loại khách.

Bạn cứ hiểu nôm na thế này là được: ký tự unicode "x" dựng sẵn là 1 ký tự unicode nào đó còn ký tự unicode "x" tổ hợp là sự kết hợp của 2 hoặc nhiều hơn các ký tự unicode "đơn" nào đó. Các ký tự tiếng Việt tổ hợp có thể là sự kết hợp của 2 hoặc 3 ký tự "đơn" khác (dùng 4 hoặc 6 bai), còn dựng sẵn luôn là 1 ký tự duy nhất (dùng 2 bai)

2. Khi đã nghi ngờ là bạn có trong A1 unicode tổ hợp thì tôi làm tiếp test để chắc chắn 100%.
Tôi dùng hàm SourceToDest (tôi đã đính kèm vào tập tin cho bạn). Công thức cho C1 là:
=SourceToDest(A1;1;1)
Hàm convert chữ trong A1 từ unicode sang unicode. Unicode nguồn là loại gì cũng được nhưng unicode đích luôn là unicode dựng sẵn.
Như vậy trong C1 tôi chắc chắn có unicode dựng sẵn.

3. Bây giờ nếu bạn sửa công thức trong B1 từ =LoaiDauUni(A1) sang =LoaiDauUni(C1)
thì trong B1 bạn sẽ có chữ không dấu.
--------------
Kết luận một lần nữa: LoaiDauUni chỉ hỗ trợ unicode dựng sẵn. Nói rộng ra thì toàn bộ code trong add-in chỉ hỗ trợ unicode dựng sẵn. Nếu bạn có dữ liệu unicode tổ hợp (của nhân viên đã nghỉ việc?, nhận được của đối tác?) thì bạn không dùng được add-in
-----------
Trong tập tin đính kèm tôi đã thêm module vietnamese_unicode_convert mà trong đó có hàm SourceToDest.
Trong bảng tính cũng có tất cả các code mà tôi nói tới ở trên để bạn thử nghiệm.
Bạn cũng có thể lập công thức cho B2 là
=SourceToDest(A1;1;5)
để bỏ dấu luôn từ A1 chứ không cần dùng C1 trung gian.

dungbia
24-11-12, 04:10 PM
Chào bạn Thiện

Bạn add-ins file đính kèm | sau đó mở file cần loại bỏ dấu | chọn vùng cần loại bỏ dấu | nhấp phải chuột | chọn Loai bo dau. OK

Không phục hồi có dấu lại được, mình khuyên bạn nên dùng hàm!

http://i167.photobucket.com/albums/u147/ttphong2007/Loaibodau.jpg

Thanh Phong

Hi bạn Phong,

Mình làm theo cách của bạn nhưng có ô thì đúng ý mình (vừa bỏ dấu, vừa mất khoảng trắng) nhưng vẫn còn 1 số ô chỉ mất khoảng trắng và mất 1 vài dấu thôi. ví dụ:
Võ Quốc Khánh => VõQuócKhánh

Mong bạn giúp đỡ thêm!

TFYI - Dũng.

dungbia
24-11-12, 04:16 PM
À, mình hiểu rồi! Thì ra là do file của mình định dạng là font MS Sans Serif nên nó mới bị như vậy!

Tks all,

ndu96081631
24-11-12, 05:46 PM
À, mình hiểu rồi! Thì ra là do file của mình định dạng là font MS Sans Serif nên nó mới bị như vậy!

Tks all,

Tôi e rằng hổng phải nguyên nhân này, vì thực chất font chẳng ảnh hưởng gì đến chương trình loại dấu tiếng Việt cả
Tôi nghi ngờ khi gõ tiếng Việt, bạn đãdùng bảng mã Unicode tổ hợp (thay vì phải dùng Unicode dựng sẵn) ---> Kiểm tra lại xem, còn không thì cho file của bạn lên đây để mọi người kiểm tra giúp bạn

thlpro
29-11-13, 10:26 AM
Nếu mình chỉ muốn loại bỏ dấu ko thôi, vẫn giữ nguyên khoảng cách thì mình cần làm gì?

daotuanphong
13-08-14, 03:52 PM
Cảm ơn bạn nhiều lắm nha, rất có ích, đúng là tiện ích
Bên Unikey có nhưng nếu quên làm thì sai mẫu, còn có tiện ích của bạn rồi chỉ việc copy => paste rồi in thôi

daotuanphong
13-08-14, 03:58 PM
Cảm ơn bạn nhiều lắm nha, rất có ích, đúng là tiện ích (HoTroTiengViet VBA.zip (http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=3768&d=1189578734) đã bao gồm các phát sinh thường gặp mà đặc biệt là uni & vni luôn => hay)
Bên Unikey có nhưng nếu quên làm thì sai mẫu, còn có tiện ích của bạn rồi chỉ việc copy => paste rồi in thôi
Nãy cảm ơn nhầm bạn +-+-+-+, chính thức cảm ơn bạn: pham_duy_long@yahoo.com