Trích số mong muốn trong một đoạn text

  • Thread starter Thread starter nam2806
  • Ngày gửi Ngày gửi
Liên hệ QC

nam2806

Thành viên hoạt động
Tham gia
4/12/07
Bài viết
187
Được thích
183
Nhờ ACE trích lấy một số trong đoạn text như file đính kèm.
 

File đính kèm

Lần chỉnh sửa cuối:
Tuyệt. Nhưng còn cách nào ngắn gọn hơn thế không xin chỉ giáo cho em. Thanks
 
Cám ơn thanh_tks.! Đúng ý mình rồi.
 
Nhờ ACE trích lấy một số trong đoạn text như file đính kèm.

Góp vui một cách nữa:
Bạn dùng công thức này tại Ô B2:
PHP:
=1*TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20))
sau đó fill xuống dưới,
 
Nhờ ACE trích lấy một số trong đoạn text như file đính kèm.
Xin góp một hàm tự tạo
Không biết nếu trước số 200 mà là một chuỗi thì có lấy chuỗi đó không, để khoảng trắng hay thông báo chi chi
Trong bài, hàm cho kết quả " khong phai so" nếu trước 200 là chuỗi
 

File đính kèm

Góp vui một cách nữa:
Bạn dùng công thức này tại Ô B2:
PHP:
=1*TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20))
sau đó fill xuống dưới,
Cái hàm này vẫn chưa khử lỗi khi trước số 200 không phải là số!
 
Cái hàm này vẫn chưa khử lỗi khi trước số 200 không phải là số!

Thiết nghĩ, với trình độ như bạn mà phải băn khoăn chuyện đó, hoặc là bỏ 1* hoặc là dùng bẫy lỗi là được thôi mà.
Tôi chỉ quan tâm đên yêu cầu của tác giả
Trích số mong muốn trong một đoạn text

Nhờ ACE trích lấy một số trong đoạn text như file đính kèm.
 
Thiết nghĩ, với trình độ như bạn mà phải băn khoăn chuyện đó, hoặc là bỏ 1* hoặc là dùng bẫy lỗi là được thôi mà.
Tôi chỉ quan tâm đên yêu cầu của tác giả [/INDENT]
Bạn nói rằng là chỉ quan tâm đến yêu cầu của tác giả ?!
Nhưng khi bạn làm công thức thì có thế đâu?!
Dòng đầu tiên bạn bỏ qua
Mình đủ khả năng để làm tiếp, nhưng thiết nghĩ nếu như đã làm thì làm cho trót ai lại bỏ lửng như vậy!
 
Xin góp một hàm tự tạo
Không biết nếu trước số 200 mà là một chuỗi thì có lấy chuỗi đó không, để khoảng trắng hay thông báo chi chi
Trong bài, hàm cho kết quả " khong phai so" nếu trước 200 là chuỗi
Dùng Split cũng hay, nhưng em nghĩ anh cố gắng áp dụng thuật toán của bài 6 vào UDF, như vậy anh sẽ không cần vòng lập
Ngoài ra UDF phải có thêm 1 tham số nữa mới hợp lý, chẳng hạn:
PHP:
Function GetNum(Text As String, Sign As String)
  Dim Temp As String
  Temp = Left(Text, InStr(Text, Sign) - 1)
  Temp = Trim(Replace(Temp, " ", String(Len(Text), " ")))
  Temp = Trim(Right(Temp, Len(Text)))
  GetNum = Val(Temp)
End Function
Với file trên thì hàm sẽ được gõ vào như sau:
=GetNum($A2," 200")
Cell A1 không có số cần tìm sẽ trả về giá trị = 0 ---> Nếu muốn giá trị khác thì cứ IF ÉC gì đó
 
Lần chỉnh sửa cuối:
hàm của anh đat_butmuc chỉ cần dùng bẫy lỗi và thêm hàm value là ok
=IF(ISERROR(VALUE(TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20))))=TRUE,0,VALUE(TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20))))
 
