Tách dữ liệu từ chuỗi text

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Kết quả không chính xác, vì nó chưa kiểm tra 8 ký tự toàn số phải có khoảng trắng ở đầu và cuối.
Công thức trên em đang viết chung cho quy tắc là 8 ký từ số liên tiếp và 3 số đầu là 103, nằm giữa các ký tự không phải số nên nó lấy số đầu tiên đó anh.
 
Còn sót:
103adsfg 103e5 01 0966205678 Confirmed 103:00:0

Thân
Thêm điều kiện len=8 nữa anh.
Mã:
=AGGREGATE(15;6;--TEXT(MID(SUBSTITUTE(A1;" ";REPT(" ";100));ROW($A$1:$A$10)*100-99;100)/(LEN(TRIM(MID(SUBSTITUTE(A1;" ";REPT(" ";100));ROW($A$1:$A$10)*100-99;100)))=8);"[<10300000] ;0");1)
 
Thêm điều kiện len=8 nữa anh.
Mã:
=AGGREGATE(15;6;--TEXT(MID(SUBSTITUTE(A1;" ";REPT(" ";100));ROW($A$1:$A$10)*100-99;100)/(LEN(TRIM(MID(SUBSTITUTE(A1;" ";REPT(" ";100));ROW($A$1:$A$10)*100-99;100)))=8);"[<10300000] ;0");1)
Khà khà..

- Chữ "e" nằm bất kể vị trí, vd: 103456e2
- Sao bỏ biên trên 10399999 rồi! Lỡ vầy "103adsfg 103e5 01 96620567 103:00:0 Confirmed 103:00:0 1 10,345,678" thì sao

/-*+//-*+//-*+/
 
Quay lại chủ đề chút chứ không bị xóa hết. :D
Không có đồ xịn đành chế cháo lại đồ cổ xài tạm.
Mã:
=AGGREGATE(15;6;--TEXT(--MID(SUBSTITUTE(A1;" ";"e0"&REPT(" ";98));ROW($A$1:$A$10)*100-99;100);"[>=104e5] ;[<103e5] ;0");1)
 
Quay lại chủ đề chút chứ không bị xóa hết. :D
Không có đồ xịn đành chế cháo lại đồ cổ xài tạm.
Mã:
=AGGREGATE(15;6;--TEXT(--MID(SUBSTITUTE(A1;" ";"e0"&REPT(" ";98));ROW($A$1:$A$10)*100-99;100);"[>=104e5] ;[<103e5] ;0");1)
Không bị "e" nhưng bị vướng dấu phân cách: phẩy và chấm
'unable to contact 10,365,678.121 07085845678 01z10387868v 10399999'

/-*+//-*+//-*+/
 
Không bị "e" nhưng bị vướng dấu phân cách: phẩy và chấm
'unable to contact 10,365,678.121 07085845678 01z10387868v 10399999'

/-*+//-*+//-*+/
Vậy thì chơi luật rừng, thằng nào ngáng đường xử hết.
Mã:
=AGGREGATE(15;6;--TEXT(--MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;".";"_");",";"_");"e";"_");" ";REPT(" ";100));ROW($A$1:$A$10)*100-99;100);"[>104e5] ;[<103e5] ;0");1)
 
Hi vọng không sai gì nữa bác ạ
Mã:
=AGGREGATE(15,6,--TEXT(MID(A1,FIND(103,A1,ROW($1:$90)),8)/FIND(" "&--MID(A1,FIND(103,A1,ROW($1:$90)),8)&" "," "&A1&" ")^0,"[>=10300000]0;;;"),1)
 

File đính kèm

  • GPE_Tachso.xlsx
    11.4 KB · Đọc: 2
Vậy thì chơi luật rừng, thằng nào ngáng đường xử hết.
Mã:
=AGGREGATE(15;6;--TEXT(--MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1;".";"_");",";"_");"e";"_");" ";REPT(" ";100));ROW($A$1:$A$10)*100-99;100);"[>104e5] ;[<103e5] ;0");1)
Đúng "ý" anh @VetMini rồi!
:clap::clap::clap:

Anh em mình lôi 1 đống "khủng long" cho ảnh cười khoái trá!

Khà khà khà
/-*+//-*+//-*+/
 
Đúng "ý" anh @VetMini rồi!
:clap::clap::clap:

Anh em mình lôi 1 đống "khủng long" cho ảnh cười khoái trá!

