Cách nào để tách từ trong chuổi văn bẳn (2 người xem)

Liên hệ QC

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

quanghuy2412

Thành viên mới
Tham gia
2/3/07
Bài viết
4
Được thích
0
Tôi cũng có 1 vấn đề cần giải quyết, xin các bạn giúp.
Ví dụ : Tôi có 1 chuỗi ký tự như sau "NguyễnVănHai" tôi cần tách ra riêng từng từ Nguyễn Văn Hai.
Đặc điểm là các chữ đầu từ đều viết hoa.
Cám ơn các bạn nhiều lắm!!!!
 
quanghuy2412 đã viết:
Tôi cũng có 1 vấn đề cần giải quyết, xin các bạn giúp.
Ví dụ : Tôi có 1 chuỗi ký tự như sau "NguyễnVănHai" tôi cần tách ra riêng từng từ Nguyễn Văn Hai.
Đặc điểm là các chữ đầu từ đều viết hoa.
Cám ơn các bạn nhiều lắm!!!!

Người ta là xuôi không được, bạn lại làm ngược lại. Tài thật.

Bạn xem qua File dưới nhé.

Thân!
 

File đính kèm

Bạn giỏi lắm, nhưng bạn có thể chỉ cho mình cách viết hàm tach() đó không? Rất cám ơn bạn.
 
quanghuy2412 đã viết:
Bạn giỏi lắm, nhưng bạn có thể chỉ cho mình cách viết hàm tach() đó không? Rất cám ơn bạn.

Đây là UDF của mình :

PHP:
Public Function Tach(Str As String, i As Byte) As String
    On Error GoTo Thoat
    Dim n1, n2, m1, m2 As Byte
    Dim Str1 As String
    If Len(Str) > 0 Then
        For m1 = 1 To Len(Str)
            If UCase$(Mid(Str, m1, 1)) = Mid(Str, m1, 1) Then
                m2 = m2 + 1
                If m2 = i Then n1 = m1
                If m2 = i + 1 Then n2 = m1
            End If
        Next
        If n1 > 0 And n2 = 0 Then n2 = m1
        Tach = Mid(Str, n1, n2 - n1)
    Else
        Tach = ""
    End If
Thoat:
End Function

Thân!
 
Quá hay, tôi đang phân vân với mấy chữ như Ẩn, Ủng, ... tóm lại là nguyên âm Unicode tiếng Việt (do hàm Upper(ở) bó tay) nhưng anh Ucase$ của VBA thì xử ngọt!

chỗ này

---> Tach = vbNullString
cho có vẻ "pro học lỏm" một tý được không bác?
 
Mr Okebab đã viết:
Người ta là xuôi không được, bạn lại làm ngược lại. Tài thật.

Bạn xem qua File dưới nhé.

Thân!

"tách tên" của bạ cũng hay đó mình gõ vào "nguyên văn anh" thì nó cho kết quả tách ra B:"nguyễn" D:"văn" F:"anh" ngộ quá
nếu gõ lại: =tach(A1;1) ;=tach(A1;3);=tach(A1;5) thì cho kết quả liền nhau theo từng cột.làm thế nào tên thành một cột, họ thành một cột còn chữ lót chừa khoảng 3 cột ở giửa nếu tên quá dài," thái thị thùy linh"
 
ongtrungducmx25 đã viết:
"tách tên" của bạ cũng hay đó mình gõ vào "nguyên văn anh" thì nó cho kết quả tách ra B:"nguyễn" D:"văn" F:"anh" ngộ quá
nếu gõ lại: =tach(A1;1) ;=tach(A1;3);=tach(A1;5) thì cho kết quả liền nhau theo từng cột.làm thế nào tên thành một cột, họ thành một cột còn chữ lót chừa khoảng 3 cột ở giửa nếu tên quá dài," thái thị thùy linh"

Tất cả mọi code đều được xây dựng nhờ vào qui luật cuẩ sự việc, hiện tượng.
Ở đây, hàm này dựa vào qui luật

