۰۹ اسفند ۹۹ ، ۱۱:۲۸
یافتن ترکیب سلولهایی که با مجموع معینی برابر هستند با تابع تعریفشده توسط کاربر در اکسل
هر دو روش اول برای اکثر کاربران اکسل ما پیچیدهاست، در اینجا میتوانم یک کد VBA ایجاد کنیم تا این کار را به سرعت و به راحتی حل کند.
برای به دست آوردن نتیجهی درست، ابتدا باید لیست اعداد را به ترتیب نزولی مرتب کنید؛ و سپس مراحل زیر انجام دهید:
- کلیدهای ALT + F11 را نگه دارید تا پنجرهی Microsoft Visual Basic for Applications باز شود.
- بر روی تب Insert سپس Module کلیک کنید و کد زیر را در پنجرهی Module قرار دهید.
Function GetCombination(CoinsRange As Range, SumCellId As Double) As String
Dim xStr As String
Dim xSum As Double
Dim xCell As Range
xSum = SumCellId
For Each xCell In CoinsRange
If Not (xSum / xCell < 1) Then
xStr = xStr & Int(xSum / xCell) & " of " & xCell & " "
xSum = xSum - (Int(xSum / xCell)) * xCell
End If
Next
GetCombination = xStr
End Function - سپس پنجرهی کد را ببندید، و به ورکشیت برگردید و فرمول =getcombination(A2:A9,C2) را در یک سلول خالی وارد کنید و کلید Enter را فشار دهید، نتیجهی زیر را بدست میآورید که اعداد ترکیبی را نشان میدهد؛ که برابر با مقدار معین است، به تصویر زیر مراجعه کنید:
توجه:
- در فرمول بالا ، A2:A9 بازهی اعداد است و C2 حاوی مقدار هدف است که میخواهید با آن برابر باشد.
- اگر بیش از یک ترکیب از مقادیر برابر با مقدار خاص باشد، فقط یک ترکیب لیست میشود.
۹۹/۱۲/۰۹