Công thức để Tách chuỗi bắt đầu theo từ khóa bỏ qua 2 dấu cách đầu rồi lấy tới dấu cách

Liên hệ QC

phamvandunghp84

Thành viên thường trực
Tham gia
5/3/20
Bài viết
241
Được thích
12
mình có chuỗi tên mã sản phẩm và số lượng như sau:

vongbi: 13trucmay: 67nhomdinhhinh: 86choithan: 52nhomdinhhinhcaocap: 89

vị trí tên sản phẩm có thể thay đổi

vongbi: 13nhomdinhhinh: 86choithan: 52trucmay: 67nhomdinhhinhcaocap: 89


cần lấy được số 67 là số lượng của mã sản phẩm trucmay: thì phải viết công thức tách chuỗi như nào?
nghĩa là từ khóa cần bắt đầu tìm để tách trong chuỗi là trucmay:
bỏ qua hai dấu cách sau đó lấy tới hết đến dấu cách (hoặc dấu : phía liền sau) rồi bỏ đi phần text chỉ lấy phần số.


mình xin đính kèm file


Cảm ơn các bạn!
 

File đính kèm

  • tach chuoi.xlsx
    9.1 KB · Đọc: 8
Lần chỉnh sửa cuối:
mình có chuỗi tên mã sản phẩm và số lượng như sau:

vongbi: 13trucmay: 67nhomdinhhinh: 86choithan: 52nhomdinhhinhcaocap: 89

vị trí tên sản phẩm có thể thay đổi

vongbi: 13nhomdinhhinh: 86choithan: 52trucmay: 67nhomdinhhinhcaocap: 89


cần lấy được số 67 là số lượng của mã sản phẩm trucmay: thì phải viết công thức tách chuỗi như nào?
nghĩa là từ khóa cần bắt đầu tìm để tách trong chuỗi là trucmay:
bỏ qua hai dấu cách sau đó lấy tới hết đến dấu cách rồi bỏ đi phần text chỉ lấy phần số.

Cảm ơn các bạn!
Bạn phải đưa file có vài chục ô dữ liệu và kết quả muốn có, để mọi người thấy một cách tổng quát, tìm ra quy luật tách chuỗi.
Như giải thích của bạn thì từ khóa cần tìm luôn là "trucmay", số lượng luôn là 2 con số từ 01 đến 99 hay sao?
 
Lần chỉnh sửa cuối:
mình có chuỗi tên mã sản phẩm và số lượng như sau:

vongbi: 13trucmay: 67nhomdinhhinh: 86choithan: 52nhomdinhhinhcaocap: 89

vị trí tên sản phẩm có thể thay đổi

vongbi: 13nhomdinhhinh: 86choithan: 52trucmay: 67nhomdinhhinhcaocap: 89


cần lấy được số 67 là số lượng của mã sản phẩm trucmay: thì phải viết công thức tách chuỗi như nào?
nghĩa là từ khóa cần bắt đầu tìm để tách trong chuỗi là trucmay:
bỏ qua hai dấu cách sau đó lấy tới hết đến dấu cách rồi bỏ đi phần text chỉ lấy phần số.

Cảm ơn các bạn!
Không biết mã sản phẩm của bạn có bao nhiêu chữ số nên viết tổng quát thế này, còn nếu cố định là số có 2 chữ số thì mind(...;find()+9;2)
1614735471406.png
 
Với A1 chứa chuỗi:

=AGGREGATE(14,6,MID(A1,SEARCH("trucmay:",A1)+LEN("trucmay:"),ROW(INDIRECT("1:10")))+0,1)
 
Không biết mã sản phẩm của bạn có bao nhiêu chữ số nên viết tổng quát thế này, còn nếu cố định là số có 2 chữ số thì mind(...;find()+9;2)
View attachment 254744
Cảm ơn bạn! Bạn cho mình hỏi đoạn ROW($A1:$A6) nghĩa là gì nhỉ? có cách nào bỏ chỗ đó đi được không bạn? ( chuỗi gốc chỉ ở mỗi ô B2 thôi. ) thì cần viết lại công thức trên như nào? mình thử trong trường hợp số lượng lớn hơn ví dụ 12 số, 15 số thì phải sửa lại như nào vậy bạn?
 
Lần chỉnh sửa cuối:
Chỗ nào là B14 thì thay bằng B2. Tất cả còn lại giữ nguyên.
bạn ơi mình không hiểu tại sao cần thêm đoạn Row(A1:A6) mình muốn bỏ đoạn đó thì có được không bạn?

=LOOKUP((10^6;--MID(B2;FIND("trucmay: ";B2)+9)))

