Vấn đề chuỗi trong Excel?

Liên hệ QC
Dùng như vầy được không bạn?
PHP:
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.

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?
 
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.
 
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 à.
 
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!
 

File đính kèm

  • Book1.xls
    14.5 KB · Đọc: 20
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.
 
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
 
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.
 
À 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.
 
Lần chỉnh sửa cuố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.
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)
 
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.
 
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...
 
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!!
 
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:
Mã:
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:
Mã:
Khách hàng: =LEFT(A2,4)
Số Ref: =MID(A2,6,100)
 
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)
 
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
 
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
 
Chào các bác,

Happy New Year!
Em có chuỗi như bên dưới, mình có cách nào lấy kí tự cho đến dấu gạch ngang ko? "-"
Em mò mãi mà ko xử lí được với cái này.

Các bác giúp em với nhé!
Em cám ơn!

2135-UQ84-L-16-2-PB
225209-N225-L-16-2
225209-N225-L-16-2-98
..................
 
Chào các bác,

Happy New Year!
Em có chuỗi như bên dưới, mình có cách nào lấy kí tự cho đến dấu gạch ngang ko? "-"
Em mò mãi mà ko xử lí được với cái này.

Các bác giúp em với nhé!
Em cám ơn!

2135-UQ84-L-16-2-PB
225209-N225-L-16-2
225209-N225-L-16-2-98
..................

Hàm Find() tìm vị trí dấu gạch ngang đầu tiên.
Hàm Left(), lấy bên trái chuỗi.
 
Cám ơn thông tin của bạn,

Tuy nhiên với hàm đó mình chỉ lấy được chuỗi từ gạch ngang đầu tiên thôi, thế còn gạch ngang thứ 2, thứ 3 thì sao?

Mình cám ơn nhé
 
Cám ơn thông tin của bạn,

Tuy nhiên với hàm đó mình chỉ lấy được chuỗi từ gạch ngang đầu tiên thôi, thế còn gạch ngang thứ 2, thứ 3 thì sao?

Mình cám ơn nhé

Muốn gì cũng có thể làm được, nhưng phải rõ ràng, không có công thức nào đúng cho tất cả những cái chung chung được.
Ví dụ tìm từ đầu đến dấu gạch đầu tiên? Từ dấu gạch đầu tiên đến dấu gạch thứ hai? Từ đầu đến dấu gạch thứ hai, ba...?
Mỗi yêu cầu mỗi có công thức khác nhau.
 
Web KT
Back
Top Bottom