Loại bỏ những số trong theo danh sách cho trước (3 người xem)

Liên hệ QC

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

Thưa các anh chị GPE,

Em có yêu cầu trong file đính kèm mong mọi người hỗ trợ ạ

em cảm ơn.
Bạn nói rõ là dùng công thức hay là dùng VBA,và số thì từ 1 đến bao nhiêu các thành viên trong diễn đàn mới biết để giúp chứ
 
:D }}}}} :D Chắc lại là 1 bài đố vui có thưởng nữa đây mà!
$$$$@
 
Đố mà rõ đề còn biết thắng thua đê thử chứ đố mà không biết mở bài từ đâu đúng là câu hỏi khó bác ạ
 
và số thì từ 1 đến bao nhiêu các thành viên trong diễn đàn mới biết để giúp chứ
Người ta có một dãy số tăng dần nhưng không liên tục: a1 < a2 < ... < an. Yêu cầu: Tìm ra tất cả các số a thỏa 2 điều kiện:
- a1 < a < an
- a không thuộc dãy đã cho.

Nói nôm na là tìm các số còn thiếu của tập các số liên tiếp từ a1 tới an.

Có thể từ 1 chỉ là ví dụ. Trong trường hợp tổng quát a1 có thể là số bất kỳ, vd. a1 = 12345.
 
Người ta có một dãy số tăng dần nhưng không liên tục: a1 < a2 < ... < an. Yêu cầu: Tìm ra tất cả các số a thỏa 2 điều kiện:
- a1 < a < an
- a không thuộc dãy đã cho.

Nói nôm na là tìm các số còn thiếu của tập các số liên tiếp từ a1 tới an.

Có thể từ 1 chỉ là ví dụ. Trong trường hợp tổng quát a1 có thể là số bất kỳ, vd. a1 = 12345.
Vậy cột B là kết quả mong muốn hả Bác
Bài đã được tự động gộp:

Mã:
Option Explicit

Sub lay_so_con_thieu()
Dim i, J, DK1, DK2, THEM, K As Long
Dim ArrDL(), ArrKQ()
With Sheet1
    ArrDL = .Range("G5", .Range("G" & Rows.Count).End(xlUp)).Resize(, 1).Value
    ReDim ArrKQ(1 To 10000, 1 To 1)
    For i = 1 To UBound(ArrDL) - 1
            DK1 = ArrDL(i, 1)
            DK2 = ArrDL(i + 1, 1)
        If DK2 - DK1 <> 1 Then
            For J = 1 To (DK2 - DK1)
                        K = K + 1
                       THEM = DK1 + J
                    ArrKQ(K, 1) = DK1 + J
                If ArrKQ(K, 1) = DK2 - 1 Then
                        Exit For
                End If
            Next
        End If
    Next
    .Range("B5").Resize(K, 1) = ArrKQ
End With
End Sub

Option Explicit

Sub them_so()
Dim i, DK, K  As Long
Dim ArrDK(), ArrKQ()
Dim dic As Object
Set dic = CreateObject("Scripting.dictionary")
With Sheet1
    ArrDK = .Range("B5", .Range("B" & Rows.Count).End(xlUp)).Resize(, 1).Value
                 For i = 1 To UBound(ArrDK)
                          DK = ArrDK(i, 1)
                    If Not dic.exists(DK) Then
                        dic.Add DK, ""
                    End If
                 Next
    ReDim ArrKQ(1 To 10000, 1 To 1)
                 For i = 1 To 10000
                    If Not dic.exists(i) Then
                            K = K + 1
                     ArrKQ(K, 1) = i
                    End If
                 Next
    .Range("H5").Resize(K, 1) = ArrKQ
End With
End Sub
Em mới học xem như góp vui,Nếu có sai sót thì học hỏi luôn hihi
 
Lần chỉnh sửa cuối:
Bạn nói rõ là dùng công thức hay là dùng VBA,và số thì từ 1 đến bao nhiêu các thành viên trong diễn đàn mới biết để giúp chứ
dạ dùng công thức ạ! số bắt đầu chạy là số 1 cộng thêm 1 nếu như không gặp số cần lọc bỏ ạ.
Bài đã được tự động gộp:

Người ta có một dãy số tăng dần nhưng không liên tục: a1 < a2 < ... < an. Yêu cầu: Tìm ra tất cả các số a thỏa 2 điều kiện:
- a1 < a < an
- a không thuộc dãy đã cho.

Nói nôm na là tìm các số còn thiếu của tập các số liên tiếp từ a1 tới an.

Có thể từ 1 chỉ là ví dụ. Trong trường hợp tổng quát a1 có thể là số bất kỳ, vd. a1 = 12345.
dạ đúng như vậy ạ
 
dạ dùng công thức ạ! số bắt đầu chạy là số 1 cộng thêm 1 nếu như không gặp số cần lọc bỏ ạ.
Thử công thức xem:
PHP:
G5=SMALL(INDEX(ISNA(MATCH(ROW($A$1:$A$10000),$B$5:$B$11,0))*ROW($A$1:$A$10000),),ROW($A1)+COUNT($B$5:$B$11))
 
Web KT

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

Back
Top Bottom