Lọc chuỗi khó mong a/c giúp đỡ (1 người xem)

Liên hệ QC

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

huvo1122

Thành viên mới
Tham gia
31/5/19
Bài viết
34
Được thích
3
Đầu xuân năm mới kinh chúc a chị diễn đàn mạnh khỏe -hạnh phúc và thành công
E gặp vấn đề trong việc sắp xếp và lọc chuỗi số mò mãi không được e có ghi chi tiết tropng file đính kèm A/c giúp e với ạ
E cảm ơn nhiều
 

File đính kèm

Mình chỉ có thể thực hiện cho bạn bỡi VBA thôi & nó đây:
PHP:
:
Sub LapDSSoThapPhanKhongTrungTangDan()
Dim Rng As Range, sRng As Range:                                       Const TF As String = ","
Dim Dm As Integer, W As Integer, J As Integer, Num As Double
Dim sNum As String, Tmp As String

Set Rng = [B2].CurrentRegion:                                          W = 1
ReDim Arr(1 To 9+ Rng.Cells.Count, 1 To 1):                           Arr(W, 1) = "KQ"
For J = 0 To 99
    If J Mod 10 > 0 Then
        Num = J / 10:                                                  sNum = CStr(Num)
        If Len(sNum) = 3 Then
            Tmp = Replace(sNum, ".", TF)
            Set sRng = Rng.Find(Tmp, , xlFormulas, xlWhole)
            If Not sRng Is Nothing Then
                W = W + 1:                                              Arr(W, 1) = Tmp
            End If
        End If
    End If
Next J
If W Then
    [H1].Resize(7+ W).Value = Arr()
End If
End Sub
 
Lần chỉnh sửa cuối:
Đầu xuân năm mới kinh chúc a chị diễn đàn mạnh khỏe -hạnh phúc và thành công
E gặp vấn đề trong việc sắp xếp và lọc chuỗi số mò mãi không được e có ghi chi tiết tropng file đính kèm A/c giúp e với ạ
E cảm ơn nhiều
 

File đính kèm

e thử 2 cách mà vẫn báo lỗi ạ. e dùng excel 2016 . nó cứ hiện lỗi NUM...
 
e thử 2 cách mà vẫn báo lỗi ạ. e dùng excel 2016 . nó cứ hiện lỗi NUM...
Do định dạng số thập phân mỗi máy khác nhau nên dùng cách sau:
Mã:
=INDIRECT(TEXT(MOD(AGGREGATE(15,6,COUNTIF(A$1:E$10,"<="&A$1:E$10)*10^6/FIND(",",A$1:E$10)^0+(ROW(A$1:E$10)*1000+COLUMN(A$1:E$10))/(COUNTIF(H$1:H1,A$1:E$10)=0),1),10^6),"R0C000"),0)
 
Do định dạng số thập phân mỗi máy khác nhau nên dùng cách sau:
Mã:
=INDIRECT(TEXT(MOD(AGGREGATE(15,6,COUNTIF(A$1:E$10,"<="&A$1:E$10)*10^6/FIND(",",A$1:E$10)^0+(ROW(A$1:E$10)*1000+COLUMN(A$1:E$10))/(COUNTIF(H$1:H1,A$1:E$10)=0),1),10^6),"R0C000"),0)
Chị ơi chị giúp e lần nữa với ạ. giờ em muốn tính trong bảng đó % xuất hiện của các số thập phân . ví dụ 0.1 xuất hiện 2 lần 2/6*100% = 33% bên cạnh ô KQ ạ
e cảm ơn ạ
 

File đính kèm

Chị ơi chị giúp e lần nữa với ạ. giờ em muốn tính trong bảng đó % xuất hiện của các số thập phân . ví dụ 0.1 xuất hiện 2 lần 2/6*100% = 33% bên cạnh ô KQ ạ
Con số 6 đó bạn lấy đâu ra vậy? :D
PHP:
Option Explicit
Sub LapDSSoThapPhanKhongTrungTangDan_ThemTiLe()
Dim Rng As Range, sRng As Range:                                       Const TF As String = ","
Dim W As Integer, J As Integer, Num As Double, Dm As Integer
Dim sNum As String, Tmp As String, MyAdd As String

Set Rng = [B2].CurrentRegion:                                          W = 1
ReDim Arr(1 To 9 + Rng.Cells.Count, 1 To 2):                          Arr(W, 1) = "K Qua"
Arr(W, 2) = "Sô Lân " & "( /" & Str(Rng.Cells.Count) & " )"
For J = 0 To 99
    If J Mod 10 > 0 Then
        Num = J / 10:                                                  sNum = CStr(Num)
        If Len(sNum) = 3 Then
            Tmp = Replace(sNum, ".", TF)
            Set sRng = Rng.Find(Tmp, , xlFormulas, xlWhole)
            If Not sRng Is Nothing Then
                W = W + 1:                                              Arr(W, 1) = Tmp
                MyAdd = sRng.Address
                Do
                    Dm = Dm + 1
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
                Arr(W, 2) = Dm:                                         Dm = 0
            End If
        End If
    End If
Next J
If W Then
    [H1].Resize(7 + W, 2).Value = Arr()
End If
End Sub
 
Lần chỉnh sửa cuối:
Con số 6 đó bạn lấy đâu ra vậy? :D
PHP:
Option Explicit
Sub LapDSSoThapPhanKhongTrungTangDan_ThemTiLe()
Dim Rng As Range, sRng As Range:                                       Const TF As String = ","
Dim W As Integer, J As Integer, Num As Double, Dm As Integer
Dim sNum As String, Tmp As String, MyAdd As String

Set Rng = [B2].CurrentRegion:                                          W = 1
ReDim Arr(1 To 9 + Rng.Cells.Count, 1 To 2):                          Arr(W, 1) = "K Qua"
Arr(W, 2) = "Sô Lân " & "( /" & Str(Rng.Cells.Count) & " )"
For J = 0 To 99
    If J Mod 10 > 0 Then
        Num = J / 10:                                                  sNum = CStr(Num)
        If Len(sNum) = 3 Then
            Tmp = Replace(sNum, ".", TF)
            Set sRng = Rng.Find(Tmp, , xlFormulas, xlWhole)
            If Not sRng Is Nothing Then
                W = W + 1:                                              Arr(W, 1) = Tmp
                MyAdd = sRng.Address
                Do
                    Dm = Dm + 1
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
                Arr(W, 2) = Dm:                                         Dm = 0
            End If
        End If
    End If
Next J
If W Then
    [H1].Resize(7 + W, 2).Value = Arr()
End If
End Sub
Ý của e là sau khi cho ra ô kết quả e muốn tính % xuất hiện của số đó nếu nó trùng nhau ở 2 cột khác nhau. Mỗi cột từ A-E là tệp dữ liệu riêng. e cảm ơn ạ
Bài đã được tự động gộp:

Ý của e là sau khi cho ra ô kết quả e muốn tính % xuất hiện của số đó nếu nó trùng nhau ở 2 cột khác nhau. Mỗi cột từ A-E là tệp dữ liệu riêng. e cảm ơn ạ
E l
Con số 6 đó bạn lấy đâu ra vậy? :D
PHP:
Option Explicit
Sub LapDSSoThapPhanKhongTrungTangDan_ThemTiLe()
Dim Rng As Range, sRng As Range:                                       Const TF As String = ","
Dim W As Integer, J As Integer, Num As Double, Dm As Integer
Dim sNum As String, Tmp As String, MyAdd As String

Set Rng = [B2].CurrentRegion:                                          W = 1
ReDim Arr(1 To 9 + Rng.Cells.Count, 1 To 2):                          Arr(W, 1) = "K Qua"
Arr(W, 2) = "Sô Lân " & "( /" & Str(Rng.Cells.Count) & " )"
For J = 0 To 99
    If J Mod 10 > 0 Then
        Num = J / 10:                                                  sNum = CStr(Num)
        If Len(sNum) = 3 Then
            Tmp = Replace(sNum, ".", TF)
            Set sRng = Rng.Find(Tmp, , xlFormulas, xlWhole)
            If Not sRng Is Nothing Then
                W = W + 1:                                              Arr(W, 1) = Tmp
                MyAdd = sRng.Address
                Do
                    Dm = Dm + 1
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
                Arr(W, 2) = Dm:                                         Dm = 0
            End If
        End If
    End If
Next J
If W Then
    [H1].Resize(7 + W, 2).Value = Arr()
End If
End Sub
E thử vba mà không đc a ạ
 
Có lẽ do ở máy của bạn các dữ liệu trong bảng ở dạng số; Còn ở máy mình chúng là dạng chuỗi.
 
Chị ơi chị giúp e lần nữa với ạ. giờ em muốn tính trong bảng đó % xuất hiện của các số thập phân . ví dụ 0.1 xuất hiện 2 lần 2/6*100% = 33% bên cạnh ô KQ ạ
e cảm ơn ạ
Cho các ví dụ kết quả lý do sao ra được như vậy?
 

File đính kèm

Lần chỉnh sửa cuối:
C ơi bảng của e tăng thêm 1 số trong chuôi C giúp e bỏ Ô có 2 số đi chỉ lấy 3 số và bỏ trùng với ạ
chị tải file đính kèm giups e vs a
e cảm ơn
Hỏi gì hỏi 1 lần nha bạn ơi:
Mã:
=INDIRECT(TEXT(MOD(AGGREGATE(15,6,COUNTIF(A$1:F$10,"<="&A$1:F$10)*10^6/(LEN(A$1:F$10)=5)+(ROW(A$1:F$10)*1000+COLUMN(A$1:F$10))/(COUNTIF(H$1:H1,A$1:F$10)=0),1),10^6),"R0C000"),0)
 
Hỏi gì hỏi 1 lần nha bạn ơi:
Mã:
=INDIRECT(TEXT(MOD(AGGREGATE(15,6,COUNTIF(A$1:F$10,"<="&A$1:F$10)*10^6/(LEN(A$1:F$10)=5)+(ROW(A$1:F$10)*1000+COLUMN(A$1:F$10))/(COUNTIF(H$1:H1,A$1:F$10)=0),1),10^6),"R0C000"),0)
vâng ạ . C ơi nó báo lỗi #DIV/0! chị giúp e với , +-+-+-++-+-+-+ E đangmới vào thực tập nhiều cái e ko biết mong a/c giúp đỡ e vớiạ
 

File đính kèm

Web KT

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

Back
Top Bottom