HÀM TÁCH CHUỖI (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

trinhvinhtai

Thành viên hoạt động
Tham gia
13/12/16
Bài viết
166
Được thích
5
chào mọi người,

giúp em 1 công thức mới. như bên dưới với ạ.

nếu e dùng =LEFT(C2,SEARCH("-",C2,1)-1) em dùng cái này thi nó hiểu cái "-" đầu tiên không hiểu nếu dữ liệu có 2"-" có thể nào công thức hiểu nếu 2"-" thì cắt dữ liệu ờ gạch "-" thứ 2. em cam ơn
du lieuket qua 1
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
 
chào mọi người,

giúp em 1 công thức mới. như bên dưới với ạ.

nếu e dùng =LEFT(C2,SEARCH("-",C2,1)-1) em dùng cái này thi nó hiểu cái "-" đầu tiên không hiểu nếu dữ liệu có 2"-" có thể nào công thức hiểu nếu 2"-" thì cắt dữ liệu ờ gạch "-" thứ 2. em cam ơn
du lieuket qua 1
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
ý nghĩ có hạn mình chỉ làm tới đây thôi.
=LEFT(A1,LEN(A1)-LEN(RIGHT(A1,3)))
 
Thử
Mã:
=IF(LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))>1,LEFT(A2,FIND("|",SUBSTITUTE(A2,"-","|",2)) - 1),A2)
anh ơi công thức này áp dụng cho trường hợp có 2 "-" còn trường hợp có 1"-" thì không được
Bài đã được tự động gộp:

ý nghĩ có hạn mình chỉ làm tới đây thôi.
=LEFT(A1,LEN(A1)-LEN(RIGHT(A1,3)))
ĐÚNG Ý E RỒI CAM ƠN NHÉ A
 
