ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
24 visibility
موضوع: آفیس توسط:

رون می‌داند که می‌تواند از تابع COMBIN برای تعیین تعداد ترکیب‌هایی که می‌توان از تعدادی رقم ایجاد کرد استفاده کرد. با این حال، او متعجب است که آیا راهی برای فهرست کردن همه ترکیبات وجود دارد.

هیچ راهی داخلی برای فهرست کردن ترکیبات در اکسل وجود ندارد. با این حال، می توانید یک ماکرو ایجاد کنید تا لیست را برای شما انجام دهد. اگر می‌خواهید ترکیب‌های منحصربه‌فرد را در مجموعه‌ای از اعداد متوالی که از 1 شروع می‌شوند پیدا کنید، مجموعه ماکروهای زیر این کار را انجام می‌دهند. تنها کاری که باید انجام دهید این است که تابع TestCNR را اجرا کنید و در نهایت با یک "ماتریس" از سلول ها مواجه خواهید شد که تعداد ترکیبات 4 رقمی را در مجموعه مقادیر متوالی از 1 تا 10 نشان می دهد.

Sub TestCNR()
    Cnr 10, 4
End Sub
Sub Cnr(n, r)
    i = 1
    For j = 1 To r
        Cells(i, j).Value = j
    Next

    Do Until Finished(n, r, i)
        j = FindFirstSmall(n, r, i)
        For k = 1 To j — 1
            Cells(i + 1, k).Value = Cells(i, k).Value
        Next
        Cells(i + 1, j).Value = Cells(i, j).Value + 1
        For k = j + 1 To r
            Cells(i + 1, k).Value = Cells(i + 1, k - 1).Value + 1
        Next
        i = i + 1
    Loop
End Sub
Function Finished(n, r, i)
    Temp = True

    For j = r To 1 Step -1
        If Cells(i, j).Value <> j + (n - r) Then
            Temp = False
        End If
    Next
    Finished = Temp
End Function

Function FindFirstSmall(n, r, i)
    j = r
    Do Until Cells(i, j).Value <> j + (n - r)
        j = j - 1
    Loop
    FindFirstSmall = j
End Function

ماکرو هر چیزی را که در کاربرگ شما وجود دارد رونویسی می کند، بنابراین مطمئن شوید که آزمون را با یک کاربرگ خالی نمایش داده شده اجرا کنید. اگر می خواهید اندازه مجموعه یا تعداد عناصر زیر مجموعه را تغییر دهید، فقط مقادیر ارسال شده در روتین TestCNR را تغییر دهید.

اگر می‌خواهید ترکیب‌های منحصربه‌فردی را از یک رشته کاراکتر (مثلاً حروف الفبا) بیرون بکشید، باید از مجموعه‌ای متفاوت از ماکروها استفاده کنید. موارد زیر به خوبی کار خواهند کرد؛ فرض بر این است که کاراکترهایی که می خواهید به عنوان "جهان" خود استفاده کنید در سلول A1 و عددی که در هر ترکیب منحصر به فرد می خواهید در سلول A2 باشد.

Sub FindSets()
    Dim iA() As Integer
    Dim sUniv As String
    Dim iWanted As Integer
    Dim j As Integer
    Dim k As Integer

    sUniv = Cells(1, 1).Value
    iWanted = Cells(2, 1).Value

    ReDim iA(iWanted)
    For j = 1 To iWanted
        iA(j) = j
    Next j

    iRow = PutRow(iA, sUniv, 1)

    Do Until DoneYet(iA, Len(sUniv))
        j = WorkHere(iA, Len(sUniv))
        iA(j) = iA(j) + 1
        For k = j + 1 To iWanted
            iA(k) = iA(k - 1) + 1
        Next k
        iRow = PutRow(iA, sUniv, iRow)
    Loop
End Sub
Function DoneYet(iB, n) As Boolean
    iMax = UBound(iB)
    Temp = True
    For j = iMax To 1 Step -1
        If iB(j) <> j + (n - iMax) Then
            Temp = False
        End If
    Next
    DoneYet = Temp
End Function
Function WorkHere(iB, n) As Integer
    iMax = UBound(iB)
    j = iMax
    Do Until iB(j) <> j + (n - iMax)
        j = j - 1
    Loop
    WorkHere = j
End Function
Function PutRow(iB, sUniv, i)
    iMax = UBound(iB)
    sTemp = ""
    For j = 1 To iMax
        sTemp = sTemp & Mid(sUniv, iB(j), 1)
    Next j
    Cells(i, 2).Value = sTemp
    PutRow = i + 1
End Function

ماکرو FindSets را اجرا کنید و ترکیب های مختلف مورد نظر به ستون 2 ختم می شوند. با این حال، هنگام اجرای ماکرو مراقب باشید. تعداد ترکیب ها می تواند خیلی سریع زیاد شود.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 30 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 33 visibility
ارسال شده در 27 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 591 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

351 نفر آنلاین
0 عضو و 351 مهمان در سایت حاضرند
بازدید امروز: 9344
بازدید دیروز: 25180
بازدید کل: 20346695
...