và trường hợp là số dài thì mình cần sửa như nào mới đúng ạ?

=LOOKUP((10^18;--MID(B2;FIND("trucmay: ";B2)+18)))
 
Bạn phải đưa file có vài chục ô dữ liệu và kết quả muốn có, để mọi người thấy một cách tổng quát, tìm ra quy luật tách chuỗi.
Như giải thích của bạn thì từ khóa cần tìm luôn là "trucmay", số lượng luôn là 2 con số từ 01 đến 99 hay sao?
mình xin đính kèm file bạn xem giúp mình nhé! Cảm ơn bạn!
 
không hiểu tại sao cần thêm đoạn Row(A1:A6)
Mình đọc hướng dẫn sử dụng hàm MID, đọc về cách sử dụng công thức mảng (array formulas) <---- Nắm xong lý thuyết tự động hiểu.

bỏ đoạn đó thì có được không
Khi nào hiểu khúc trên thì tự có câu trả lời.

trường hợp là số dài
Dài hình thù như nào?

----
Tại sao mình cứ hỏi tại sao hoài? Tại sao mình không cứ làm như người ta bảo đi đã, nếu chửa được thì lúc đó mình hỏi tại sao vẫn kịp mà.
Tại sao mình cứ hót hòn họt lên vậy, mình cứ bình tĩnh thôi.
Đọc --- thật --- chậm, và --- làm --- thật --- chậm thôi.
 
bạn ơi mình không hiểu tại sao cần thêm đoạn Row(A1:A6) mình muốn bỏ đoạn đó thì có được không bạn?

=LOOKUP((10^6;--MID(B2;FIND("trucmay: ";B2)+9)))

và trường hợp là số dài thì mình cần sửa như nào mới đúng ạ?

=LOOKUP((10^18;--MID(B2;FIND("trucmay: ";B2)+18)))
Đơn giản nhất là bôi đen từng đoạn nhỏ công thức bấm F9 để xem kết quả sẽ hiểu được mid là cắt chuỗi từ ký tự thứ n, cắt bao ký tự bạn bỏ đoạn Row(A1:A6) thì nó hiểu làm sao được bạn muốn cắt bao nhiêu ký tự. Đoạn FIND("trucmay: ";B2) là tìm vị trí của từ này trong chuỗi lấy từ sau ký tự này "trucmay: " là 9 ký tự nên cộng thêm 9
 
Cách đó áp dụng được khi và chỉ khi đã nắm được công dụng, cách hoạt động của hàm đơn, của công thức nhiều hàm, và của công thức mảng.
Còn chủ thớt rơi vào trường hợp thấy hàm ROW() còn lạ lẫm, hàm MID() chưa rành. Bấm F9 xong thấy dãy số hoa mắt chóng mặt, chưa kể lòi ra cái ký tự vô cùng khó hiểu "{ }".

Và mình cá rằng rất nhiều người giờ còn chưa phân biệt hai từ đơn giản: Hàm và công thức là như thế nào.
 
Cảm ơn bạn! Bạn cho mình hỏi đoạn ROW($A1:$A6) nghĩa là gì nhỉ? có cách nào bỏ chỗ đó đi được không bạn? ( chuỗi gốc chỉ ở mỗi ô B2 thôi. ) thì cần viết lại công thức trên như nào? mình thử trong trường hợp số lượng lớn hơn ví dụ 12 số, 15 số thì phải sửa lại như nào vậy bạn?
Row(A1:A6) là mảng gồm 6 số tự nhiên liên tiếp: 1,2,3,4,5,6 ; tức là đang test từng trường hợp số có 1 tới 6 ký số. Muốn mở rộng ra n ký số thì tăng A6 lên An

Còn phương án của mình tại bài số #4:

=AGGREGATE(14,6,MID(A1,SEARCH("trucmay:",A1)+LEN("trucmay:"),ROW(INDIRECT("1:10")))+0,1)

dùng đến 10 số ("1:10")

Bạn thử xem có ra kết quả không nhé.
 
Bấm F9 xong thấy dãy số hoa mắt chóng mặt
Thấy bạn này đăng nhiều bài rồi nên đoán cũng nắm được kha khá về excel, chắc chỉ rối do mid dùng mảng nên bảo dùng F9 để tìm hiểu dần.
mình xin đính kèm file bạn xem giúp mình nhé!
Vừa xem lại file mới thấy bạn chưa hiểu 671123456789 và 671,123,456,789 khi là ký tự khác nhau nhiều lắm, lần sau không hiểu nên đưa chính xác dữ liệu lên để hỏi không tự ý cắt xén
1614755575259.png
 