Khà khà khà
/-*+//-*+//-*+/
Tôi chỉ thấy trình độ công thức của các bạn đã quá cao. Đây là lúc các bạn cần làm quen với cái nhìn "từ trên xuống". Nhìn được giới hạn tầm vực của yêu cầu.

Chú thích:
"khủng long", theo tinh thần Jurassic Park thì chúng chỉ có một vài nguồn gen lấy ra từ muỗi mòng bị kẹt trong nhựa thông. Xài một thời gian không khéo sẽ bị trùng máu.
365 với tư duy "mảng động", là một nguồn gen mới - có thể cũng từ nhựa thông, có thể thứ khác mà ta chưa biết tới.
Nguồn gen mới nữa là MS tự biết mình, bắt chước theo đường lối Google là cái gì tính mà cần cổ máy nặng quá thì chỉ làm trên phiên bản mạng (lúc đó có thể Excel sẽ tính bằng sức của máy chủ MS). Nếu thấy nó hiệu quả thì họ có thể sẽ tìm cách xải tiến bọ máy Regexp của VBScript (tức là Script Engine). Điển hình của việc này là ba hàm RegexExtract, RegexReplace, và RegexTest (ba cái giao diện chính của VBScript) mà ta thấy được trong phiên bản bêta 365.

Nguồn nữa, khá cần thiết trong tương lai nhưng hiện tại thì các bạn chưa có ý muốn tiến tới. Là hàm Lamda. Hàm này tôi chỉ thấy các bạn dùng cới các hàm tay chân (helpers) của nó chứ chưa thấy dùng thẳng. Phải dùng thẳng mới hiểu rõ từ Lambda trong lĩnh vực IT.
 
Tôi chỉ thấy trình độ công thức của các bạn đã quá cao. Đây là lúc các bạn cần làm quen với cái nhìn "từ trên xuống". Nhìn được giới hạn tầm vực của yêu cầu.

Chú thích:
"khủng long", theo tinh thần Jurassic Park thì chúng chỉ có một vài nguồn gen lấy ra từ muỗi mòng bị kẹt trong nhựa thông. Xài một thời gian không khéo sẽ bị trùng máu.
365 với tư duy "mảng động", là một nguồn gen mới - có thể cũng từ nhựa thông, có thể thứ khác mà ta chưa biết tới.
Nguồn gen mới nữa là MS tự biết mình, bắt chước theo đường lối Google là cái gì tính mà cần cổ máy nặng quá thì chỉ làm trên phiên bản mạng (lúc đó có thể Excel sẽ tính bằng sức của máy chủ MS). Nếu thấy nó hiệu quả thì họ có thể sẽ tìm cách xải tiến bọ máy Regexp của VBScript (tức là Script Engine). Điển hình của việc này là ba hàm RegexExtract, RegexReplace, và RegexTest (ba cái giao diện chính của VBScript) mà ta thấy được trong phiên bản bêta 365.

Nguồn nữa, khá cần thiết trong tương lai nhưng hiện tại thì các bạn chưa có ý muốn tiến tới. Là hàm Lamda. Hàm này tôi chỉ thấy các bạn dùng cới các hàm tay chân (helpers) của nó chứ chưa thấy dùng thẳng. Phải dùng thẳng mới hiểu rõ từ Lambda trong lĩnh vực IT.
Em vẫn đang học theo cách làm hồi quy bằng lambda, như cách của bác và bác Hiệp trước có làm trong 1 bài, mà vẫn chưa thông được.
Mảng thì em tưởng tượng được trong đầu, mà cái hồi quy này khó quá.
 
Em vẫn đang học theo cách làm hồi quy bằng lambda, như cách của bác và bác Hiệp trước có làm trong 1 bài, mà vẫn chưa thông được.
Mảng thì em tưởng tượng được trong đầu, mà cái hồi quy này khó quá.
Bắt buộc phải đường đi phải viết ra giấy chứ đệ quy mà tính trong đầu tôi cũng không làm nổi.
Nhưng đệ quy chỉ là 1 lý do để Lambda thôi. Còn vài lý do khác.
 
Bắt buộc phải đường đi phải viết ra giấy chứ đệ quy mà tính trong đầu tôi cũng không làm nổi.
Nhưng đệ quy chỉ là 1 lý do để Lambda thôi. Còn vài lý do khác.
Dạ, mong bác chia sẻ ạ. Em tìm hiểu vì sở thích, nên mấy cái này hứng thú lắm.
 
Web KT

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

Back
Top Bottom