Lọc dữ liệu có đứng sau dấu "chấm" ntn?

Liên hệ QC

Tunga2k41

Thành viên mới
Tham gia
19/3/08
Bài viết
33
Được thích
0
Em không biết hướng giải quyết vấn đề này như thế nào !!! Mong các bác chỉ giúp em!!!
Cụ thể em muốn lọc dữ liệu trong 1 ô có rất nhiều kí tự, lọc 1 chứ số có đặc điểm là chữ số đó đứng sau dấu "Chấm" ; rồi sắp xếp theo đúng chật tự 0->9, hoặc là cho ra kết quả số lần xuất hiện ... ( Văn em không tốt, mời các bác xem file để hiểu rõ hơn ^^)

Hướng dẫn em thể nhé em gà lắm :D nhớ gửi cho em file Excel nhé

Cám ơn!
 

File đính kèm

  • Giup em vu nay kho qua.xls
    14 KB · Đọc: 34
Lần chỉnh sửa cuối:
Bạn xài hàm mảng tự tạo ni xem sao?

PHP:
Option Explicit
Function TachChuoi(LookUpRange As String)
 ReDim KQua(9):            Const Ch As String = "."
 Dim Num, VTr As Byte
 
 LookUpRange = LookUpRange & "GPE"
 Do
   VTr = InStr(LookUpRange, Ch)
   If VTr < 1 Then
      Exit Do
   Else
      LookUpRange = Mid(LookUpRange, VTr + 1)
      Num = Left(LookUpRange, 1)
      If IsNumeric(Num) Then
         KQua(Num) = KQua(Num) + 1
      End If
   End If
 Loop
 TachChuoi = KQua()
End Function

Hướng dẫn cách dùng:

(*) Dùng chuột chọn các ô từ C3-L3

(*) Nhấp chuột tiếp theo lên thanh công thức & nhập cú pháp: =TachChuoi(A2)

(*) Kết thúc bằng tổ hợp 3 fím dành cho hàm mảng

Chúc thành công
 
Em không biết hướng giải quyết vấn đề này như thế nào !!! Mong các bác chỉ giúp em!!!
Cụ thể em muốn lọc dữ liệu trong 1 ô có rất nhiều kí tự, lọc 1 chứ số có đặc điểm là chữ số đó đứng sau dấu "Chấm" ; rồi sắp xếp theo đúng chật tự 0->9, hoặc là cho ra kết quả số lần xuất hiện ... ( Văn em không tốt, mời các bác xem file để hiểu rõ hơn ^^)

Hướng dẫn em thể nhé em gà lắm :D nhớ gửi cho em file Excel nhé

Cám ơn!

Nếu dữ liệu của bạn có dạng Dấu . + 1 số + 1 chuỗi toàn chữ, có thể dùng hàm sau, dùng như hàm bình thường.

PHP:
Function Dem(Rng As Range, CountVal As Range) As String
    Dim St As String, Ar() As String
    Dim i As Long, Tmp As Long
    Set Temp = CreateObject("VBScript.RegExp")
    Temp.Global = True
    Temp.Pattern = "[^0-9]"
    St = Temp.Replace(Rng, "")
    ReDim Ar(0 To Len(St) - 1)
    For i = 0 To UBound(Ar)
        Ar(i) = Mid(St, i + 1, 1)
    Next i
    For i = 0 To UBound(Ar)
        If Ar(i) = CountVal.Text Then Tmp = Tmp + 1
    Next i
    Dem = IIf(Tmp <> 0, Tmp, "")
End Function
Xem File. Nhớ Enables Macro.
 

File đính kèm

  • Copy of Giup em vu nay kho qua.xls
    26 KB · Đọc: 20
Lần chỉnh sửa cuối:
Em không biết hướng giải quyết vấn đề này như thế nào !!! Mong các bác chỉ giúp em!!!
Cụ thể em muốn lọc dữ liệu trong 1 ô có rất nhiều kí tự, lọc 1 chứ số có đặc điểm là chữ số đó đứng sau dấu "Chấm" ; rồi sắp xếp theo đúng chật tự 0->9, hoặc là cho ra kết quả số lần xuất hiện ... ( Văn em không tốt, mời các bác xem file để hiểu rõ hơn ^^)

Hướng dẫn em thể nhé em gà lắm :D nhớ gửi cho em file Excel nhé

Cám ơn!
Bạn thử dùng công thức này xem (tại cell C2)
PHP:
=IF(ISERROR(FIND(C$1,$A2)),"",(LEN($A2)-LEN(SUBSTITUTE($A2,"."&C$1,"")))/2)
Kéo fill sang phải
 

File đính kèm

  • Timso.xls
    13.5 KB · Đọc: 30
