گاهی اوقات لازم است تعداد مقادیر منحصر به فرد در یک محدوده از سلول ها را بدانید. به عنوان مثال، فرض کنید که یک مربی در حال تدریس کلاس های زیر است:
104-120
104-101
104-119
104-120
در این مورد سه مقدار منحصر به فرد وجود دارد. هیچ تابع کاربرگ بصری وجود ندارد که تعدادی از مقادیر منحصر به فرد را برگرداند، که باعث می شود فکر کنیم که یک تابع تعریف شده توسط کاربر رویکرد منطقی است. با این حال، می توانید از یک فرمول ساده برای به دست آوردن اطلاعات مورد نظر به راحتی استفاده کنید. این دو مرحله را دنبال کنید:
- نامی را تعریف کنید که نشان دهنده محدوده ای باشد که شامل لیست شما می شود. (این مثال فرض می کند نامی که شما تعریف می کنید MyRange است.)
- در سلولی که میخواهید تعداد مقادیر منحصربهفرد ظاهر شود، فرمول زیر را تایپ کنید:
=SUM(1/COUNTIF(MyRange,MyRange))
اگر از نسخه اکسل ارائه شده با مایکروسافت 365 استفاده می کنید، مراحل بالا به خوبی کار می کنند. با این حال، اگر از نسخه قدیمی تر استفاده می کنید، باید یک تغییر ایجاد کنید—باید فرمول را به عنوان فرمول آرایه وارد کنید. این به این معنی است که به جای فشار دادن Enter ، آن را با استفاده از Ctrl+Shift+Enter وارد کنید .
در صورتی که فرمول به درستی وارد شده باشد، سلول حاوی تعداد مقادیر نام منحصر به فرد در محدوده مشخص شده است. این رویکرد به حروف بزرگ و کوچک حساس نیست، بنابراین اگر دو مقدار دارید که فقط از نظر حروف بزرگ متفاوت هستند (ThisName در مقابل THISNAME)، هر دو به عنوان یک مقدار منحصر به فرد محاسبه می شوند. علاوه بر این، هیچ سلول خالی در محدوده وجود ندارد. (داشتن یک سلول خالی یک خطای #DIV/0 را از فرمول برمی گرداند.)
اگر نیازهای خاص شما مستلزم این است که لیست شما حاوی موارد خالی باشد (اما نمی خواهید آنها شمارش شوند) و می خواهید ارزیابی به حروف کوچک و بزرگ حساس باشد، باید به یک کلان مراجعه کنید. ماکرو زیر، CountUnique، این کار را انجام می دهد:
Function CountUnique(ByVal MyRange As Range) As Integer
Dim Cell As Range
Dim J As Integer
Dim iNumCells As Integer
Dim iUVals As Integer
Dim sUCells() As String
iNumCells = MyRange.Count
ReDim sUCells(iNumCells) As String
iUVals = 0
For Each Cell In MyRange
If Cell.Text > "" Then
For J = 1 To iUVals
If sUCells(J) = Cell.Text Then
Exit For
End If
Next J
If J > iUVals Then
iUVals = iUVals + 1
sUCells(iUVals) = Cell.Text
End If
End If
Next Cell
CountUnique = iUVals
End Function
به سادگی معادله ای شبیه به زیر را در یک سلول قرار دهید:
=CountUnique(MyRange)
مقدار بازگشتی تعداد مقادیر منحصر به فرد است، بدون احتساب موارد خالی، در محدوده. همچنین درک کنید که با بزرگتر شدن محدوده شما (چیزی که قبلاً MyRange تعریف کردید)، پردازش ماکرو بیشتر طول می کشد. این قابل درک است؛ باید در تمام سلولهای محدوده کار کند، و اگر سلولهای زیادی وجود داشته باشد، زمان زیادی میبرد.