Giúp tách số ra khỏi chuỗi trong Exell (2 người xem)

Liên hệ QC

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

chichchoe1

Thành viên mới
Tham gia
16/3/12
Bài viết
3
Được thích
0
HI các bác!
Mình có một vấn đề muốn mọi người giúp đỡ !
Mình muốn tách số ra khỏi một chuỗi:
Ví dụ như [TABLE="width: 133"]
[TR]
[TD]ohshoa1256_ccvpc ==> 1256 thì làm như nào? Các bạn giúp mình với nhé!

Thanks![/TD]
[/TR]
[/TABLE]
 
Bạn sử dụng chức năng tìm kiếm của diễn đàn đi, vấn đề này trên GPE đã nói nhiều rồi mà.
 
Thử file đính kèm xem sao bạn.
PHP:
Function tach_lay_so(chuoi As Range)
    Dim i As Long, n As Long
    n = Len(chuoi)
    For i = 1 To n
        If IsNumeric(Mid(chuoi, i, 1)) Then
            so = so & Mid(chuoi, i, 1)
        End If
    Next
    tach_lay_so = so
End Function
Số mà bạn tách ra không phải Number, nó là Text. Định dạng cột đó là General là biết liền, nó nằm bên trái ô.
Ẹc...
 
HI các bác!
Mình có một vấn đề muốn mọi người giúp đỡ !
Mình muốn tách số ra khỏi một chuỗi:
Ví dụ như [TABLE="width: 133"]
[TR]
[TD]ohshoa1256_ccvpc ==> 1256 thì làm như nào? Các bạn giúp mình với nhé!

Thanks![/TD]
[/TR]
[/TABLE]

Hàm trả về kết quả dưới dạng text. Nếu dùng cho tính toán thì dùng Clng(kết quả)
Hoặc bạn sửa hàm để trả về số
Do bạn không miêu tả dữ liệu mà chỉ cho ví dụ nên có thể tôi không "chiều" được theo ý bạn.
Mã:
Function Replace_RegExp(Arr)
Dim objRegExp    As Object
Dim rArr, r As Long, c As Long
    
    Set objRegExp = CreateObject("VBScript.RegExp")
    With objRegExp
        .Pattern = "[^0-9]+"
        .Global = True
        If IsArray(Arr) Then
            rArr = Arr
            For r = 1 To UBound(rArr)
                For c = 1 To UBound(rArr, 2)
                    rArr(r, c) = .replace(rArr(r, c), "")
                Next c
            Next r
            Replace_RegExp = rArr
        Else
            Replace_RegExp = .replace(Arr, "")
        End If
    End With
    Set objRegExp = Nothing
End Function
Cách dùng: Giả sử dữ liệu từ A1 --> A10, kết quả từ B1 --> B10
1.Công thức cho ô B1: =Replace_RegExp(A1) --> kéo xuống tới B10
2. Hoặc chọn B1:B10 rồi gõ công thức =Replace_RegExp(A1:A10) và kết thúc bằng Ctrl + Shift + Enter
 
Số mà bạn tách ra không phải Number, nó là Text. Định dạng cột đó là General là biết liền, nó nằm bên trái ô.
Muốn chuyển kết quả thành số thì chỉ cần sửa chỗ này:
tach_lay_so = so
Thành:
tach_lay_so = Val(so)
Là được:
PHP:
Function tach_lay_so(chuoi As Range)
    Dim i As Long, n As Long
    n = Len(chuoi)
    For i = 1 To n
        If IsNumeric(Mid(chuoi, i, 1)) Then
            so = so & Mid(chuoi, i, 1)
        End If
    Next
    tach_lay_so = Val(so)
End Function
 
Lần chỉnh sửa cuối:
Bạn sử dụng chức năng tìm kiếm của diễn đàn đi, vấn đề này trên GPE đã nói nhiều rồi mà.
Và em nghĩ chắc cũng chỉ sử dụng đến công thức chứ không cần dùng đến VBA, có lẽ bạn ấy chỉ đang nghiên cứu các hàm cơ bản trong excel????
 
Muốn chuyển kết quả thành số thì chỉ cần sửa chỗ này:
tach_lay_so = so
Thành:
tach_lay_so = Val(so)
Là được:
PHP:
Function tach_lay_so(chuoi As Range)
    Dim i As Long, n As Long
    n = Len(chuoi)
    For i = 1 To n
        If IsNumeric(Mid(chuoi, i, 1)) Then
            so = so & Mid(chuoi, i, 1)
        End If
    Next
    tach_lay_so = Val(so)
End Function
Các bạn cho hỏi
Mình đã thử chuyển Code của bạn trchau thành Add In và đã thêm vào phần Add Ins của Office mà khi chạy hàm =tach_lay_so(A1) mà bị báo lỗi #NAME?
Thanks!
 
Web KT

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

Back
Top Bottom