Bài Toán Chỉnh Hợp có lặp!

Liên hệ QC
Một cách khác dùng hàm UDF
Tại dòng thứ 2 của bất kỳ cột nào, nhập hàm lietke(dãy số,tổng) và kéo xuống

VD: Tại I2:
=lietke(12345,9)

Kéo xuống

Có thể thay các tham số bên trong theo ý muốn, VD: =lietke(123456789,15)
để liệt kê số tư 1 - 9 và có tổng bằng 15

Code:
PHP:
Option Explicit
Function lietke(dayso As String, tong As Integer)
Dim myRow As Double, myCol As Double, myRng As Range
Dim i&, j&, k&, l&, s1 As String, s2 As String, s3 As String, s4 As String
myRow = Application.Caller.Row - 1
myCol = Application.Caller.Column
Set myRng = Range(Cells(1, myCol), Cells(myRow, myCol))
For i = 1 To Len(dayso)
    For j = 1 To Len(dayso)
        For k = 1 To Len(dayso)
            For l = 1 To Len(dayso)
                s1 = Mid(dayso, i, 1): s2 = Mid(dayso, j, 1): s3 = Mid(dayso, k, 1): s4 = Mid(dayso, l, 1)
                If CLng(s1) + CLng(s2) + CLng(s3) + CLng(s4) = tong Then
                    If WorksheetFunction.CountIf(myRng, s1 & s2 & s3 & s4) = 0 Then
                        lietke = CLng(s1 & s2 & s3 & s4)
                        Exit Function
                    End If
                End If
            Next
        Next
    Next
Next
If lietke = 0 Then lietke = ""
End Function
 
Web KT

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

Back
Top Bottom