PDA

View Full Version : Vấn đề chuỗi trong Excel?



simbat
16-09-06, 11:15 AM
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:

ThanhThao
16-09-06, 11:42 AM
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,... *****

levanduyet
16-09-06, 01:06 PM
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,... *****
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

Đào Việt Cường
16-09-06, 01:48 PM
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ụ! (http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=170&stc=1&d=1158389407)

ThanhThao
16-09-06, 09:40 PM
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. !$@!! !$@!! !$@!!

LearnExcel
13-12-06, 09:43 PM
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

PhanTuHuong
14-12-06, 10:59 PM
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


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ó.

Mr Okebab
15-12-06, 12:05 PM
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ụ! (http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=170&stc=1&d=1158389407)
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.)

Chuotdong
18-12-06, 01:36 PM
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.)
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ý.

Mr Okebab
18-12-06, 02:59 PM
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ý. 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 !

nvson
18-12-06, 05:03 PM
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 ......

Chuotdong
18-12-06, 05:41 PM
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

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)

Mr Okebab
18-12-06, 09:06 PM
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)
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

simbat
20-03-07, 07:48 PM
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 }}}}}

tanshan1
29-06-07, 12:11 AM
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

Nguyễn Duy Tuân
29-06-07, 08:12 AM
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

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

Mr Okebab
29-06-07, 12:05 PM
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

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!

SA_DQ
30-06-07, 10:44 AM
Bạn nghiên cứu & sửa lại các dòng lệnh 13 & 35 í!

Function NumExtract(Rng As Range, Optional TDecimal As Boolean, Optional TNegative As Boolean)

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)

End Function

earth
17-01-09, 04:04 PM
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

Po_Pikachu
17-01-09, 04:18 PM
Dùng như vầy được không bạn?

