Hỏi: Chuyển đổi chữ thành ký tự!

Liên hệ QC

autokiss

Thành viên hoạt động
Tham gia
22/12/07
Bài viết
173
Được thích
11
Chào các bạn! Mình muốn hỏi trong Excel có cách nào chuyển đổi chữ thành ký tự kiểu như là: "Không đi đâu" → "Khoong ddi ddaau" hoặc "Tôi nghĩ thế này" → "Tooi nghix thees nayf" không?

Cảm ơn các bạn!
 

File đính kèm

nếu vba thì có khả năng chứ công thức excel thì bó tay
 
Chào các bạn! Mình muốn hỏi trong Excel có cách nào chuyển đổi chữ thành ký tự kiểu như là: "Không đi đâu" → "Khoong ddi ddaau" hoặc "Tôi nghĩ thế này" → "Tooi nghix thees nayf" không?

Cảm ơn các bạn!

Mục đích của việc chuyển đổi này là để làm cái gì vậy bạn?
 
Tôi vừa thử bằng VBA nhờ code của chuyển đổi chữ thành số nhưng không được. Haiz...
 
Tôi vừa thử bằng VBA nhờ code của chuyển đổi chữ thành số nhưng không được. Haiz...
Liên quan gì đến "chuyển đổi chữ thành số" ở đây hả bạn
Code thì hoàn toàn không có vấn đề gì! Hàm này tôi viết cách đây mấy năm rồi
Tuy nhiên, bài 3 hỏi sao bạn không trả lời?
 
Có một bài như thế rồi, mục đích hàm này đưa tiếng việt thành cách gõ (trên cells), rồi copy chuỗi này đưa vào code. Có thể là dùng code để chuyển đổi để khỏi viết nhầm trong code chăng?
 
Chuyện này hơi khó. Khó ở chỗ kết quả không hoàn toàn tin cậy. Theo lô gic toán, sự chuyển đổi chỉ tin cậy được khi hàm chuyển đổi có tính cách đơn trị trong vùng hoạt động: nếu x1 <> x2 thì f(x1) <> f(x2) và ngược lại.

Trong trường hợp này, sau khi dịch xong rồi, lỡ gặp chữ có hai cách hiểu, hoặc có kèm tiếng Anh thì sao?
Ví dụ:
tiếng Việt có cả 2 từ sông (con sông) và soong (cái nồi)
bees được hiểu là gì?
 
chỉ làm một chiều cho tiếng việt thì cứ ký tự đặc biệt là đổi kiểu "ô" thành "oo", đổi "à" thành "af"... có điều đổi "này" thành "nafy" thì dễ chứ thành "nayf" thì hơi phiền.
@VetMini: ngôn ngữ nói chung, (đặc biệt là) tiếng việt khó mà theo logic toán được. ví dụ hiểu "ông cụ già đi nhanh quá" thế nào?
1/ ông cụ GIÀ ĐI nhanh quá.
2/ ông cụ già ĐI nhanh quá.
 
Tại sao lại "(đặc biệt là) tiếng Việt"? Việc khó hiểu chả có gì của riêng tiếng Việt cả.

Ai học ngữ pháp tiếng Anh cũng từng học qua câu này:

"I saw a man on a hill with a telescope"

Có ít nhất vài cách hiểu: cái telescope của tôi hay của người kia? và tôi có đang ở trên đồi?
 
Tại sao lại "(đặc biệt là) tiếng Việt"? Việc khó hiểu chả có gì của riêng tiếng Việt cả.

Ai học ngữ pháp tiếng Anh cũng từng học qua câu này:

"I saw a man on a hill with a telescope"

Có ít nhất vài cách hiểu: cái telescope của tôi hay của người kia? và tôi có đang ở trên đồi?

vì tui rành tiếng việt hơn.
 
chỉ làm một chiều cho tiếng việt thì cứ ký tự đặc biệt là đổi kiểu "ô" thành "oo", đổi "à" thành "af"... có điều đổi "này" thành "nafy" thì dễ chứ thành "nayf" thì hơi phiền.
@VetMini: ngôn ngữ nói chung, (đặc biệt là) tiếng việt khó mà theo logic toán được. ví dụ hiểu "ông cụ già đi nhanh quá" thế nào?
1/ ông cụ GIÀ ĐI nhanh quá.
2/ ông cụ già ĐI nhanh quá.

