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

  • Thread starter lts
  • Ngày gửi
L

lts

Sơ cấp
13/4/04
32
0
0
#1
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
 
H

HyperVN

<b>Phu hót rác</b>
17/3/03
1,833
14
0
42
Hải Phòng
www.webketoan.vn
#2
ở đây số được định dạng text do đó em muốn tách số ra phải chỉ định vị trí
 
L

lts

Sơ cấp
13/4/04
32
0
0
#3
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
 
nipvnn

nipvnn

www.mintoday.com
23/10/03
362
1
18
24
#4
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
 
cam_to_80

cam_to_80

Nghỉ mất sức !
31/3/04
586
6
18
38
Hà đông
#5
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
 
nipvnn

nipvnn

www.mintoday.com
23/10/03
362
1
18
24
#6
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
 
L

lts

Sơ cấp
13/4/04
32
0
0
#7
Thế thì nói làm gì nhưng em cảm ơn nhiều nhé :thank :thank :thank
 
ketoan4mat

ketoan4mat

Thành viên thân thiết
24/4/03
3,910
14
38
Sài Gòn đẹp lắm
#8
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 !
 
gnurtel

gnurtel

Sơ cấp
#9
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
 
L

lts

Sơ cấp
13/4/04
32
0
0
#11
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
 
C

carot

Sơ cấp
4/3/04
6
0
0
Truy cập trang
#13
Originally posted by lts@Apr 15 2004, 09:58 AM
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
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 đó
 
Q

quocnghia

Sơ cấp
24/3/04
64
0
0
#14
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.
 
C

carot

Sơ cấp
4/3/04
6
0
0
Truy cập trang
#15
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
-----------------------------------------------------------------------------------
 
C

carot

Sơ cấp
4/3/04
6
0
0
Truy cập trang
#16
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
-----------------------------------------------------------------------------------
 
L

lts

Sơ cấp
13/4/04
32
0
0
#17
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
 
C

carot

Sơ cấp
4/3/04
6
0
0
Truy cập trang
#18
Originally posted by lts@Apr 16 2004, 03:31 PM
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
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
 
H

HNdiscovery

Sơ cấp
16/2/04
4
0
0
#19
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
 
C

carot

Sơ cấp
4/3/04
6
0
0
Truy cập trang
#20
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)
 

Thành viên trực tuyến

  • Nguyễn Đức Khiêm
  • tuyet0504
  • pink94
  • Liễu Minh Tâm
  • satthu2032
  • daongocnam0603
  • bienmauhong
  • kenta93
  • Kubinlun
  • Trangtb59



Xem nhiều