Nhờ giúp hàm UDF tách tiếng Nhật, Hàn, Trung Quốc nâng cao

Liên hệ QC

Nguyenhoangphong0902

Đường trần muôn vạn ngã ba.........
Tham gia
27/7/21
Bài viết
56
Được thích
22
Em chào anh chị em có bài tách tiếng nước ngoài, nhưng chỉ tách được trường hợp thông thường. còn trường hợp nâng cao 1 tí là tách không được.
VD: ALT + F10, dấu hỏi cuối câu, dấu chấm cảm.........
Nhờ anh chị giúp em bài này. Em thấy bài này cũng hay hay. Cảm ơn anh chị.
 

File đính kèm

  • tách tiếng Nhật TQ nâng cao.xlsb
    14.5 KB · Đọc: 14
  • tiếng nhật 1.JPG
    tiếng nhật 1.JPG
    69.4 KB · Đọc: 15
  • TN 2.JPG
    TN 2.JPG
    56.8 KB · Đọc: 15
Định nghĩa thế nào là "nâng cao" hả bạn?

Ở xứ kia người ta chào nhau, xin lỗi là có dấu hỏi to tướng vậy hả? Hay nhỉ!


1635302897883.png
 
Upvote 0
Định nghĩa thế nào là "nâng cao" hả bạn?

Ở xứ kia người ta chào nhau, xin lỗi là có dấu hỏi to tướng vậy hả? Hay nhỉ!


View attachment 268375
Em ví dụ thôi bác vì em cũng không biết mấy tiếng này. Nhưng ý của em là dấu hỏi cuối câu, dấu cảm, ALT + F10 là làm không được.
Bài đã được tự động gộp:

Bài này em làm vì Crush của em làm bên ấy, phần vì tò mò, phần vì mai mốt để ai gặp giải quyết được luôn. Em chỉ muốn lấy le thôi mà.............. Khi bác giải được bài này thì người khác gặp là giải được rồi. Một mũi tên bắn rất nhiều đích
 
Lần chỉnh sửa cuối:
Upvote 0
Muốn làm thế này, thế kia thì cứ trình bày cụ thể như vậy, bày đặt nêu "nâng cao" làm gì chứ? Có phải tiết mục giải Toán đâu mà nâng cao nâng thấp.

Mình muốn lấy le thì tự làm thì mới oai chứ, đi nhờ làm sẵn thì chả có gì thú vị.
 
Upvote 0
Em ví dụ thôi bác vì em cũng không biết mấy tiếng này. Nhưng ý của em là dấu hỏi cuối câu, dấu cảm, ALT + F10 là làm không được.
Bài đã được tự động gộp:

Bài này em làm vì Crush của em làm bên ấy, phần vì tò mò, phần vì mai mốt để ai gặp giải quyết được luôn. Em chỉ muốn lấy le thôi mà.............. Khi bác giải được bài này thì người khác gặp là giải được rồi. Một mũi tên bắn rất nhiều đích
Vậy nếu thế kết quả đúng phải là gì? có mấy dấu ? ! vào nữa hả
Mà tốt hơn là đưa số điện thoại cờ rớt cờ roai gì đó cho mình mình giúp trực tiếp cho tiện :D
 
Upvote 0
Em gửi lại kết quả mong muốn ạ. Cảm ơn các bác.
 

File đính kèm

  • KẾT QUẢ MONG MUỐN.JPG
    KẾT QUẢ MONG MUỐN.JPG
    52.1 KB · Đọc: 15
Upvote 0
Muốn làm thế này, thế kia thì cứ trình bày cụ thể như vậy, bày đặt nêu "nâng cao" làm gì chứ? Có phải tiết mục giải Toán đâu mà nâng cao nâng thấp.

Mình muốn lấy le thì tự làm thì mới oai chứ, đi nhờ làm sẵn thì chả có gì thú vị.
Cái này là "rất thấp" chứ đâu có nâng chỗ nào mà cao.

Muốn "cao" thì phải như vầy:
Hi ace <tiếng Hàn>
Thanks all [sic] <tiếng Hàn>
sry (hoặc sorry anh) <tiếng Hàn>

Chú: [sic] có nghĩa là "người ta viết vậy, và tôi cóp nguyên văn vậy". Lỗi chính tả, văn phạm, ngữ pháp thì hỏi tác giả chứ đừng hỏi tôi.

