Tách số nhà ra khỏi cột địa chỉ trong Excel

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi lts, 14 Tháng tư 2004.

24,509 lượt xem

  1. lts

    lts Thành viên sơ cấp

    Bài viết:
    32
    Đã được thích:
    0
    em muốn tách số nhà ra khỏi địa chỉ trong cùng một ô của excel nhưng không biết làm thế nào. Nhờ các anh chỉ chỉ dùm em vơi.
    VD
    Stt Tên công ty Địa chỉ
    1 Mai hoa 79N Lý Nam Đế
    .........
    :help :help :help
     
    #1
  2. HyperVN

    HyperVN <b>Phu hót rác</b>

    Bài viết:
    1,833
    Đã được thích:
    14
    Nơi ở:
    Hải Phòng
    ở đây số được định dạng text do đó em muốn tách số ra phải chỉ định vị trí
     
    #2
  3. lts

    lts Thành viên sơ cấp

    Bài viết:
    32
    Đã được thích:
    0
    Nhưng vị trí của nó không cố định
    STT Tên côngty địa chỉ
    1 Trần Anh 95 Lý Nam Đế
    2 TSI 235 Bạch Mai
    3 H&T 34A Nguyễn Trãi
    :help :help :thank
     
    #3
  4. nipvnn

    nipvnn www.mintoday.com

    Bài viết:
    362
    Đã được thích:
    1
    Dùng Tích hợp VB có sẵn trong excel có thể giải quyết được việc này ,! :chuoi :chuoi :il
     
    #4
  5. cam_to_80

    cam_to_80 Nghỉ mất sức !

    Bài viết:
    586
    Đã được thích:
    6
    Nơi ở:
    Hà đông
    Anh có thể nói rõ hơn về cách thức này đưoc không, em cũng chưa đựoc rõ lắm
    :thank
     
    #5
  6. nipvnn

    nipvnn www.mintoday.com

    Bài viết:
    362
    Đã được thích:
    1
    Nếu bạn biết về Visual Basic , thì bạn có thể tự creat một chương trình ngoại trú mà trong excel đã hỗ trợ sẵn Visual Basic rồi , nó có thể làm việc rất hiệu quả ! :bia :bia
    Còn nếu không biết về Ngôn ngữ lập trình thì bó tay rồi hiio :eek:k :thank :cool :il
     
    #6
  7. lts

    lts Thành viên sơ cấp

    Bài viết:
    32
    Đã được thích:
    0
    Thế thì nói làm gì nhưng em cảm ơn nhiều nhé :thank :thank :thank
     
    #7
  8. ketoan4mat

    ketoan4mat Thành viên hoạt động

    Bài viết:
    3,910
    Đã được thích:
    18
    Nơi ở:
    Sài Gòn đẹp lắm
    Hay là trong cột địa chỉ bạn tách đôi ra làm 02 cột: cột số nhà và cột tên đường; giữa 2 cột này bạn đừng gạch border, để lúc in ra vẫn thấy bình thường, còn muốn tách số nhà cũng dễ dàng nữa !
     
    #8
  9. gnurtel

    gnurtel Thành viên hoạt động

    Bài viết:
    71
    Đã được thích:
    0
    Nơi ở:
    Hà Nội
    Vấn đề này có thể giải quyết được nếu bạn tìm ra một ký hiệu nào đó để phân biệt giữa tên cty và địa chỉ. Chẳng hạn dấu '-' hoặc địa chỉ bắt đầu là một số ..
    Sau đó bạn tìm vị trí của ký hiệu đó và cut nó ra . Còn nếu không thể phân biệt được thì tôi nghĩ chỉ có cách làm bằng tay thôi chứ chẳng có cách nào làm được đâu
     
    #9
  10. quocnghia

    quocnghia Thành viên hoạt động

    Bài viết:
    64
    Đã được thích:
    0
  11. lts

    lts Thành viên sơ cấp

    Bài viết:
    32
    Đã được thích:
    0
    em cũng biết như thế nhưng tại vì em đã có sẵn 01 file danh sách rồi nhiều dữ liệu lắm không thể đánh lại được, ai biết thì giúp em nhé, em cảm ơn nhiều. :help :help :help :help :help
     
    #11
  12. ketoan4mat

    ketoan4mat Thành viên hoạt động

    Bài viết:
    3,910
    Đã được thích:
    18
    Nơi ở:
    Sài Gòn đẹp lắm
    #12
  13. carot

    carot Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    Chào bạn ITS,

    Nếu cấu trúc của cột của bạn giống thì vấn đề được giải quyết như sau :

    - Bạn cho nó chạy một vòng lặp từ 1 đến độ dài của cột
    - kiểm tra ký tự thứ i (trừ STT) nằm trong khoảng từ 0-9 thì lấy vị trí bắt đầu của số nhà là i và kiểm tra tiếp cho đến khi gặp khoảng trống giả sử là j . . ..

    Hi...hi...!!
    Đến đây thì vấn đề của bạn đã được giải quyết rồi đó
     
    #13
  14. quocnghia

    quocnghia Thành viên hoạt động

    Bài viết:
    64
    Đã được thích:
    0
    Cho mình hỏi, đề của bạn cho là :
    STT Tên côngty địa chỉ
    1 Trần Anh 95 Lý Nam Đế
    2 TSI 235 Bạch Mai
    3 H&T 34A Nguyễn Trãi

    nằm trên cùng một cột, nhiều hàng hay chỉ 01 cell duy nhất.
     
    #14
  15. carot

    carot Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    to Its :
    tôi gủi cho bạn này sử dụng thử nha, nó không phải là giải pháp tốt nhất (bởi vì tôi là một tay nghiệp dư mà) nhưng nó giải quyết được vấn đề của bạn đó.
    Trước hết bạn mở file excel của bạn ra và nhấn Alt-F11
    Sau đó nhấn Insert/Module và dán doạn code vào là ... ok
    Ví dụ :
    Cột A1 của bạn có nội dung là : 1 Nguyễn Văn A 128A Đường số 5
    Bạn muốn cột B1 của bạn là số nhà thì : =xuly(A1,3)
    Bạn muốn cột B1 của bạn là tên đường thì : =xuly(A1,4)

    Còn bác muốn ngắn gọn hay.Hì...hì.......Thì phải nhờ mấy bác đây rồi
    -----------------------------------------------------------------------------------------------
    Public Function kiemtraso(so)
    If so > 0 And so < 9 Then
    kiemtraso = True
    Else
    kiemtraso = False
    End If
    End Function
    Public Function xuly(chuoi, kieuxuat)
    Dim dodai
    Dim stt, tencongty, diachi, tenduong, kytu
    Dim i, j

    i = 3
    dodai = Len(chuoi)
    Do While i < dodai
    kytu = Mid(chuoi, i, 1)
    If kiemtraso(kytu) Then
    j = i
    Do While i < dodai
    kytua = Mid(chuoi, j, 1)
    If kytua = " " Then
    diachi = Mid(chuoi, i, j - i)
    tenduong = Mid(chuoi, j + 1, dodai - j + 1)
    Exit Do
    Else
    j = j + 1
    End If
    Loop
    Exit Do
    Else
    i = i + 1
    End If
    Loop

    If kieuxuat = 3 Then
    xuly = diachi
    ElseIf kieuxuat = 4 Then
    xuly = tenduong
    Else
    xuly = ""
    End If
    End Function
    -----------------------------------------------------------------------------------
     
    #15
  16. carot

    carot Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    Public Function kiemtraso(so)
    If (so >= 0) And (so <= 9) Then
    kiemtraso = True
    Else
    kiemtraso = False
    End If
    End Function
    Public Function xuly(chuoi, kieuxuat)
    Dim dodai
    Dim stt, tencongty, diachi, tenduong, kytu
    Dim i, j

    i = 3
    dodai = Len(chuoi)
    Do While i < dodai
    kytu = Mid(chuoi, i, 1)
    If kiemtraso(kytu) Then
    j = i
    Do While i < dodai
    kytua = Mid(chuoi, j, 1)
    If kytua = " " Then
    diachi = Mid(chuoi, i, j - i)
    tenduong = Mid(chuoi, j + 1, dodai - j + 1)
    Exit Do
    Else
    j = j + 1
    End If
    Loop
    Exit Do
    Else
    i = i + 1
    End If
    Loop

    If kieuxuat = 3 Then
    xuly = diachi
    ElseIf kieuxuat = 4 Then
    xuly = tenduong
    Else
    xuly = ""
    End If
    End Function
    -----------------------------------------------------------------------------------
     
    #16
  17. lts

    lts Thành viên sơ cấp

    Bài viết:
    32
    Đã được thích:
    0
    Carot ơi! em copy phần đó theo dúng hướng dẫn nhưng vẫn không ra kết quả, máy báo là [HASHTAG]#VALUE[/HASHTAG]!. Thế là lỗi ở đâu ạ. FILE dữ liệu của em là 3 cột : STT, Tên công ty, Địa chỉ. Em hơi dốt nhờ giáo viên tận tình với nhé :thank
     
    #17
  18. carot

    carot Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    To Its :
    Có lẽ bạn gặp vấn đề sau đây:
    - bạn sửa giá trị [/B] thành i = 1 (vì tôi hiểu lầm STT trong cùng một cột với địa chỉ)
    - Bạn coi lại chế độ security để ở chế độ Low

    Nếu như bạn giải quyết rồi mà vẫn k đuợc thì mình sẽ gửi 1 cái file đính kèm cho
     
    #18
  19. HNdiscovery

    HNdiscovery Thành viên sơ cấp

    Bài viết:
    4
    Đã được thích:
    0
    Bạn có thể xử lý thủ công như sau:
    Bôi đen toàn cột dữ liệu. Chọn lệnh: Data/Sort/chọn Ascending hoặc Descending cũng được. Excel sẽ sắp xếp tên theo từng nhóm ký tự. sau đó dùng hàm: Left hoặc Right để lấy ký tự mong muốn.
    Ví dụ:
    -----------Cột A----------------------------Cột B----------------------------------Cột C---
    STT Tên côngty địa chỉ ! =left(A1,3) (Kết quả là STT) hoặc !
    1 Trần Anh 95 Lý Nam Đế !=left(A2,10) (Kết quả là 1 Trần Anh)! =right(B2,8)
    2 TSI 235 Bạch Mai ! !(Kết quả là Trần Anh)
    3 H&T 34A Nguyễn Trãi ! !
    Các dòng khác tùy theo độ dài ký tự để chọn thông số thích hợp.
    Hàm tổng quát: =Left (hoặc Right)(Địa chỉ ô, số ký tự cần lấy)
    Chúc thành công! :chuoi :chuoi :chuoi
     
    #19
  20. carot

    carot Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    HNdiscovery

    Cách của bạn chỉ giải quyết được một hai dòng thôi chứ cả ngàn dòng và hơn thế nữa ...Sao mà giải quyết đây

    To Its: Nếu như cột địa chỉ của bạn bao gồm số nhà và tên đường thì hàm sẽ ngắn hơn nhiều (giống như tách tên ra khỏi họ và tên vậy)
     
    #20

Chia sẻ trang này