Tách số Km ra khỏi dữ liệu

Liên hệ QC
Dữ liệu như thế này chắc dùng hàm tự tạo mất
 
để mò thử xem thế nào :D
Em góp vui với hàm tự tạo này
Mã:
Function TachsoBTr(ByVal txt As String) As Single
    Dim J As Long, Str As String
    txt = Replace(txt, ",", ".")
    For J = 1 To Len(txt)
        Select Case Asc(Mid(txt, J, 1))
            Case 40 To 57, 94
                Str = Str & Mid(txt, J, 1)
            Case Else
                Exit For
        End Select
    Next J
    TachsoBTr = Val(Str)
End Function
 

File đính kèm

  • file tách km.xls
    77.5 KB · Đọc: 9
Em góp vui với hàm tự tạo này
Mã:
Function TachsoBTr(ByVal txt As String) As Single
    Dim J As Long, Str As String
    txt = Replace(txt, ",", ".")
    For J = 1 To Len(txt)
        Select Case Asc(Mid(txt, J, 1))
            Case 40 To 57, 94
                Str = Str & Mid(txt, J, 1)
            Case Else
                Exit For
        End Select
    Next J
    TachsoBTr = Val(Str)
End Function
hàm tự tạo này của bác thật tuyệt vời, rất cám ơn bác đã giúp đỡ
 
Bạn xem thử :D
Kết thúc nhấn Ctrl+Shift+Enter nhé.
PHP:
=LEFT(A1,MAX(IFERROR(FIND(ROW($1:$10)-1,LEFT(A1,10)),0)))
Rất cám ơn bác đã hỗ trợ, công thức của bác chạy rất tốt có điều em chưa hiểu lắm về công thức mảng này bác bớt chút thời gian giải thích cho em hiểu với ạ
 
Rất cám ơn bác đã hỗ trợ, công thức của bác chạy rất tốt có điều em chưa hiểu lắm về công thức mảng này bác bớt chút thời gian giải thích cho em hiểu với ạ
Chết thật nhờ bạn hỏi giải thích hàm nên tôi nhận ra là đã sai sót, để tôi làm lại hàm khác:
PHP:
=LEFT(A1,MAX(IF(ISNUMBER(--MID(A1,ROW($1:$10),1)),ROW($1:$10))))
Hàm trên hiểu như sau: tách chuỗi ra 1 mảng dữ liệu liên tục MID(A1,ROW($1:$10),1) ví dụ dòng A1=4.2Km thành {"4",".","2","K","m"}
Tiếp đến -- chuỗi trên nếu là chuỗi số nó sẽ chuyển về số giống hàm Value(), và kết hợp hàm Isnumber thì chuỗi nào là số sẽ ra True ngược lại là False, ta được {True,False,True,False,False}.
Hàm IF(ISNUMBER(--MID(A1,ROW($1:$10),1)),ROW($1:$10)) trả ra kết quả là số liên tiếp nếu là số ra: {1,False,3,False,False}
Hàm Max lấy số lớn nhất: 3 và Left(A1,3) = 4.2..
Bạn thông cảm hơi kém diễn đạt :)
 
Cám ơn bác nhiệt timhd giúp đỡ, về công thức mình biết 1 chút tuy nhiên mình ko rành lắm về công thức mảng rất cám ơn những chia sẻ của bạn
 
Chết thật nhờ bạn hỏi giải thích hàm nên tôi nhận ra là đã sai sót, để tôi làm lại hàm khác:
PHP:
=LEFT(A1,MAX(IF(ISNUMBER(--MID(A1,ROW($1:$10),1)),ROW($1:$10))))
Hàm trên hiểu như sau: tách chuỗi ra 1 mảng dữ liệu liên tục MID(A1,ROW($1:$10),1) ví dụ dòng A1=4.2Km thành {"4",".","2","K","m"}
Tiếp đến -- chuỗi trên nếu là chuỗi số nó sẽ chuyển về số giống hàm Value(), và kết hợp hàm Isnumber thì chuỗi nào là số sẽ ra True ngược lại là False, ta được {True,False,True,False,False}.
Hàm IF(ISNUMBER(--MID(A1,ROW($1:$10),1)),ROW($1:$10)) trả ra kết quả là số liên tiếp nếu là số ra: {1,False,3,False,False}
Hàm Max lấy số lớn nhất: 3 và Left(A1,3) = 4.2..
Bạn thông cảm hơi kém diễn đạt :)
Dữ liệu kiểu này: 1km www.w3schools.com thì công thức.. tèo
Tôi nghĩ công thức bài 8 tốt hơn
 
Web KT
Back
Top Bottom