... Một mũi tên bắn rất nhiều đích
Biết rõ được cái đích (*1) là gì rồi hãy nói chuyện bắn.
Ít nhất cũng thấy nó là vịt là cò. Cứ thấy một bầy chim bay là chĩa lên bắn. Lụm về một đống xác quạ cũng ráng vặt lông mà xào?

(*1) chú riêng với mật vụ: từ này tôi viết rõ ràng , tiếng Tây là tá-ghịt nhé. Có bắt bẻ chuyện "nói tục" mà đưa đi côn đảo 1 tháng thì tôi chỉ đành chịu thôi chứ bi giờ đổi thành từ "mục tiêu" thì cũng có thể diễn thành tục.
 
Upvote 0
Mở ra không ngờ code của bài đơn giản thế. Tôi thêm vài dòng như sau
PHP:
Function TachTiengTQ_Han_Nhat(s As String)
    Dim I&, ch As String
    For I = 1 To Len(s)
        ch = Mid(s, I, 1)
        If Abs(AscW(ch)) > 12000 Then
            TachTiengTQ_Han_Nhat = TachTiengTQ_Han_Nhat & ch
        ElseIf I > 1 Then
            ch = Mid(s, I - 1, 1)
            If Abs(AscW(ch)) > 12000 Then TachTiengTQ_Han_Nhat = TachTiengTQ_Han_Nhat & Mid(s, I, 1)
        End If
    Next I
End Function
 
Upvote 0
Liệt kê những ký tự giữ lại rồi đối chiếu ký tự trong chuỗi với danh sách đó.

PHP:
Option Explicit

Function xengxeng(ByVal sText As String)
    Dim listKeepChars As String
    Dim i As Long, s As String
    listKeepChars = ".?!" & VBA.Chr$(10)
    For i = 1 To Len(sText)
        s = VBA.Mid$(sText, i, 1)
        If Not VBA.InStr(1, listKeepChars, s, vbBinaryCompare) > 0 Then
            If VBA.Abs(VBA.AscW(s)) < 12000 Then
                Mid(sText, i, 1) = " "
            End If
        End If
    Next i
    xengxeng = WorksheetFunction.Trim(sText)
End Function
 
Upvote 0
Liệt kê những ký tự giữ lại rồi đối chiếu ký tự trong chuỗi với danh sách đó.

PHP:
Option Explicit

Function xengxeng(ByVal sText As String)
    Dim listKeepChars As String
    Dim i As Long, s As String
    listKeepChars = ".?!" & VBA.Chr$(10)
    For i = 1 To Len(sText)
        s = VBA.Mid$(sText, i, 1)
        If Not VBA.InStr(1, listKeepChars, s, vbBinaryCompare) > 0 Then
            If VBA.Abs(VBA.AscW(s)) < 12000 Then
                Mid(sText, i, 1) = " "
            End If
        End If
    Next i
    xengxeng = WorksheetFunction.Trim(sText)
End Function
Code này mới giải quyết được dấu câu thôi bác. Còn chuyện ALT + Enter chưa giải quyết được, thêm giúp em cái ALT + Enter với, giúp người giúp cho trót. Cảm ơn bác
 
Upvote 0
Liệt kê những ký tự giữ lại rồi đối chiếu ký tự trong chuỗi với danh sách đó.

PHP:
Option Explicit

Function xengxeng(ByVal sText As String)
    Dim listKeepChars As String
    Dim i As Long, s As String
    listKeepChars = ".?!" & VBA.Chr$(10)
    For i = 1 To Len(sText)
        s = VBA.Mid$(sText, i, 1)
        If Not VBA.InStr(1, listKeepChars, s, vbBinaryCompare) > 0 Then
            If VBA.Abs(VBA.AscW(s)) < 12000 Then
                Mid(sText, i, 1) = " "
            End If
        End If
    Next i
    xengxeng = WorksheetFunction.Trim(sText)
End Function
Tách ra làm hai, phải hôn?
Làm luôn hai phần:
Dim a(0 To 1) As String
a(0) = sText
a(1) = sText
...
Mid(a(IIF(VBA.Abs(VBA.AscW(s)) < 12000, 0, 1)), i, 1) = " "
' thay IIF(VBA.Abs(VBA.AscW(s)) < 12000, 0, 1) bằng -CInt(VBA.Abs(VBA.AscW(s)) >= 12000) cũng được
...
xengxeng = ' muốn trả về phần nào hoặc cả hai phần thì cứ tự nhiên.
 
Upvote 0
Web KT

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

Back
Top Bottom