Mình nghĩ cũng không dễ chút nào trong trường hợp chuyển "này" thành "nafy" đâu bạn à. Nếu như làm được thì như vậy cũng được. Ví dụ: "Thường" → "Thwowfng", "Cướp" → "Cwowsp".

Mục đích của việc chuyển đổi này là để làm cái gì vậy bạn?

Mình định làm cái kiểm tra lỗi chính tả bạn à
 
Chào các bạn! Mình muốn hỏi trong Excel có cách nào chuyển đổi chữ thành ký tự kiểu như là: "Không đi đâu" → "Khoong ddi ddaau" hoặc "Tôi nghĩ thế này" → "Tooi nghix thees nayf" không?

Cảm ơn các bạn!

Thử dùng cách thô thiển nhất là lập bảng, sau đó dùng vba tìm kiếm thay thế
 
Chào các bạn! Mình muốn hỏi trong Excel có cách nào chuyển đổi chữ thành ký tự kiểu như là: "Không đi đâu" → "Khoong ddi ddaau" hoặc "Tôi nghĩ thế này" → "Tooi nghix thees nayf" không?

Cảm ơn các bạn!

Bạn kiểm tra cái này xem sao
( Nguồn thay thế trong sheet1 )
Mã:
Public Sub Chuyen_Ve_Ky_Tu()
Dim Nguon, DL, Tam, kq(), r As Long, rw As Long, c As Long

Nguon = Sheet1.UsedRange
DL = Sheet2.Range("B4").CurrentRegion
ReDim kq(1 To UBound(DL), 1 To 1)

With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "[^a-zA-Z]+"
For r = 1 To UBound(DL)
Tam = Split(DL(r, 1), " ")

For c = 0 To UBound(Tam)
If .test(Tam(c)) Then
For rw = 1 To UBound(Nguon)
If InStr(Tam(c), Nguon(rw, 1)) Then
Tam(c) = Replace(Tam(c), Nguon(rw, 1), Nguon(rw, 2))
Tam(c) = Tam(c) & Nguon(rw, 3)
End If
Next rw
End If
Next c

kq(r, 1) = Join(Tam, " ")
Next r
End With

Sheet2.Range("I4", Sheet2.Range("I4").End(xlDown)).ClearContents
Sheet2.Range("I4").Resize(UBound(kq), 1) = kq
End Sub
---
Cách gõ VNI chắc không áp dụng được cái này
 

File đính kèm

Lần chỉnh sửa cuối:
đang rảnh làm luôn (dù cũng chẵng hiểu để làm gì)
Mã:
Public Function Sentence2Telex$(s$)
    Dim a$(), b$(), Str$, i&
    If s = vbNullString Then Exit Function
    a = Split(s)
    ReDim b(UBound(a))
    For i = 0 To UBound(a)
        b(i) = word2Telex(a(i))
    Next
    For i = 0 To UBound(b)
        Str = Str & " " & b(i)
    Next
    Sentence2Telex = Trim(Str)
End Function