Thấy anh concogia dùng Split, em chợt nghĩ ra 1 cách, cũng dùng Spilt nhưng theo thuật toán khác:
PHP:
Function GetNum(Text As String, Sign As String)
  Dim Temp
  On Error Resume Next
  With WorksheetFunction
    Temp = Split(.Trim(Text), " ")
    GetNum = Val(Temp(.Match(Sign, Temp, 0) - 2))
  End With
End Function
Thuật toán:
- Dùng Split để biến chuổi thành mảng
- Dùng hàm MATCH xác định vị trí của từ khóa
- Với vị trí tìm được, ta xác định số cần tìm chính là phần tử nằm tại vị trí cạnh bên (về phía bên trái)
Phương pháp này xem ra khá chính xác đây!
 

File đính kèm

hàm của anh đat_butmuc chỉ cần dùng bẫy lỗi và thêm hàm value là ok
=IF(ISERROR(VALUE(TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20))))=TRUE,0,VALUE(TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20))))

Làm như bạn Le duy Thuong cũng bẫy lỗi rồi, nhưng có thể ngắn hơn một chút:
PHP:
=IF(ISERROR(1*(TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20)))),0,1*(TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20))))
Hoặc ngắn hơn chút nữa:
PHP:
=IF(ISERROR(--(MID(A2,FIND("200",A2)-2,1))),0,--TRIM(RIGHT(SUBSTITUTE(LEFT(A2,FIND("200",A2)-2)," ",REPT(" ",20)),20)))
 
IF(ISERROR(LOC),"",LOC)
Tuyệt thật, nhưng mình ko hiểu value "LOC" ở đâu (do mình tự đặt hay có sẵn?
 
IF(ISERROR(LOC),"",LOC)
Tuyệt thật, nhưng mình ko hiểu value "LOC" ở đâu (do mình tự đặt hay có sẵn?
=> Là do mình tự đặt cho một mảng, hàm, tổ hợp hàm hay công thức gì gì đó ...
Bạn muốn biết "LOC" thì nhấn tổ hợp phím Ctrl+F3, và nó ở đây là:
PHP:
=MID(Sheet2!$A2,MAX(IF(TAC>=FIND("200",Sheet2!$A2,1),"",TAC)),FIND("200",Sheet2!$A2,1)-MAX(IF(TAC>=FIND("200",Sheet2!$A2,1),"",TAC)))*1
Trong đó có "TAC", là:
PHP:
=IF(MID(" "&Sheet2!$A2,ROW(INDIRECT("1:"&LEN(1&Sheet2!$A2))),1)=" ",ROW(INDIRECT("1:"&LEN(1&Sheet2!$A2))),"")
Đó là công cụ trong Insert -> Name Define
 
Lần chỉnh sửa cuối:
IF(ISERROR(LOC),"",LOC)
Tuyệt thật, nhưng mình ko hiểu value "LOC" ở đâu (do mình tự đặt hay có sẵn?
Không tuyệt như bạn nghĩ đâu!
"LOC" là name đó, bạn nhấn Ctrl +F3 để xem name
Mấy bài sau còn hay hơn đó
Nhất là cái hàm tự tạo của anh Ndu đấy!
 
xin hãy trả lời một vài trong rất nhiều thác mắc giúp tôi! thanks

Tôi là thành viên mới, tôi rất thích excel nhưng lại hiểu biết rất ít, vì vậy tôi vào đay mong đuợc các bạn nhiệt tình giúp đỡ!Tôi không tìm ra mục gởi bài viết mới ở đâu? Khi tôi kích vào tập tin đính kèm và save vào máy nhưng sau đó không mở được ( khi mở ngay cũng không mở được ),hay khi tôi nhấn down các bài excel về máy, biểu tượng xuất hiện trrong máynhưng sau đó phải làm gì để mở được?
 
Web KT

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

Back
Top Bottom