Nếu là loại bỏ những ký tự sau dấu "-" cuói cùng thì có thể dùng phương pháp tách chuỗi lấy phần cuối ấy. Sau đó lấy Left trừ đi độ dài phần cuối.
(ý giống như bài #3, chỉ không bị giới hạn số ký tự của phần cuối)
 
Nếu là loại bỏ những ký tự sau dấu "-" cuói cùng thì có thể dùng phương pháp tách chuỗi lấy phần cuối ấy. Sau đó lấy Left trừ đi độ dài phần cuối.
(ý giống như bài #3, chỉ không bị giới hạn số ký tự của phần cuối)
đúng nhé a. vẫn chưa đúng ví dụ 01/19FA2-002 thì nó cắt 01/19FA2- dư dấu -. a có giải pháp gì mới không
Bài đã được tự động gộp:

ý nghĩ có hạn mình chỉ làm tới đây thôi.
=LEFT(A1,LEN(A1)-LEN(RIGHT(A1,3)))
vẫn chưa đúng ví dụ 01/19FA2-002 thì nó cắt 01/19FA2- dư dấu -. a có giải pháp gì mới không
 
đúng nhé a. vẫn chưa đúng ví dụ 01/19FA2-002 thì nó cắt 01/19FA2- dư dấu -. a có giải pháp gì mới không
Bài đã được tự động gộp:


vẫn chưa đúng ví dụ 01/19FA2-002 thì nó cắt 01/19FA2- dư dấu -. a có giải pháp gì mới không
Bạn thử:
=LEFT(A1,SEARCH("-",A1,1)-1)
 
đúng nhé a. vẫn chưa đúng ví dụ 01/19FA2-002 thì nó cắt 01/19FA2- dư dấu -. a có giải pháp gì mới không
...
Bạn hỏi người ta thì tránh viết tắt. Tôi tập trung 100% não của tôi vào việc giải bài rồi, không còn dư một phần trăm nào để đoán mấy từ vết tắt.
 
Bạn thử:
=LEFT(A1,SEARCH("-",A1,1)-1)
VẪN CHƯA ĐÚNG BẠN AK. MÌNH CẦN THỎA MÃN 3 ĐIỀN KIỆN DƯỚI
Du lieuket qua
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
01/20/UV-00101/20/UV
Bài đã được tự động gộp:

Bạn hỏi người ta thì tránh viết tắt. Tôi tập trung 100% não của tôi vào việc giải bài rồi, không còn dư một phần trăm nào để đoán mấy từ vết tắt.
EM CẦN THỎA MÃN 3 ĐIỀN KIỆN DƯỚI NHÉ ANH
Du lieuket qua
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
01/20/UV-00101/20/UV
 
=LEFT($A2, LEN($A2)-1-LEN(TRIM(RIGHT(SUBSTITUTE($A2,"-", REPT(" ", 50)), 50))))

Tôi chỉ giới thiệu thuật toán 1 lần thôi. Đọc bài của thớt mỏi mắt quá.
 
VẪN CHƯA ĐÚNG BẠN AK. MÌNH CẦN THỎA MÃN 3 ĐIỀN KIỆN DƯỚI
Du lieuket qua
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
01/20/UV-00101/20/UV
Bài đã được tự động gộp:


EM CẦN THỎA MÃN 3 ĐIỀN KIỆN DƯỚI NHÉ ANH
Du lieuket qua
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
01/20/UV-00101/20/UV
Bạn thử công thức này:
=LEFT(A1,LOOKUP(100,FIND("-",A1,ROW($1:$100)))-1)
 
Bạn thử:
=LEFT(A1,SEARCH("-",A1,1)-1)
VẪN CHƯA ĐÚNG BẠN AK. MÌNH CẦN THỎA MÃN 3 ĐIỀN KIỆN DƯỚI
Du lieuket qua
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
01/20/UV-00101/20/UV
Bài đã được tự động gộp:


EM CẦN THỎA MÃN 3 ĐIỀN KIỆN DƯỚI NHÉ ANH
Du lieuket qua
01/19DY-0501/19DY
01/2019-HF-0101/2019-HF
01/20/UV-00101/20/UV
Tức là bỏ dấu "-" cuối cùng và các ký tự phía sau, vậy thì:
=LEFT(A1,FIND("@",SUBSTITUTE(A1,"-","@",(LEN(A1)-LEN(SUBSTITUTE(A1,"-","")))/LEN("-")))-1)
 
Lần chỉnh sửa cuối:
Bạn thử công thức này:
=LEFT(A1,LOOKUP(100,FIND("-",A1,ROW($1:$100)))-1)
Công thức độc đáo. Tôi có cảm tưởng là công thức này có thể nới thêm ra để chỉ thẳng vào dấu "-" thứ nth (1st, 2nd, 3rd,...), thay vì dấu cuối cùng.
Bạn có thể nới thêm?
 
Do chủ Topic hỏi không cụ thể, rõ ràng. Vì vậy, để hiểu rỏ hơn các bạn tải File trong bài viết ở Link sau: Hàm đếm tăng dần theo điều kiện , có xem File thì mới hiểu hết ý định của chủ Topic.
 
Công thức độc đáo. Tôi có cảm tưởng là công thức này có thể nới thêm ra để chỉ thẳng vào dấu "-" thứ nth (1st, 2nd, 3rd,...), thay vì dấu cuối cùng.
Bạn có thể nới thêm?
Xác định dấu cuối cùng còn thêm cách là FIND kết hợp SUBSTITUTE: =LOOKUP("ZZ",LEFT(A1,FIND("@",SUBSTITUTE(A1,"-","@",ROW(1:100)))-1)), tôi dùng FIND vì ngắn hơn. Còn nếu xác định vị trí n thì dùng FIND kết hợp SUBSTITUTE sẽ ngắn hơn: LEFT(A1,FIND("@",SUBSTITUTE(A1,"-","@",n))-1)
 
Xác định dấu cuối cùng còn thêm cách là FIND kết hợp SUBSTITUTE: =LOOKUP("ZZ",LEFT(A1,FIND("@",SUBSTITUTE(A1,"-","@",ROW(1:100)))-1)), tôi dùng FIND vì ngắn hơn. Còn nếu xác định vị trí n thì dùng FIND kết hợp SUBSTITUTE sẽ ngắn hơn: LEFT(A1,FIND("@",SUBSTITUTE(A1,"-","@",n))-1)
Xin lỗi. Có lẽ tôi vắn tắt quá. Để giải thích lại.
Ý định chính thức là:
FIND("-","a-b-c-de-01-02",ROW($1:$100))) trả về mảng { 2, 2, 4, 4, 6, 6, 9, 9, 9, 12, 12, 12, #NA, ... }
làm cách nào [index-kiểu-gì-đó](mảng, 1) -> 2; [index-kiểu-gì-đó](mảng, 4) -> 9 ?

Nhưng mà thôi, không quan trọng lắm. Biết cũng chả thấy ứng dụng chỗ nào.
 
Xin lỗi. Có lẽ tôi vắn tắt quá. Để giải thích lại.
Ý định chính thức là:
FIND("-","a-b-c-de-01-02",ROW($1:$100))) trả về mảng { 2, 2, 4, 4, 6, 6, 9, 9, 9, 12, 12, 12, #NA, ... }
làm cách nào [index-kiểu-gì-đó](mảng, 1) -> 2; [index-kiểu-gì-đó](mảng, 4) -> 9 ?

Nhưng mà thôi, không quan trọng lắm. Biết cũng chả thấy ứng dụng chỗ nào.
Như tôi nói ở trên tìm vị trí n thì FIND kết hợp SUBSTITUTE sẽ ngắn hơn, còn vẫn muốn dựa trên mảng do FIND tạo thì vẫn sẽ xác định được nhưng công thức sẽ dài hơn: LEFT(A1,AGGREGATE(15,6,MATCH(ROW($1:$100),FIND("-",A1&"-",ROW($1:$100)),),n+1)-2)
 
Như tôi nói ở trên tìm vị trí n thì FIND kết hợp SUBSTITUTE sẽ ngắn hơn, còn vẫn muốn dựa trên mảng do FIND tạo thì vẫn sẽ xác định được nhưng công thức sẽ dài hơn: LEFT(A1,AGGREGATE(15,6,MATCH(ROW($1:$100),FIND("-",A1&"-",ROW($1:$100)),),n+1)-2)
Cảm ơn. Chủ ý của tôi là tìm cách "trim" một cái mảng. Có lẽ lạc đề hơi xa.
 
Thật sự chưa hiểu ý bạn, bạn muốn không biến đổi mảng vẫn ra được kết quả hay sao.
Biến đổi hay không không thành vấn đề.
Vốn là tôi chỉ thắc mắc có cách nào để xem mảng { 2, 2, 4, 4, 6, 6, 9, 9, 9, 12, 12, 12 } như là { 2, 4, 6, 9, 12 } hay không thôi.
Nhưng mà sau đó thì tôi ngẫm lại mất công mà chả thực dụng chút nào, cho nên thôi.
 
Biến đổi hay không không thành vấn đề.
Vốn là tôi chỉ thắc mắc có cách nào để xem mảng { 2, 2, 4, 4, 6, 6, 9, 9, 9, 12, 12, 12 } như là { 2, 4, 6, 9, 12 } hay không thôi.
Nhưng mà sau đó thì tôi ngẫm lại mất công mà chả thực dụng chút nào, cho nên thôi.
Ý bạn là từ một mảng gom thành một mảng không trùng, vẫn làm được : AGGREGATE(15,6,IF(TRANSPOSE(ROW(1:x))=MATCH(mang, mang,),mang),ROW(1:x)), tùy mảng bạn nạp vào là ngang hay dọc, mà thêm transpose vào. Nếu mảng 2 chiều thì dùng FREQUENCY
 
Hồi xưa, có một lần tôi cần tìm đại khái là giá trị nhỏ (tuyệt đối) thứ 3 trong mảng { 2, 2, 4, 4, 6, 6, 9, 9, 9, 12, 12, 12 }. Tức là giá trị 6.
Hàm Small cho tôi số 4 (chính xác theo cái nhìn xếp hạng, tức là đứng sau 2 số 2's).
Bây giờ quên mất là hồi đó làm cách nào. Nhưng tôi nhớ là lúc ấy chưa có hàm Aggregate.
 
Hồi xưa, có một lần tôi cần tìm đại khái là giá trị nhỏ (tuyệt đối) thứ 3 trong mảng { 2, 2, 4, 4, 6, 6, 9, 9, 9, 12, 12, 12 }. Tức là giá trị 6.
Hàm Small cho tôi số 4 (chính xác theo cái nhìn xếp hạng, tức là đứng sau 2 số 2's).
Bây giờ quên mất là hồi đó làm cách nào. Nhưng tôi nhớ là lúc ấy chưa có hàm Aggregate.
Do tôi quen tay thôi bạn, dùng Small thì phải thêm IFerror để bẫy giá trị lỗi, Aggregate thì không cần chứ 2 cách như nhau cả, hên xui thì dùng Aggregate không cần bấm Ctrl+Shift+Enter, xử lý trên mảng thì hơi khó, nếu ngoài bảng tính excel thì dễ hơn.
 

Bài viết mới nhất

Back
Top Bottom