Private Function word2Telex$(w As String)
'Return: letters without sign
'-----------------------------------------------------------------
    Dim i, OldCh$, NewCh$, Sign$, Word$
    For i = 1 To Len(w)
        OldCh = AscW(Mid(w, i, 1))
        Select Case OldCh
            Case 192: NewCh = "A": Sign = "F"
            Case 193: NewCh = "A": Sign = "S"
            Case 7840: NewCh = "A": Sign = "J"
            Case 7842: NewCh = "A": Sign = "R"
            Case 195: NewCh = "A": Sign = "X"
            Case 258: NewCh = "AW"
            Case 7856: NewCh = "AW": Sign = "F"
            Case 7854: NewCh = "AW": Sign = "S"
            Case 7862: NewCh = "AW": Sign = "J"
            Case 7858: NewCh = "AW": Sign = "R"
            Case 7860: NewCh = "AW": Sign = "X"
            Case 194: NewCh = "AA"
            Case 7846: NewCh = "AA": Sign = "F"
            Case 7844: NewCh = "AA": Sign = "S"
            Case 7852: NewCh = "AA": Sign = "J"
            Case 7848: NewCh = "AA": Sign = "R"
            Case 7850: NewCh = "AA": Sign = "X"
            Case 224: NewCh = "a": Sign = "f"
            Case 225: NewCh = "a": Sign = "s"
            Case 7841: NewCh = "a": Sign = "j"
            Case 7843: NewCh = "a": Sign = "r"
            Case 227: NewCh = "a": Sign = "x"
            Case 259: NewCh = "aw"
            Case 7857: NewCh = "aw": Sign = "f"
            Case 7855: NewCh = "aw": Sign = "s"
            Case 7863: NewCh = "aw": Sign = "j"
            Case 7859: NewCh = "aw": Sign = "r"
            Case 7861: NewCh = "aw": Sign = "x"
            Case 226: NewCh = "aa"
            Case 7847: NewCh = "aa": Sign = "f"
            Case 7845: NewCh = "aa": Sign = "s"
            Case 7853: NewCh = "aa": Sign = "j"
            Case 7849: NewCh = "aa": Sign = "r"
            Case 7851: NewCh = "aa": Sign = "x"
            Case 272: NewCh = "DD"
            Case 273: NewCh = "dd"
            Case 232: NewCh = "e": Sign = "f"
            Case 233: NewCh = "e": Sign = "s"
            Case 7865: NewCh = "e": Sign = "j"
            Case 7867: NewCh = "e": Sign = "r"
            Case 7869: NewCh = "e": Sign = "x"
            Case 234: NewCh = "ee"
            Case 7873: NewCh = "ee": Sign = "f"
            Case 7871: NewCh = "ee": Sign = "s"
            Case 7879: NewCh = "ee": Sign = "j"
            Case 7875: NewCh = "ee": Sign = "r"
            Case 7877: NewCh = "ee": Sign = "x"
            Case 200: NewCh = "E": Sign = "F"
            Case 201: NewCh = "E": Sign = "S"
            Case 7864: NewCh = "E": Sign = "J"
            Case 7866: NewCh = "E": Sign = "R"
            Case 7868: NewCh = "E": Sign = "X"
            Case 202: NewCh = "EE"
            Case 7872: NewCh = "EE": Sign = "F"
            Case 7870: NewCh = "EE": Sign = "S"
            Case 7878: NewCh = "EE": Sign = "J"
            Case 7874: NewCh = "EE": Sign = "R"
            Case 7876: NewCh = "EE": Sign = "X"
            Case 236: NewCh = "i": Sign = "f"
            Case 237: NewCh = "i": Sign = "s"
            Case 7883: NewCh = "i": Sign = "j"
            Case 7881: NewCh = "i": Sign = "r"
            Case 297: NewCh = "i": Sign = "x"
            Case 204: NewCh = "I": Sign = "F"
            Case 205: NewCh = "I": Sign = "S"
            Case 7882: NewCh = "I": Sign = "J"
            Case 7880: NewCh = "I": Sign = "R"
            Case 296: NewCh = "I": Sign = "X"
            Case 242: NewCh = "o": Sign = "f"
            Case 243: NewCh = "o": Sign = "s"
            Case 7885: NewCh = "o": Sign = "j"
            Case 7887: NewCh = "o": Sign = "r"
            Case 245: NewCh = "o": Sign = "x"
            Case 417: NewCh = "ow"
            Case 7901: NewCh = "ow": Sign = "f"
            Case 7899: NewCh = "ow": Sign = "s"
            Case 7907: NewCh = "ow": Sign = "j"
            Case 7903: NewCh = "ow": Sign = "r"
            Case 7905: NewCh = "ow": Sign = "x"
            Case 244: NewCh = "oo"
            Case 7891: NewCh = "oo": Sign = "f"
            Case 7889: NewCh = "oo": Sign = "s"
            Case 7897: NewCh = "oo": Sign = "j"
            Case 7893: NewCh = "oo": Sign = "r"
            Case 7895: NewCh = "oo": Sign = "x"
            Case 210: NewCh = "O": Sign = "F"
            Case 211: NewCh = "O": Sign = "S"
            Case 7884: NewCh = "O": Sign = "J"
            Case 7886: NewCh = "O": Sign = "R"
            Case 213: NewCh = "O": Sign = "X"
            Case 416: NewCh = "OW"
            Case 7900: NewCh = "OW": Sign = "F"
            Case 7898: NewCh = "OW": Sign = "S"
            Case 7906: NewCh = "OW": Sign = "J"
            Case 7902: NewCh = "OW": Sign = "R"
            Case 7904: NewCh = "OW": Sign = "X"
            Case 212: NewCh = "OO"
            Case 7890: NewCh = "OO": Sign = "F"
            Case 7888: NewCh = "OO": Sign = "S"
            Case 7896: NewCh = "OO": Sign = "J"
            Case 7892: NewCh = "OO": Sign = "R"
            Case 7894: NewCh = "OO": Sign = "X"
            Case 249: NewCh = "u": Sign = "f"
            Case 250: NewCh = "u": Sign = "s"
            Case 7909: NewCh = "u": Sign = "j"
            Case 7911: NewCh = "u": Sign = "r"
            Case 361: NewCh = "u": Sign = "x"
            Case 432: NewCh = "w"
            Case 7915: NewCh = "w": Sign = "f"
            Case 7913: NewCh = "w": Sign = "s"
            Case 7921: NewCh = "w": Sign = "j"
            Case 7917: NewCh = "w": Sign = "r"
            Case 7919: NewCh = "u": Sign = "x"
            Case 217: NewCh = "U": Sign = "F"
            Case 218: NewCh = "U": Sign = "S"
            Case 7908: NewCh = "U": Sign = "J"
            Case 7910: NewCh = "U": Sign = "R"
            Case 360: NewCh = "U": Sign = "X"
            Case 431: NewCh = "W"
            Case 7914: NewCh = "W": Sign = "F"
            Case 7912: NewCh = "W": Sign = "S"
            Case 7920: NewCh = "W": Sign = "J"
            Case 7916: NewCh = "W": Sign = "R"
            Case 7918: NewCh = "W": Sign = "X"
            Case 7923: NewCh = "y": Sign = "f"
            Case 253: NewCh = "y": Sign = "s"
            Case 7925: NewCh = "y": Sign = "j"
            Case 7927: NewCh = "y": Sign = "r"
            Case 7929: NewCh = "y": Sign = "x"
            Case 7922: NewCh = "Y": Sign = "F"
            Case 221: NewCh = "Y": Sign = "S"
            Case 7924: NewCh = "Y": Sign = "J"
            Case 7926: NewCh = "Y": Sign = "R"
            Case 7928: NewCh = "Y": Sign = "X"
            Case Else: NewCh = ChrW(OldCh)
        End Select
        Word = Word & NewCh
    Next
    word2Telex = Word & Sign