Nếu dữ liệu của bạn có dạng Dấu . + 1 số + 1 chuỗi toàn chữ, có thể dùng hàm sau, dùng như hàm bình thường.

PHP:
Function Dem(Rng As Range, CountVal As Range) As String
    Dim St As String, Ar() As String
    Dim i As Long, Tmp As Long
    Set Temp = CreateObject("VBScript.RegExp")
    Temp.Global = True
    Temp.Pattern = "[^0-9]"
    St = Temp.Replace(Rng, "")
    ReDim Ar(0 To Len(St) - 1)
    For i = 0 To UBound(Ar)
        Ar(i) = Mid(St, i + 1, 1)
    Next i
    For i = 0 To UBound(Ar)
        If Ar(i) = CountVal.Text Then Tmp = Tmp + 1
    Next i
    Dem = IIf(Tmp <> 0, Tmp, "")
End Function
Xem File. Nhớ Enables Macro.
Bài này bạn dùng VBScript.RegExp để tách lấy số có vẽ thừa đấy!
Tôi sửa lại hàm của bạn, chỉ còn vầy:
PHP:
Function Dem(Text As String, FindSt As String) As String
  Dim Pos As Long, Temp
  Pos = InStr(Text, FindSt)
  If Len(FindSt) Then
    Temp = (Len(Text) - Len(Replace(Text, FindSt, ""))) / Len(FindSt)
    Dem = IIf(Pos, Temp, "")
  End If
End Function
Khỏi vòng lập nào luôn!
 
Bài này bạn dùng VBScript.RegExp để tách lấy số có vẽ thừa đấy!
Tôi sửa lại hàm của bạn, chỉ còn vầy:
PHP:
Function Dem(Text As String, FindSt As String) As String
  Dim Pos As Long, Temp
  Pos = InStr(Text, FindSt)
  If Len(FindSt) Then
    Temp = (Len(Text) - Len(Replace(Text, FindSt, ""))) / Len(FindSt)
    Dem = IIf(Pos, Temp, "")
  End If
End Function
Khỏi vòng lập nào luôn!

Đúng là em đã phức tạp hoá vấn đề rồi, em xin phép chỉnh hàm gọn hơn 1 chút.

PHP:
Function Dem(Rng As Range, CountVal As Range) As String
    If InStr(Rng, "." & CountVal) Then
        Dem = (Len(Rng) - Len(Replace(Rng, "." & CountVal, ""))) / 2
    Else: Dem = ""
    End If
End Function
 

File đính kèm

  • Copy of Giup em vu nay kho qua.xls
    26.5 KB · Đọc: 15
Đúng là em đã phức tạp hoá vấn đề rồi, em xin phép chỉnh hàm gọn hơn 1 chút.

PHP:
Function Dem(Rng As Range, CountVal As Range) As String
    If InStr(Rng, "." & CountVal) Then
        Dem = (Len(Rng) - Len(Replace(Rng, "." & CountVal, ""))) / 2
    Else: Dem = ""
    End If
End Function
Nên khai báo biến là String sẽ hay hơn là Range ---> Bạn biết sao không? Vì như thế nó sẽ tổng quát hơn ---> Hàm sẽ có khả năng hoạt động với mọi đối tượng chứ không riêng gì CELL
Ví dụ: Nếu tôi khai báo biến String, tôi có thể dùng với các phần tử trong mãng.. hoặc giả như tôi mang hàm sang Word nó vẫn xài được
-----------
Thêm nữa: Bạn không "rào" trường hợp CountVal = "" sao? ---> Bạn thử công thức =dem($A2,M1) trong file sẽ hiểu liền
 
Lần chỉnh sửa cuối:
Hy vọng tác giả chỉ dùng hàm trong vùng từ 0-9 như trong file thôi. Để cho chắc ăn mình cứ :

PHP:
If ... And CountVal <> "" Then
!$@!!!$@!!!$@!!!$@!!!$@!!
Không thể "Hy vọng" được ---> Đương nhiên khi viết code ta khó có thể bẩy được hết tất cả các lổi... nhưng thà rằng khi dùng, hàm báo lổi còn hơn là ra kết quả sai, đúng không?
 
Bạn thử dùng công thức này xem (tại cell C2)
PHP:
=IF(ISERROR(FIND(C$1,$A2)),"",(LEN($A2)-LEN(SUBSTITUTE($A2,"."&C$1,"")))/2)
Kéo fill sang phải
Hay quá em làm được rồi nè HAHA @$@!^% Cám ơn tất cả các anh !
Có cách này là em tiêu hóa được thui. Macro , VBA gì đó em chưa học đến mà ^^! hihi. Có gì khó em lại lên đây hỏi thăm sức khỏe các anh nhé --=0
 
Web KT
Back
Top Bottom