Thấy bạn này đăng nhiều bài rồi nên đoán cũng nắm được kha khá về excel, chắc chỉ rối do mid dùng mảng nên bảo dùng F9 để tìm hiểu dần.

Vừa xem lại file mới thấy bạn chưa hiểu 671123456789 và 671,123,456,789 khi là ký tự khác nhau nhiều lắm, lần sau không hiểu nên đưa chính xác dữ liệu lên để hỏi không tự ý cắt xén
View attachment 254770
Bạn ơi cho mình hỏi hình như công thức trên nếu chuỗi cần tách ở một file khác không mở thì công thức trên bị lỗi ?

mình đoán nó lỗi do đoạn này? Row($A$1:$A$20) có cách nào bỏ đi được không bạn ? hoặc sửa lỗi thế nào để không mở file mà công thức không báo lỗi ?
 
mình đoán nó lỗi do đoạn này? Row($A$1:$A$20) có cách nào bỏ đi

Sao mình cứ nhăm nhe cái khúc đó vậy. Khúc đó siêu xịn, siêu ngon, file đóng/ file mở chạy tuốt.

Hàm Find, Mid không xơi được với file không mở. Vậy:
1/ Mình mở file khác đó lên;
2/ Hoặc chép dữ liệu ở file khác đó sang file này (chẳng biết file này là file nào luôn).
 
Sao mình cứ nhăm nhe cái khúc đó vậy. Khúc đó siêu xịn, siêu ngon, file đóng/ file mở chạy tuốt.

Hàm Find, Mid không xơi được với file không mở. Vậy:
1/ Mình mở file khác đó lên;
2/ Hoặc chép dữ liệu ở file khác đó sang file này (chẳng biết file này là file nào luôn).
Bạn ơi có công thức nào giải quyết được yêu cầu tách chuỗi mà không cần phải mở file chứa chuỗi gốc lên không bạn?
công thức này nếu chuỗi ở ô A3 luôn thì chạy rất đúng yêu cầu rồi.

=LOOKUP(10^16;--SUBSTITUTE(MID(A3;FIND("trucmay: ";A3)+9;ROW($A$1:$A$50));",";""))

=LOOKUP(10^16;--SUBSTITUTE(MID(INDEX(Sheet1!A:A;MATCH("chuoi goc";Sheet1!B:B;0));FIND("trucmay: ";INDEX(Sheet1!A:A;MATCH("chuoi goc";Sheet1!B:B;0)))+9;ROW($A$3:$A$50));",";""))

index tới cùng fie thì được nhưng nếu index vào một file không mở thì lại bị lỗi, vậy phải sửa lại công thức nào mới hết lỗi?
mình không hiểu về cái này thật là khó cho mình. mong bạn thông cảm, sửa giúp mình công thức, Cảm ơn bạn !
 
Bạn ơi có công thức nào giải quyết được yêu cầu tách chuỗi mà không cần phải mở file chứa chuỗi gốc lên không bạn?
công thức này nếu chuỗi ở ô A3 luôn thì chạy rất đúng yêu cầu rồi.

=LOOKUP(10^16;--SUBSTITUTE(MID(A3;FIND("trucmay: ";A3)+9;ROW($A$1:$A$50));",";""))

=LOOKUP(10^16;--SUBSTITUTE(MID(INDEX(Sheet1!A:A;MATCH("chuoi goc";Sheet1!B:B;0));FIND("trucmay: ";INDEX(Sheet1!A:A;MATCH("chuoi goc";Sheet1!B:B;0)))+9;ROW($A$3:$A$50));",";""))

index tới cùng fie thì được nhưng nếu index vào một file không mở thì lại bị lỗi, vậy phải sửa lại công thức nào mới hết lỗi?
mình không hiểu về cái này thật là khó cho mình. mong bạn thông cảm, sửa giúp mình công thức, Cảm ơn bạn !
Bạn tạo thêm một sheet phụ để lấy dữ liệu từ file kia sang.
Công thức rất đơn giản ở sheet phụ:
= [File_kia]Sheet1'!A1

Khúc đỏ mình thao tác bằng cách mở file kia lên trước, ở sheet phụ của file này gõ dấu = rồi chỏ chuột sang ô của file kia rồi Enter là được.
 
Bạn tạo thêm một sheet phụ để lấy dữ liệu từ file kia sang.
Công thức rất đơn giản ở sheet phụ:
= [File_kia]Sheet1'!A1

Khúc đỏ mình thao tác bằng cách mở file kia lên trước, ở sheet phụ của file này gõ dấu = rồi chỏ chuột sang ô của file kia rồi Enter là được.
Cảm ơn bạn nhé!
 
Web KT
Back
Top Bottom