End Function
P/S: tuy hơi dài, nhưng bao chạy tốt.
 
Bạn kiểm tra cái này xem sao
( Nguồn thay thế trong sheet1 )

Cách này của bạn làm bị lỗi hầu hết các chữ bạn à (Font Times New Roman).

đang rảnh làm luôn (dù cũng chẵng hiểu để làm gì)

P/S: tuy hơi dài, nhưng bao chạy tốt.

Cách của bạn mình cho vào Module, Class gọi lên nhưng bị lỗi. Mình không hiểu làm thế nào để chạy thử thành công?
 
Nếu nhìn kỹ đoạn chữ của mình sẽ thấy nhiều lỗi. Lỗi như này đây bạn:


Lỗi do thiếu một vài ký tự như chữ "đ" và các dấu "."; "," ...
Nếu cố định là font Time n roman thì sửa code được.

Với fon khác chắc lập bảng nguồn khác thì hơi lâu
 
Lỗi do thiếu một vài ký tự như chữ "đ" và các dấu "."; "," ...
Nếu cố định là font Time n roman thì sửa code được.

Với fon khác chắc lập bảng nguồn khác thì hơi lâu

Mình copy từ Word sang không hiểu vấn đề gì nên nó bị lỗi, nếu mình đánh tay thì nó lại không lỗi. Giờ mình đã xử lý được rồi, để mình thêm "đ" và các dấu vào xem có được toàn vẹn không.

À bạn cho mình hỏi nếu đoạn văn bản dài quá nó sẽ hiện lỗi: Run-time error '1004': Application-defined or object-defined error. Lỗi dòng: "Sheet2.Range("I4").Resize(UBound(kq), 1) = kq". Mình muốn đoạn văn bản dài khoảng hơn 1 trang Word mà vẫn chuyển đúng thì làm thế nào hả bạn?
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom