Hàm sắp xếp dữ liệu không trùng theo điều kiện

Liên hệ QC

nvh611

Thành viên thường trực
Tham gia
20/5/17
Bài viết
228
Được thích
42
Nhờ các bạn viết giúp hàm như file đính kèm
Xin trân thành cảm ơn các bạn
 

File đính kèm

  • Hàm tìm giá trị không trùng theo điều kiện.xlsb
    8.7 KB · Đọc: 20
Mã:
D7=MID(SUBSTITUTE(SUBSTITUTE("0123456789",D5,""),D6,""),1,1)
hoặc
D7=MID(SUBSTITUTE(SUBSTITUTE("0123456789",D5,""),D6,""),RANDBETWEEN(1,LEN(SUBSTITUTE(SUBSTITUTE("0123456789",D5,""),D6,""))),1)
Cảm ơn bạn @befaint 2 công thức trên chưa được bạn ơi, nó bị trùng số (Với yêu cầu của mình là không trùng số ở kết quả "Tức là phải đủ 10 từ 0-9)
 

File đính kèm

  • Hàm tìm giá trị không trùng theo điều kiện.xlsb
    9.5 KB · Đọc: 2
Upvote 0
Nhờ các bạn viết giúp hàm như file đính kèm
Xin trân thành cảm ơn các bạn
Xem cách dùng trong file
Mã:
Function KhongTrung(ByVal Rng1 As Range, ByVal Rng2 As Range)
    Dim Arr() As Long, aTest() As String
    Dim i&, j&, N&, k&, rn&, q&
  For i = 1 To Rng1.Rows.Count
    For j = 1 To Rng1.Columns.Count
      N = N + 1
      ReDim Preserve Arr(1 To N)
      Arr(N) = Rng1(i, j)
      ReDim Preserve aTest(1 To N)
      aTest(N) = "," & Rng1(i, j) & "," & Rng2(i, j) & ","
    Next j
  Next i
  For q = 1 To 1000000
    k = N
    For i = 1 To k
      rn = Int(k * Rnd() + 1)
      tmp = Arr(rn)
      Arr(rn) = Arr(k)
      Arr(k) = tmp
      If InStr(1, aTest(rn), Arr(rn)) Then Exit For
      If InStr(1, aTest(k), Arr(k)) Then Exit For
      k = k - 1
    Next i
    If i = N + 1 Then Exit For
  Next q
  If q = 1000001 Then KhongTrung = "#NA" Else KhongTrung = Arr
End Function
 

File đính kèm

  • Hàm tìm giá trị không trùng theo điều kiện.xlsb
    16 KB · Đọc: 10
Upvote 0
Xem cách dùng trong file
Mã:
Function KhongTrung(ByVal Rng1 As Range, ByVal Rng2 As Range)
    Dim Arr() As Long, aTest() As String
    Dim i&, j&, N&, k&, rn&, q&
  For i = 1 To Rng1.Rows.Count
    For j = 1 To Rng1.Columns.Count
      N = N + 1
      ReDim Preserve Arr(1 To N)
      Arr(N) = Rng1(i, j)
      ReDim Preserve aTest(1 To N)
      aTest(N) = "," & Rng1(i, j) & "," & Rng2(i, j) & ","
    Next j
  Next i
  For q = 1 To 1000000
    k = N
    For i = 1 To k
      rn = Int(k * Rnd() + 1)
      tmp = Arr(rn)
      Arr(rn) = Arr(k)
      Arr(k) = tmp
      If InStr(1, aTest(rn), Arr(rn)) Then Exit For
      If InStr(1, aTest(k), Arr(k)) Then Exit For
      k = k - 1
    Next i
    If i = N + 1 Then Exit For
  Next q
  If q = 1000001 Then KhongTrung = "#NA" Else KhongTrung = Arr
End Function
Cảm ơn bạn @HieuCD Quá chuẩn rồi bạn ơi
Chúc bạn ngày mới có nhiều niềm vui
 
Upvote 0
Web KT
Back
Top Bottom