Tìm số bị thiếu từ giá trị (nguyên dương) min đến giá trị max.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

hungndcbq1

phonglan
Tham gia
1/4/19
Bài viết
61
Được thích
7
Giới tính
Nam
Trong vùng n đến dd phải có số chạy từ giá trị (nguyên dương) từ min đến giá trị max, nếu không như vây là bị thiếu, ví dụ hàng 11 thiếu số 33. Làm sao để tìm được số 33 trên ạ? Em cảm ơn ạ!
 

File đính kèm

Nhiều chủ đề quá không tốt.
Mã:
https://www.giaiphapexcel.com/diendan/threads/d%C3%B2-t%C3%ACm-c%C3%B3-%C4%91i%E1%BB%81u-ki%E1%BB%87n.163993/
 
Mình xin hướng dẫn chủ bài đăng các bước thực hiện bỡi VBA, nha:
B1: Xác định vùng (Range) cần tìm (số thiếu)
B2: Xác định trị MIN & MAX (của vùng) bằng hàm (Min() hay MAX()) tương ứng.
B3: Tạo vòng lặp duyệt tìm lần lượt các trị từ Min đến Max
BC: Trị nào không được tìm thấy là trị đang thiếu

Chúc bạn thành công!
 
Mình xin hướng dẫn chủ bài đăng các bước thực hiện bỡi VBA, nha:
B1: Xác định vùng (Range) cần tìm (số thiếu)
B2: Xác định trị MIN & MAX (của vùng) bằng hàm (Min() hay MAX()) tương ứng.
B3: Tạo vòng lặp duyệt tìm lần lượt các trị từ Min đến Max
BC: Trị nào không được tìm thấy là trị đang thiếu

Chúc bạn thành công!
Em không hiểu ạ, xin tạo code giúp em được không ạ! Em cảm ơn nhiều ạ!
 
Lần chỉnh sửa cuối:
PHP:
Sub TimCacSoThieu()
 Dim SoCot As Integer, J As Long, Dm As Integer, Max_ As Integer, Min_ As Integer
 Dim Rng As Range, sRng As Range, WF As Object
 
 SoCot = Sheets("A4").UsedRange.Columns.Count
 Set WF = Application.WorksheetFunction
 For J = 3 To [M3].End(xlDown).Row  'Duyêt Theo Dòng    '
    Dim sKQ As String
    Set Rng = Range(Cells(J, "N"), Cells(J, SoCot).End(xlToLeft))
    Min_ = WF.Min(Rng):             Max_ = WF.Max(Rng)
    For Dm = Min_ To Max_
        Set sRng = Rng.Find(Dm, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            sKQ = Str(Dm) & "," & sKQ
        End If
        If Len(sKQ) Then Cells(J, "I").Value = sKQ
    Next Dm
 Next J
End Sub
 
PHP:
Sub TimCacSoThieu()
 Dim SoCot As Integer, J As Long, Dm As Integer, Max_ As Integer, Min_ As Integer
 Dim Rng As Range, sRng As Range, WF As Object
 
 SoCot = Sheets("A4").UsedRange.Columns.Count
 Set WF = Application.WorksheetFunction
 For J = 3 To [M3].End(xlDown).Row  'Duyêt Theo Dòng    '
    Dim sKQ As String
    Set Rng = Range(Cells(J, "N"), Cells(J, SoCot).End(xlToLeft))
    Min_ = WF.Min(Rng):             Max_ = WF.Max(Rng)
    For Dm = Min_ To Max_
        Set sRng = Rng.Find(Dm, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            sKQ = Str(Dm) & "," & sKQ
        End If
        If Len(sKQ) Then Cells(J, "I").Value = sKQ
    Next Dm
 Next J
End Sub
Vote cho bác 1 phiếu vì bác viết code để ... tác giả lên hỏi lại.
 
Trong vùng n đến dd phải có số chạy từ giá trị (nguyên dương) từ min đến giá trị max, nếu không như vây là bị thiếu, ví dụ hàng 11 thiếu số 33. Làm sao để tìm được số 33 trên ạ? Em cảm ơn ạ!
Thử xem công thức này xem sao :

H3=IFERROR(SMALL(IF(ISNA(MATCH(ROW(INDIRECT(MIN($N3:$DD3)&":"&MAX($N3:$DD3)));$N3:$DD3;0));ROW(INDIRECT(MIN($N3:$DD3)&":"&MAX($N3:$DD3)));"");COLUMN(A$1));"")

Kéo công thức các ô còn lại
Xem chi tiết file vì bạn không dùng 365 nên không có hàm TEXTJOIN để nối.
 

File đính kèm

PHP:
Sub TimCacSoThieu()
 Dim SoCot As Integer, J As Long, Dm As Integer, Max_ As Integer, Min_ As Integer
 Dim Rng As Range, sRng As Range, WF As Object
 
 SoCot = Sheets("A4").UsedRange.Columns.Count
 Set WF = Application.WorksheetFunction
 For J = 3 To [M3].End(xlDown).Row  'Duyêt Theo Dòng    '
    Dim sKQ As String
    Set Rng = Range(Cells(J, "N"), Cells(J, SoCot).End(xlToLeft))
    Min_ = WF.Min(Rng):             Max_ = WF.Max(Rng)
    For Dm = Min_ To Max_
        Set sRng = Rng.Find(Dm, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            sKQ = Str(Dm) & "," & sKQ
        End If
        If Len(sKQ) Then Cells(J, "I").Value = sKQ
    Next Dm
 Next J
End Sub
Em cảm ơn nhiều ạ!
Bài đã được tự động gộp:

Vote cho bác 1 phiếu vì bác viết code để ... tác giả lên hỏi lại.
Em cảm ơn nhiều ạ!
 
Tuy nhiên nó không phải là do hàm tương ứng đem lại;
Nên chắc cú là không dựa vô nó.
Dựa vô nó bị ăn chưỡi có khi!
Anh nói hơi ngược. Nếu min 1, max 10, mà lại thiếu 10, code anh tính ra max = 9, anh đi tìm thì đâu biết đang thiếu con 10?
 
PHP:
Sub TimCacSoThieu()
 Dim SoCot As Integer, J As Long, Dm As Integer, Max_ As Integer, Min_ As Integer
 Dim Rng As Range, sRng As Range, WF As Object
 
 SoCot = Sheets("A4").UsedRange.Columns.Count
 Set WF = Application.WorksheetFunction
 For J = 3 To [M3].End(xlDown).Row  'Duyêt Theo Dòng    '
    Dim sKQ As String
    Set Rng = Range(Cells(J, "N"), Cells(J, SoCot).End(xlToLeft))
    Min_ = WF.Min(Rng):             Max_ = WF.Max(Rng)
    For Dm = Min_ To Max_
        Set sRng = Rng.Find(Dm, , xlFormulas, xlWhole)
        If sRng Is Nothing Then
            sKQ = Str(Dm) & "," & sKQ
        End If
        If Len(sKQ) Then Cells(J, "I").Value = sKQ
    Next Dm
 Next J
End Sub
Em chưa hiểu dùng như thế nào ạ, em nhờ hướng dẫn em kĩ hơn ạ, e cảm ơn nhiều
 
./.

D211.jpg
→ → → → → → → → → → → → → → → → → → → → →
 
Trong vùng n đến dd phải có số chạy từ giá trị (nguyên dương) từ min đến giá trị max, nếu không như vây là bị thiếu, ví dụ hàng 11 thiếu số 33. Làm sao để tìm được số 33 trên ạ? Em cảm ơn ạ!
Ở đây mình đang lấy min=1, bạn xem thử áp dụng được không nhé.
Mã:
=IFERROR(SMALL(IF(COUNTIF($N3:$DD3; COLUMN(INDIRECT("r1c1:r1c"&$K3;0)))=0;COLUMN(INDIRECT("r1c1:r1c"&$K3;0));"");COLUMN(A1));"")
 
Web KT

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

Back
Top Bottom