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

Liên hệ QC

anhtuan_TMV

Thành viên mới
Tham gia
12/6/20
Bài viết
3
Được thích
0
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.
 

File đính kèm

  • lọc bỏ số đã cho trước.xlsx
    9.6 KB · Đọc: 15
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
Back
Top Bottom