Function Tachdiachi(diachi As String, Optional Vitri As Byte = 1) As String
' Po_PiKachu
'Vtri = 1: duong ; Vtri = 2: quan ; Vtri = 3: thanh pho
Dim arr() As String
arr() = Split(diachi, ", ")
Tachdiachi = Choose(Vitri, arr(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.

earth
17-01-09, 04:40 PM
Dùng như vầy được không bạn?

Function Tachdiachi(diachi As String, Optional Vitri As Byte = 1) As String
' Po_PiKachu
'Vtri = 1: duong ; Vtri = 2: quan ; Vtri = 3: thanh pho
Dim arr() As String
arr() = Split(diachi, ", ")
Tachdiachi = Choose(Vitri, arr(0), arr(1), arr(UBound(arr)))
End FunctionVí 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.

Trời ơi phức tạp quá, không có công thức nào đơn giản hơn sao bạn?

Po_Pikachu
17-01-09, 04:50 PM
Vậy bạn dùng công thức đi vậy!
Đường =TRIM(LEFT(SUBSTITUTE(A1,", ",REPT(" ",255)),255))
Quận =TRIM(MID(SUBSTITUTE(A1,", ",REPT(" ",255)),255,255))
Thành phố =TRIM(RIGHT(SUBSTITUTE(A1,", ",REPT(" ",255)),255))
Thân.

earth
18-01-09, 03:49 PM
Vậy bạn dùng công thức đi vậy!
Đường =TRIM(LEFT(SUBSTITUTE(A1,", ",REPT(" ",255)),255))
Quận =TRIM(MID(SUBSTITUTE(A1,", ",REPT(" ",255)),255,255))
Thành phố =TRIM(RIGHT(SUBSTITUTE(A1,", ",REPT(" ",255)),255))
Thân.

Công thức của bạn có vấn đề rồi, mình copy vào excel nó toàn báo lỗi không à.

cadafi
18-01-09, 03:55 PM
Công thức của bạn có vấn đề rồi, mình copy vào excel nó toàn báo lỗi không à.

Bạn phải nói rõ "lỗi" là lỗi gì? Theo như yêu cầu của bạn thì ba hàm của Po_Pikachu giải quyết gọn đấy chứ! Xem file đính kèm minh họa nha!

Po_Pikachu
18-01-09, 04:03 PM
Lỗi à!
Có thể trong máy bạn định dạng dấu phân cách (dấu phẩy (,)) thành dấu chấm phẩy rồi. Bạn thử đổi lại như vậy xem.
Đường =TRIM(LEFT(SUBSTITUTE(A1;", ";REPT(" ";255));255))
Quận =TRIM(MID(SUBSTITUTE(A1;", ";REPT(" ";255));255;255))
Thành phố =TRIM(RIGHT(SUBSTITUTE(A1;", ";REPT(" ";255));255))
Và ở đây A1 là ô chứa dữ liệu địa chỉ đó. Nếu không đúng thì bạn phải được file lên chứ!
Thân.

ndu96081631
18-01-09, 04:04 PM
Bạn phải nói rõ "lỗi" là lỗi gì? Theo như yêu cầu của bạn thì ba hàm của Po_Pikachu giải quyết gọn đấy chứ! Xem file đính kèm minh họa nha!
Thay số 255 trong công thức bằng len(A1) là chắc ăn nhất ---> Bất chấp luôn độ dài chuổi

Po_Pikachu
18-01-09, 04:26 PM
Thay số 255 trong công thức bằng len(A1) là chắc ăn nhất ---> Bất chấp luôn độ dài chuổi
À...à...à! Cái này không phải vô định đâu bác à!
Bác thử lại với số này xem kết quả là #VALUE! liền đó.
=TRIM(LEFT(SUBSTITUTE($A$1," ",REPT(" ",1181)),225))=#Value!
Còn nếu dùng riêng thì:
=REPT("-",32768)=#Value!
hàm REPT không bao giờ vượt qua 32,767 ký tự đâu.
Tất cả những gì trong Excel thì bác Bill điều đã tính hết rồi!
Nhưng có 1 điều em chưa hiểu là? Tại sao dùng riêng thì nó lên 32,767, còn kết hợp công thức thì chỉ còn 1,180. Tại sao? Tại sao?+-+-+-+
Thân.

Po_Pikachu
18-01-09, 04:51 PM
À chỉ số number_Times trong REPT(text,number_times) nó có tỷ lệ nghịch với độ dài của đoạn text đó.
Bảng này được lấy ra từ công thức: =TRIM(LEFT(SUBSTITUTE($A$1," ",REPT(" ",1668)),225))
Text (ký tự)|number_Times
1000|828
500|1668
238|3842
Thân.

ndu96081631
18-01-09, 09:41 PM
À...à...à! Cái này không phải vô định đâu bác à!
Bác thử lại với số này xem kết quả là #VALUE! liền đó.
=TRIM(LEFT(SUBSTITUTE($A$1," ",REPT(" ",1181)),225))=#Value!
Còn nếu dùng riêng thì:
=REPT("-",32768)=#Value!
hàm REPT không bao giờ vượt qua 32,767 ký tự đâu.
Tất cả những gì trong Excel thì bác Bill điều đã tính hết rồi!
Nhưng có 1 điều em chưa hiểu là? Tại sao dùng riêng thì nó lên 32,767, còn kết hợp công thức thì chỉ còn 1,180. Tại sao? Tại sao?+-+-+-+
Thân.
Ai da... có lẽ bạn hiểu sai ý mình rồi
Vấn đề Rept(...,255) đã từng tranh luận tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=18316&page=3
Bạn xem ý kiến của Rollover79 và bài cuối cùng tôi cải tiến (dùng hàm Len(...) thay cho 255)

Po_Pikachu
18-01-09, 09:58 PM
Ai da.. bác lại hiểu sai ý em rồi!
hàm Len(Chuoi) thì em nói là vẫn đúng nhưng bác phải xem lại chiều dài của chuỗi đó. Bác có thể dựa vào bảng thống kế trên của em để biết khi chuỗi dài bao nhiêu thì number_times sẽ trả về bao nhiêu ký tự.
Ở đây không phải chuỗi dài bao nhiêu cũng được đâu?

Bất chấp luôn độ dài chuổi
Nếu quá một ngưỡng nào đó thì hàm Rept này sẽ báo lỗi ngay.
Trong ba trường hợp bác dùng (là tìm địa chỉ mail, tách tên, và tách địa chỉ) thì do chiều dài text chưa thật sự dài. Nhưng em cảnh báo trước cứ cái đà này thì chuỗi càng dài sẽ càng nguy hiểm đó. Và mứt độ nguy hiểm cũng sẽ tăng cùng chiều dài chuỗi. Nên mong bác chú ý đến các câu hỏi của các thành viên nếu xét thấy điều kiện xét quá lớn thì nên chú ý lại xem nó có nằm trong vùng phủ sóng không? Kẻo lại mất tính hiệu ngay vào lúc căn thẳng thì mệt....
Chúc bác vui....
Thân.

ndu96081631
18-01-09, 10:02 PM
Ai da.. bác lại hiểu sai ý em rồi!
hàm Len(Chuoi) thì em nói là vẫn đúng nhưng bác phải xem lại chiều dài của chuỗi đó. Bác có thể dựa vào bảng thống kế trên của em để biết khi chuỗi dài bao nhiêu thì number_times sẽ trả về bao nhiêu ký tự.
Ở đây không phải chuỗi dài bao nhiêu cũng được đâu?

Nếu quá một ngưỡng nào đó thì hàm Rept này sẽ báo lỗi ngay.
Trong ba trường hợp bác dùng (là tìm địa chỉ mail, tách tên, và tách địa chỉ) thì do chiều dài text chưa thật sự dài. Nhưng em cảnh báo trước cứ cái đà này thì chuỗi càng dài sẽ càng nguy hiểm đó. Và mứt độ nguy hiểm cũng sẽ tăng cùng chiều dài chuỗi. Nên mong bác chú ý đến các câu hỏi của các thành viên nếu xét thấy điều kiện xét quá lớn thì nên chú ý lại xem nó có nằm trong vùng phủ sóng không? Kẻo lại mất tính hiệu ngay vào lúc căn thẳng thì mệt....
Chúc bác vui....
Thân.
Vâng ạ! Hiểu... Và tôi lại có ý khác khi dùng LEN
- Tiếc kiệm cho bạn (Len(...) có khi < 255)
- Nếu địa chỉ > 255 ký tự thì bạn phải mất công chỉnh số này
Đúng không?
Tất nhiên ai mà gõ 1 chuổi dài tới cở mấy chục ngàn ký tự ... Ẹc... Ẹc...

vubichngoan
10-10-11, 10:35 AM
Mình có dữ liệu thế này chắc chắn là đơn giản với các bác nhưng mà với mình sao mà khó quá mình nghĩ mãi đành bó tay----Mình hơi kém Excell một tí mong mọi người giúp đỡ cho! Vô cùng cảm ơn các bác:
PHAV-11E-15, YMVN-11I-463 đây là cột A1 : Mã hàng
Giờ mình muốn tách thành 2 cột :
Khách hàng B1: PHAV, YMVN
& cột: Số Ref:11E-15, 11I-463 .
Cả nhà giúp cho mình với!!

nghiaphuc
10-10-11, 03:34 PM
Mình có dữ liệu thế này chắc chắn là đơn giản với các bác nhưng mà với mình sao mà khó quá mình nghĩ mãi đành bó tay----Mình hơi kém Excell một tí mong mọi người giúp đỡ cho! Vô cùng cảm ơn các bác:
PHAV-11E-15, YMVN-11I-463 đây là cột A1 : Mã hàng
Giờ mình muốn tách thành 2 cột :
Khách hàng B1: PHAV, YMVN
& cột: Số Ref:11E-15, 11I-463 .
Cả nhà giúp cho mình với!!
Công thức cho hàng 2:

Khách hàng: =LEFT(A2,FIND("-",A2)-1)
Số Ref: =MID(A2,FIND("-",A2)+1,100)
Nếu mã khách hàng luôn là 4 ký tự và số Ref luôn bắt đầu từ ký tự thứ 6 thì bạn dùng công thức này cho khỏe:

Khách hàng: =LEFT(A2,4)
Số Ref: =MID(A2,6,100)

bravery10
31-12-11, 04:11 PM
Vấn đề của bạn trở nên đơn giản nếu có cu pháp chung cho COLUMN1 đó là [tên 1]//[tên 2]//[....]//...
Các chuỗi cần tách đặt cách nhau một ký tự đặc biệt mà nội dung cần tách k chứa nó, dung VBA viết hàm
function LayChuoi (Str as string, Stt as integer) as string
dim array() as variant
asray = Split(Str, "//")
laychuoi = array(i-1)
end function
Ví dụ lây tên 1 vào ô A2 thì viết =laychuoi(A1,1)

khoai_chuot
04-02-12, 10:50 AM
Chào các bạn
Mình mới chuyển công tác về một Trường học và được giao theo dõi thu học phí của học sinh trong Trường. Mình có một danh sách bao gồm cả Họ, họ đệm và tên (như ví dụ dưới đây). Các bạn chỉ giúp mình công thức để tách riêng được Họ, họ đệm, tên của học sinh trong excel nhé. Cảm ơn nhiều.
Bùi Thị An
Nguyễn Thị Hà Anh
Nguyễn Thị Mai Anh
Nguyễn Anh
Nguyễn Tuấn Anh
Trương Thị Tú Anh
Lê Thị Ngọc Ánh
Trần Việt Bắc
Lê Thị Cảnh

hoangminhtien
04-02-12, 11:36 AM
Chào các bạn
Mình mới chuyển công tác về một Trường học và được giao theo dõi thu học phí của học sinh trong Trường. Mình có một danh sách bao gồm cả Họ, họ đệm và tên (như ví dụ dưới đây). Các bạn chỉ giúp mình công thức để tách riêng được Họ, họ đệm, tên của học sinh trong excel nhé. Cảm ơn nhiều.
Bùi Thị An
Nguyễn Thị Hà Anh
Nguyễn Thị Mai Anh
Nguyễn Anh
Nguyễn Tuấn Anh
Trương Thị Tú Anh
Lê Thị Ngọc Ánh
Trần Việt Bắc
Lê Thị Cảnh
Bạn tìm trên diễn đàn với từ khóa "tách họ và tên". trên diễn đàn đã đề cập vấn đề này rất nhiều rồi.
Link cho bạn tham khảo: http://www.google.com.vn/search?domains=www.giaiphapexcel.com&q=t%C3%A1ch+h%E1%BB%8D+v%C3%A0+t%C3%AAn&sitesearch=www.giaiphapexcel.com