Ví dụ : Tôi có 1 chuỗi ký tự như sau "NguyễnVănHai" tôi cần tách ra riêng từng từ Nguyễn Văn Hai.
Đặc điểm là các chữ đầu từ đều viết hoa.
vì thế nếu áp dụng cho trường hợp khác sẽ sai ngay
nguyen văn anh thì tách bình thường bởi Ucase$(" ") = " "
Còn nếu bác muốn tách như bác thì bác hãy tham khảo hàm của em ở phần tách tên họ và lót (em nhớ không nhầm thì bác cũng đã post bài ở đó)

Thân!
 
LearnExcel đã viết:
Quá hay, tôi đang phân vân với mấy chữ như Ẩn, Ủng, ... tóm lại là nguyên âm Unicode tiếng Việt (do hàm Upper(ở) bó tay) nhưng anh Ucase$ của VBA thì xử ngọt!

chỗ này


---> Tach = vbNullString
cho có vẻ "pro học lỏm" một tý được không bác?
Cảm ơn bác, cũng chỉ vì là dân armateur nên thấy những anh nào có chữ vb đầu tiên là hoảng (chỉ sử dụng khi dùng Msg).
Vâng, làm thế thì mới "có vẻ pro" được.

Thân!
 
Thêm một tham khảo nha!

Đã được trích dẫn cũng như đưa file bên dưới!!!

?)/hờ Mod/Smod đi ngang qua xoá dùm bài này!}}}}}
 
Chỉnh sửa lần cuối bởi điều hành viên:
HYen17 đã viết:
Mã:
[B]Function TachChuoi(StrC) As String[/B]
 StrC = StrC & "@"
 Dim iJ As Integer
 For iJ = 1 To 99
    If Mid(StrC, iJ, 1) = "@" Then Exit For
    If UCase$(Mid(StrC, iJ, 1)) = Mid(StrC, iJ, 1) Then
        StrC = Left(StrC, iJ - 1) & " " & Mid(StrC, iJ, 99)
        iJ = iJ + 1
    End If
 Next iJ
 TachChuoi = Mid(StrC, 1, Len(StrC) - 1)
[B]End Function[/B]

chổi của bạn HYen này mình làm theo công thức của bạn thì nó in ra nguyên si không có vẽ gì mà cát chuổi được mà! thank
 
(/ậy là phải chuyển file lên rồi, bạn xem nha!

:=\+ !$@!! ||||| |||||
. . . . . . . . .
 

File đính kèm

TÁCH MỘT CỘT THÀNH NHIỀU CỘT.
Không cần dùng hàm, macro chi cho mệt.
Trong Excel để tách một cột duy nhất của dữ liệu được phân thành nhiều cột, thực hiện như sau:
Đầu tiên chọn cột cần chia tách dữ liệu, từ me nu chọn Data, chọn Text to Columns....như hình.
Làm xuất hiện hộp Corvert Text to Columns Wizard – Step 1 of 3 như hình.
Trong hộp click chọn vào nút Delimited, xong nhấn nút Next, làm xuất hiện hộp Corvert Text to Columns Wizard – Step 2 of 3.
Trong hộp ở mục Delimited, click chọn vào nút Space, xong nhấn nút Next, làm xuất hiện hộp Corvert Text to Columns Wizard – Step 3 of 3.

Xong nhấn vào nút Finish, ta được kết quả.

Lưu ý khi chia tách dữ liệu trong cột:
- Xem từng ô Cell dữ có chứa tất cả bao nhiêu từ.
- Insert (tạo) thêm số cột phía bên phải cột cần tách ứng với số từ ngữ có chứa trong các ô Cell, tốt nhất là dư thêm 1 hoặc 2 cột càng tốt.
- Vì khi chia tách cột thì nó sẽ tự động thay thế (ghi đè lên cột kế bên phải làm mất dữ liệu của cột bên phải).
 
Nếu mình muốn tách tên một danh sách dài thì phải làm sao? Chỉ tách tên thôi
 
Nếu bạn muốn tách tên ở một danh sách dài (ví dụ từ C3 đến C10001) thì bạn chỉ việc click chọn cả cột cần tách, và thực hiện như đã hướng dẫn ở phần trước.
 
Web KT

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

Back
Top Bottom