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

گاهی اوقات لازم است تعداد مقادیر منحصر به فرد در یک محدوده از سلول ها را بدانید. به عنوان مثال، فرض کنید که یک مربی در حال تدریس کلاس های زیر است:

104-120
104-101
104-119
104-120

در این مورد سه مقدار منحصر به فرد وجود دارد. هیچ تابع کاربرگ بصری وجود ندارد که تعدادی از مقادیر منحصر به فرد را برگرداند، که باعث می شود فکر کنیم که یک تابع تعریف شده توسط کاربر رویکرد منطقی است. با این حال، می توانید از یک فرمول ساده برای به دست آوردن اطلاعات مورد نظر به راحتی استفاده کنید. این دو مرحله را دنبال کنید:

  1. نامی را تعریف کنید که نشان دهنده محدوده ای باشد که شامل لیست شما می شود. (این مثال فرض می کند نامی که شما تعریف می کنید MyRange است.)
  2. در سلولی که می‌خواهید تعداد مقادیر منحصربه‌فرد ظاهر شود، فرمول زیر را تایپ کنید:
     =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 تعریف کردید)، پردازش ماکرو بیشتر طول می کشد. این قابل درک است؛ باید در تمام سلول‌های محدوده کار کند، و اگر سلول‌های زیادی وجود داشته باشد، زمان زیادی می‌برد.

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

پاسخ شما

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

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

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

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

123 نفر آنلاین
0 عضو و 123 مهمان در سایت حاضرند
بازدید امروز: 2489
بازدید دیروز: 10986
بازدید کل: 15360515
...