Tách chuỗi theo loại ngôn ngữ

Liên hệ QC

VuVanHao

Thành viên thường trực
Tham gia
20/6/18
Bài viết
246
Được thích
118
Em có vấn đề như sau, xin nhờ mọi người trong diễn đàn trợ giúp ạ. Em cảm ơn ạ.
Chuỗi cần tách: [A1]Abelmoschi Corolla 黄 蜀 葵 花 306
Sau khi tách:
B1: Abelmoschi Corolla
C1: 黄 蜀 葵 花
D1: 306
 

File đính kèm

  • GPE_H.xlsx
    13.8 KB · Đọc: 9
Gặp tiếng Tây bồi như
sorry anh nha, ok rồi bạn
thì tách thế nào? mầm sao biết là anh hay Việt?
Đó là ví dụ dễ, gặp từ có thể hiểu theo cả hai thì sao?
me vs con.
 
Em có vấn đề như sau, xin nhờ mọi người trong diễn đàn trợ giúp ạ. Em cảm ơn ạ.
Chuỗi cần tách: [A1]Abelmoschi Corolla 黄 蜀 葵 花 306
Sau khi tách:
B1: Abelmoschi Corolla
C1: 黄 蜀 葵 花
D1: 306
Bạn thử xem với Function sau
Mã:
Function ReGexChuoi(aChuoi As String, regexPattern As String) As String

    Dim regExs As Object, Matches As Object, aKetQua As Variant, i As Long

    Set regExs = CreateObject("vbscript.regexp")

    With regExs
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .Pattern = regexPattern
    End With

    If regExs.Test(aChuoi) Then

        Set Matches = regExs.Execute(aChuoi)
        ReDim aKetQua(0 To Matches.Count)

        For i = 0 To Matches.Count - 1
            aKetQua(i) = Matches.Item(i)
        Next i

        ReGexChuoi = Join(aKetQua, " ")
    Else
        ReGexChuoi = "Không co k" & ChrW(7871) & "t qu" & ChrW(7843)
    End If

End Function
 

File đính kèm

  • GPE_H.xlsm
    16.8 KB · Đọc: 27
@VetMini Dạ, cái này thì e chưa nghĩ tới ạ. Dữ liệu của e thì chỉ có dạng Tiếng latinh- Tiếng trung- Số thôi ạ. May mắn là 2 ngôn ngữ ý khác bảng chữ cái ạ
Bài đã được tự động gộp:

@vanaccex Đúng như mình mong muốn rồi. Cám ơn bạn nhiều nhé!
 
Bạn thử xem với Function sau
Mã:
Function ReGexChuoi(aChuoi As String, regexPattern As String) As String

    Dim regExs As Object, Matches As Object, aKetQua As Variant, i As Long

    Set regExs = CreateObject("vbscript.regexp")

    With regExs
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .Pattern = regexPattern
    End With

    If regExs.Test(aChuoi) Then

        Set Matches = regExs.Execute(aChuoi)
        ReDim aKetQua(0 To Matches.Count)

        For i = 0 To Matches.Count - 1
            aKetQua(i) = Matches.Item(i)
        Next i

        ReGexChuoi = Join(aKetQua, " ")
    Else
        ReGexChuoi = "Không co k" & ChrW(7871) & "t qu" & ChrW(7843)
    End If

End Function
Hi hi chị
vanaccex
siêu đẳng quá
 
Em có một list khoảng 2000 dòng có giá trị bất kì. Em đang muốn tách 2000 dòng này thành các dòng khác nhau, trong đó các dòng phải thoả mãn:
- Số lượng kí tự trong 1 ô tối đa là 70 kí tự
- Phải tách thành các ô có nghĩa (VD: Không được tách đôi chữ Nguyễn thành Ngu và yễn thành 2 dòng khác nhau)
- Làm cách nào để có giá trị tương ứng ở cột A với các dòng đã tách ra (VD dòng 2 sau khi tách thì được 3 dòng là 3,4,5 thì cách ô A3, A4, A5 đều có giá trị là ô A2 gốc)
Em cảm ơn mọi người ạ
1578240784067.png

Mọi người cho em hỏi thêm câu nữa ạ, là hàm find có cách nào tìm từ vị trí của một kí tự từ 1 điểm ngược lại đầu không ạ.
Ví dụ: Em muốn tìm từ vị trí 6 về vị trí 1 của đoạn text vị trí của dấu cách đầu tiên xuất hiện.
Em cảm ơn mn ạ
 
@bao1296 Bạn lên nói rõ và có file demo kiểu: Chuỗi cần tách, điều kiện, kết quả sau đó.
- Số lượng kí tự trong 1 ô tối đa là 70 kí tự
- Phải tách thành các ô có nghĩa (VD: Không được tách đôi chữ Nguyễn thành Ngu và yễn thành 2 dòng khác nhau)
Trường hợp đến 70 ký tự mà nó không có nghĩa thì chọn điều kiện nào?
 
Em có một list khoảng 2000 dòng có giá trị bất kì. Em đang muốn tách 2000 dòng này thành các dòng khác nhau, trong đó các dòng phải thoả mãn:
- Số lượng kí tự trong 1 ô tối đa là 70 kí tự
- Phải tách thành các ô có nghĩa (VD: Không được tách đôi chữ Nguyễn thành Ngu và yễn thành 2 dòng khác nhau)
- Làm cách nào để có giá trị tương ứng ở cột A với các dòng đã tách ra (VD dòng 2 sau khi tách thì được 3 dòng là 3,4,5 thì cách ô A3, A4, A5 đều có giá trị là ô A2 gốc)
Em cảm ơn mọi người ạ
....................................................
Mọi người cho em hỏi thêm câu nữa ạ, là hàm find có cách nào tìm từ vị trí của một kí tự từ 1 điểm ngược lại đầu không ạ.
Ví dụ: Em muốn tìm từ vị trí 6 về vị trí 1 của đoạn text vị trí của dấu cách đầu tiên xuất hiện.
Em cảm ơn mn ạ
Góp ý cho bạn:
1/ Bạn nên mở Topic mới để các thành viên trả lời cho bạn được tập trung hơn, Yêu cầu của bạn là "Tách chuổi họ tên" nên không cùng chủ đề với chủ Topic "Tách chuỗi theo loại ngôn ngữ".
2/ Hỏi thì cũng nên đính kèm File có dữ liệu đồng thời có 1 sheet với vài kết quả để người giúp còn hiểu ý bạn thế nào (tách ngay dữ liệu, tách riêng cột khác hay riêng sheet khác).
 
@bao1296 Bạn lên nói rõ và có file demo kiểu: Chuỗi cần tách, điều kiện, kết quả sau đó.
- Số lượng kí tự trong 1 ô tối đa là 70 kí tự
- Phải tách thành các ô có nghĩa (VD: Không được tách đôi chữ Nguyễn thành Ngu và yễn thành 2 dòng khác nhau)
Trường hợp đến 70 ký tự mà nó không có nghĩa thì chọn điều kiện nào?
bạn có thể vào link này giúp mình được không ạ :(
 
Web KT
Back
Top Bottom