Lớp học GPE tháng 10 - TPHCM: Conditional Formatting và Data Validation (tối 4, 6/10) | Excel cơ bản (tối 9, 11, 13/10) |
Thuần thục các hàm dò tìm (tối 10, 12/10) | Tất tần tật về PivotTable (tối 16, 18, 20/10) |
Tất tần tật về Filter và Advanced Filter (tối 23, 25/10) | Name động và biểu đồ (tối 24, 26, 28/10)

Đăng ký học Khởi đầu cùng Google Spreadsheet - 2 chủ nhật 1 và 8/10 - TPHCM

Đăng ký học Xây dựng ứng dụng Form bằng VBA - 2 chủ nhật 15 và 22/10 - TPHCM

Vấn đề chuỗi trong Excel?

Thảo luận trong 'Cấu trúc dữ liệu Excel và việc Xử lý dữ liệu' bắt đầu bởi simbat, 16 Tháng chín 2006.

  1. simbat

    simbat Thành viên mới

    CAC PAC CHO I KIEN

    EM CO BAI TOAN NHU THE NAY MA NGHI 3 THANG CHUA RA DC
    MONG CAC PAC CHI GIAO-\\/.

    COLUM1
    4 ngach 34 ngo 10B hang ga ha noi
    13 ngo 15 hang than
    Duong tran phu so nha 7 P405 ha noi
    kiot 24 cho 19/2
    2345 de la thanh ha noi
    24 hem 11 thanh xuan ha noi

    +-+-+-+ pác nào giúp em phan loai được cột số nhà ,cột đường ,cột ngõ....hay các thông số khác ,đại khái thêm vài cột nữa bằng các hàm hay marco được không,chứ phân loại bằng tay,em sắp chết rùi *****
    thanks and i love you :-=:clap2:
     
    Lần chỉnh sửa cuối: 16 Tháng chín 2006
  2. ThanhThao

    ThanhThao Thành viên mới

    Tôi thấy vấn đề này rất phức tạp vì dữ liệu đầu vào tùy hứng, không theo quy luật nào cả. Để làm được thì thuật toán tương đối phức tạp, vì phải nhận biết từng đối tượng như số nhà, ngõ, ngách, đường phố, tỉnh,... *****
     
  3. levanduyet

    levanduyet Thành viên danh dự

    Tôi đồng ý với ThanhThao. Chẳng có thuật toán nào để thực hiện theo yêu cầu của bạn. Có chăng chỉ là "giả" mà thôi.

    Lê Văn Duyệt
     
  4. Đào Việt Cường

    Đào Việt Cường Cu Tí sành điệu

    Dear all,
    --------
    Theo em chỉ còn một cách là simbat chịu khó phân tách địa chỉ bởi một dấu hiệu một cách thủ công sau đó lưu lại workbook này dưới dạng *.txt.
    Sử dụng chức năng Data/Import dựa vào dấu hiệu phân tách đó chúng ta sẽ phân chia các thành phần của địa chỉ ra từng cột.
    Kết quả chỉ là tương đối, việc phân chính xác phụ thuộc vào thứ tự các thành phần trong địa chỉ.
    Sau đây là một ví dụ!
     

    Các file đính kèm:

    • Comma.zip
      Kích thước:
      2.7 KB
      Đọc:
      373
  5. ThanhThao

    ThanhThao Thành viên mới

    Theo tôi chỉ có cách là dùng Sub chia tách các đối tượng, mỗi cái vào 1 ô riêng, cơ sở là dựa vào " " giữa các đối tượng. Sau đó thủ công mà liên kết thôi. !$@!! !$@!! !$@!!
     
  6. LearnExcel

    LearnExcel Thành viên thường trực

    Theo tôi, cần biết cấu trúc dữ liệu mà bạn cần là gì:
    So nha - Ngach - Ngo - Hem - Kiot - cho - Pho -Phuong - Quan (Huyen) -Thanhpho ???

    Mỗi cái Tu khóa (VD : So nha ) coi nó là delimiter va gặp delimiter thì lấy dữ liệu ở khoảng giữa
     
  7. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA


    Cái này sắp xếp lộn xộn, ngẫu hứng, nếu theo quy luật thì không khó.
     
  8. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

    Nếu mà có một dấu hiệu nào đó thì thật là đơn giản. Trong bộ công cụ của Excel đã làm được việc này rất tốt (dựa vào một dấu hiệu nào đấy hoặc cắt theo chiều dài - VD cắt 3, 5, 8 : tức là chia thành 3 cột : cột 1 gồm 3 ký tự, cột 2 gồm 2 ký tự tiếp theo, cột 3 gồm 3 ký tự tiếp theo).
    Data->Text to Columns...

    Nhưng dù sao với cách sắp xếp lộn xộn không theo qui luật thì không thể làm được trừ khi làm thủ công. (Lập trình được là do dựa vào qui luật, không có quy luật thì lập trình cũng chịu.)
     
    Lần chỉnh sửa cuối: 15 Tháng mười hai 2006
  9. Chuotdong

    Chuotdong Thành viên thường trực

    Bạn Hiếu nói đúng quá.

    Tôi có vấn đề cũng đơn giản như sau bạn lọc giúp.

    Cơ sở dữ liệu kiểu như sau:
    ..... text, number ..... site:huuhao .... text, number ..... Diachi:1234 ... text, number ...

    Qui luật tôi cần lọc 1 danh sách gồm 2 cột:
    Cột 1: chứa chuỗi kí tự sau "site:" (dấu hiệu kết thúc là dấu cách).
    Cột 2: chứa chuỗi kí tự, hoặc số sau "Diachi:" tương ứng (dấu hiệu kết thúc là dấu cách).

    Còn dữ liệu text, num ... hổ lốn xen kẽ trong đó thì bỏ qua. Xin lỗi sinbat mình chen ngang 1 tý.
     
  10. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

    Như mình đã trình bày, ta hoàn toàn có thể dựa vào công cụ Text to Columns....
    Vì bạn chia một đoạn ra thành 4 đoạn :
    ..... text, number ..... site:huuhao .... text, number ..... Diachi:1234 ... text, number ...
    nên ta phải tách 2 lần. Nhưng vì công cụ có thể chia một lần tối đa thành 6 cột và chỉ có tác dụng với các ký tự sau :

    sks;sd
    asajs_ndss,c
    1. Dấu tab
    2. Dấu Space
    3. Dấu Semicolon ;
    4. Dấu comma ,
    5. Và một ký tự bất kỳ.


    Còn nếu trong đoạn text đã có quá nhiều dấu hiệu trùng thì ta thực hiện 1 tiểu xảo nữa là tiến hành thay thế (Ctrl + H)
    a.Space->))
    b.Semicolon->((
    c.Comma->[[

    ................
    ...... Ví dụ vậy thôi.

    Và thực hiện tiếp một tiểu xảo nữa


    1. Biến site: -> site:+ một dấu hiệu nào đấy trong 5 dấu hiệu trên không trùng với những dấu hiệu trong đoạn text (VN site:;)
    2. Biến Diachi: -> 1 dấu hiệu nào đấy+Diachi: + 1 dấu hiệu nào đấy
    trong 5 dấu hiệu trên không trùng với những dấu hiệu trong đoạn text
    Và cả 3 dấu hiệu này là khác nhau.

    Sau đó ta tiến hành phân cột.
    Nhớ là phaie trả lại các ký tự cũ của nó nếu bạn đã replace (Ctrl +H)
    Quá đơn giản phải không bạn.
    Thân !
     
    Lần chỉnh sửa cuối: 18 Tháng mười hai 2006
  11. nvson

    nvson Geotechnics

    Theo mình thì cách sắp xếp lỗn xộn sẽ khắc phục được nếu đặt một số từ khoá trước (số, ngõ, ngách, đường, phố, quận, huyện,...)
    VD: S 250 đường Đê La Thành quận .....
    Số 250 ngõ 3 ngách 5 đường ......
     
  12. Chuotdong

    Chuotdong Thành viên thường trực

    Cám ơn bạn tôi sẽ nghiên cứu kĩ hơn để áp dụng, nhưng không biết bạn có hiểu lầm không dữ liệu của tôi là một hoặc vài chục trang dạng text chưa được phân đoạn như bạn nghĩ. Có nghĩa là chuỗi :
    ... site:xxx .... text, number ..... Diachi:#### ... text, number site:xxx .... text, number ..... Diachi:#### ... text, numbersite:xxx .... text, number ..... Diachi:#### ... text, number .v.v...

    "text, number" ở đây có thể là bất kì chuỗi kí tự gì kể cả site, Diachi nhưng nếu sau Site không phải là Diachi thì cũng ko phải lọc ra
    và được lặp đi lặp lại gần như vô tận--=0

    Nên tôi chỉ cần "quan sát" các text sau Site và sau Diachi (thống kê tương ứng với nhau)
     
  13. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

    Công cụ Text to Columns chỉ có tác dụng như thế. Nó cứ cắt cả đoạn cho đến dấu hiệu thứ nhất là cột đầu tiên và cứ thế....
    Nhưng nếu nó lộn xộn như bác nói thì mình nghĩ dùng công thức để tách ra cũng được. Hãy thử cho VD xem sao.
    Thân !

    Vậy thì có lẽ Bác phải dùng công thức để cắt
     
  14. simbat

    simbat Thành viên mới

    thanhk

    chu de nay to da gui cach day chung 3 thang rui -+*/
    cam on cac ban
    to hien nay dang dung cach nay:
    VD: chuoi co dang:123(or so nha 123 or so 123)phong 203(or p203) ngo 12 ngach 3 duong tran nhat duat .
    To loc tung cot mot vay ,chai!!
    vi du loc truong so nha :
    to loc tu trai wa phai xet tu dau den cuoi chuoi va xet tung chuoi con trong chuoi lon, chuoi dang xet o day gom 9 chuoi con duoc phan cach nhau bang dau cach(vi cau truc chuoi cua to 95% duoc phan cach nhau bang dau cach)
    * lay chuoi con dau tien nao co chua so.(duoc khoang 70-80%)con lai loc bang tay thu cong --=0
    loc truong ngo ngach hem to cum...:
    * loc cot ngo:
    to cung loc tu trai wa phai cac chuoi con,neu gap chuoi nao chua tu "ngo" se lay gia tri cua chuoi con sau do : chuoi" ngo "la:n thi chuoi sau se la n+1
    .Tuong tu minh se loc dc cac cot ngach,to,hem,khu,cum...
    * loc truong phong :
    to chia ra lam 2 truong hop:
    phong x va px
    va lay cac gia tri tuong tu nhu o tren

    Tren day la cach lam cua to,cac pac cho y kien chi dao nha }}}}}
     
  15. tanshan1

    tanshan1 Thành viên mới

    Help me

    Mình có một ô chứa biểu thức : 2m*5thanh+2m*2thanh*3tru
    Mình muốn ô bên cạnh sẽ là : 2*5+2*2*3=22
    Ai biet chi dum
     
  16. Nguyễn Duy Tuân

    Nguyễn Duy Tuân Nghị Hách

    Cái này phải dùng VBA thôi.
     
  17. Mr Okebab

    Mr Okebab Ngon Ngất Ngây

    Bác tedaynui đã có một bài như thế này.

    Bạn tham khảo nhé.
    http://www.giaiphapexcel.com/forum/showthread.php?t=2579


    Thân!
     
  18. SA_DQ

    SA_DQ Thành viên danh dự

    Bạn xem đoạn Code này & nếu không sửa được sẽ có người giúp tiếp

    Bạn nghiên cứu & sửa lại các dòng lệnh 13 & 35 í!
    Mã:
    [b]Function NumExtract(Rng As Range, Optional TDecimal As Boolean, Optional TNegative As Boolean) [/b]
        
        Dim vVal, iDem As Integer, iJ As Integer, iDai As Integer
        Dim StrC As String, StrNeg As String, StrDec As String, SNum As String
        
        StrC = Rng
        If TDecimal = True And TNegative = True Then
            StrNeg = "-":                   StrDec = "."
        ElseIf TDecimal = True And TNegative = False Then
            StrNeg = vbNullString:          StrDec = "."
        ElseIf TDecimal = False And TNegative = True Then
            StrNeg = "-":                   StrDec = vbNullString
        End If
        iDai = Len(StrC)
        For iDem = iDai To 1 Step -1
            vVal = Mid(StrC, iDem, 1)
            If IsNumeric(vVal) Or vVal = StrNeg Or vVal = StrDec Then
                iJ = iJ + 1
                SNum = Mid(StrC, iDem, 1) & SNum
                If IsNumeric(SNum) Then
                    If CDbl(SNum) < 0 Then Exit For
                Else
    13              SNum = Replace(SNum, Left(SNum, 1), "", , 1)
            End If:                End If
            If iJ = 1 And SNum <> vbNullString Then SNum = CDbl(Mid(SNum, 1, 1))
        Next iDem
    35    NumExtract = CDbl(SNum)
         
    [b]End Function[/b]
     
  19. earth

    earth Thành viên mới

    Vấn đề của mình đơn giản hơn nhưng mình cũng không giải được, nhờ các bạn giúp nhé. Mình muốn tất cả các ký tự sau dấu phẩy cuối cùng được chuyển sang cột mới. VD: 323 Hoàng Văn Thụ, quận Hoàn Kiếm, Hà Nội, Mình muốn chữ Hà Nội được chuyển sang colum mới thì phải làm thế nào. Cảm ơn các bạn
     
  20. Po_Pikachu

    Po_Pikachu Po_pikachu@ymail.com

    Dùng như vầy được không bạn?
    PHP:
    Function Tachdiachi(diachi As StringOptional Vitri As Byte 1) As String
    ' Po_PiKachu
    '
    Vtri 1duong Vtri 2quan Vtri 3thanh pho
        Dim arr
    () As String
        arr
    () = Split(diachi", ")
        
    Tachdiachi Choose(Vitriarr(0), arr(1), arr(UBound(arr)))
    End Function
    Ví dụ ô A1 có dữ liệu như bạn thì các ô các tách như sau:
    Đường =Tachdiachi(A1)
    Quận =Tachdiachi(A1,2)
    Thành phố =Tachdiachi(A1,3)
    Thân.
     

Chia sẻ trang này