تعدّ =COUNTA(UNIQUE(A2:A9)) القيم المختلفة في A2:A9. تعيد UNIQUE كل قيمة مرة واحدة، وتعدّ COUNTA تلك القائمة. تحتاج الصيغة إلى Excel 2021 أو Microsoft 365؛ والإصدارات الأقدم مشروحة أدناه.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Customer | Unique list | Count | |
| 2 | Ana | Ana | 5 | |
| 3 | Ben | Ben | ||
| 4 | Ana | Cara | ||
| 5 | Cara | Dan | ||
| 6 | Ben | Eva | ||
| 7 | Dan | |||
| 8 | Ana | |||
| 9 | Eva |
جاءت ثمانية طلبات من خمسة عملاء. تُظهر C2 قائمة الأسماء التي تعيدها UNIQUE لترى ما يُعدّ، وتعدّها D2 دون حاجة إلى القائمة في الورقة. غيّر A9 إلى Ana فينخفض العدد إلى 4؛ واكتب اسمًا جديدًا فيرتفع.
تتجاهل UNIQUE حالة الأحرف، لذا يُعدّ Ana وana عميلًا واحدًا.
عدّ القيم الفريدة في الإصدارات الأقدم من الاكسل
لا توجد UNIQUE في Excel 2019 وما قبله. والصيغة التقليدية هي:
=SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9))
عندما يكون شرط COUNTIF هو النطاق كله، تعيد لكل صف عدد مرات ظهور قيمة ذلك الصف. والاسم الذي يظهر 3 مرات يحصل على 3 في كل صف من صفوفه، فيُضاف 1/3 ثلاث مرات ويكون مجموع الاسم 1 بالضبط. يعرض العمود B العدد لكل صف ويعرض العمود C الكسر.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Customer | Times | 1/Times | Count | |
| 2 | Ana | 3 | 0.33 | 5 | |
| 3 | Ben | 2 | 0.50 | 5.00 | |
| 4 | Ana | 3 | 0.33 | ||
| 5 | Cara | 1 | 1.00 | ||
| 6 | Ben | 2 | 0.50 | ||
| 7 | Dan | 1 | 1.00 | ||
| 8 | Ana | 3 | 0.33 | ||
| 9 | Eva | 1 | 1.00 |
يضيف كل صف من صفوف Ana الثلاثة 0.33، ويضيف كل صف من صفي Ben القيمة 0.50، ويضيف كل اسم من الأسماء الثلاثة المنفردة 1: المجموع 5، وهو نفسه مجموع العمود المساعد بالدالة SUM. وعلى عشرات الآلاف من الصفوف تكون هذه الصيغة بطيئة، لأن COUNTIF تمسح النطاق كله مرة لكل صف؛ ولا تتحمل UNIQUE هذه التكلفة.
المميزة مقابل الفريدة: القيم التي تظهر مرة واحدة فقط
تُستخدم كلمة "فريدة" لعددين مختلفين. العدد أعلاه يعدّ القيم المميزة: كل اسم مرة واحدة. والآخر يعدّ القيم التي تظهر مرة واحدة بالضبط، مثل العملاء الذين طلبوا مرة واحدة فقط. تفعل UNIQUE ذلك عندما يُضبط وسيطها الثالث، exactly_once، على TRUE.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Customer | Count | Result | |
| 2 | Ana | Distinct | 5 | |
| 3 | Ben | Exactly once | 3 | |
| 4 | Ana | Exactly once, older Excel | 3 | |
| 5 | Cara | |||
| 6 | Ben | |||
| 7 | Dan | |||
| 8 | Ana | |||
| 9 | Eva |
خمسة عملاء مميزون، لكن ثلاثة منهم فقط، Cara وDan وEva، طلبوا مرة واحدة. وتعدّ صيغة الإصدارات الأقدم الصفوف التي تكون فيها نتيجة COUNTIF تساوي 1 بالضبط. وإذا تكررت كل القيم، تعيد UNIQUE مع exactly_once الخطأ #CALC! وتعدّ COUNTA ذلك الخطأ على أنه 1؛ أما صيغة SUMPRODUCT فتعطي 0.
عدّ القيم الفريدة بشرط
لعدّ العملاء المختلفين في منطقة واحدة، رشّح الصفوف أولًا ثم عدّ ما تبقى. تُبقي FILTER صفوف North وتحذف UNIQUE التكرارات.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Customer | Region | Region | Customers | |
| 2 | Ana | North | North | 3 | |
| 3 | Ben | South | South | 3 | |
| 4 | Ana | North | North, older Excel | 3 | |
| 5 | Cara | North | |||
| 6 | Ben | North | |||
| 7 | Dan | South | |||
| 8 | Ana | North | |||
| 9 | Eva | South |
في North خمسة طلبات من ثلاثة عملاء: Ana وCara وBen. وتعدّ E3 منطقة South بالطريقة نفسها. وE4 هي الصيغة الخاصة بـ Excel 2019 وما قبله: تعدّ COUNTIFS كل زوج من العميل والمنطقة، ويُبقي الشرط كسور North فقط.
وإذا لم يتطابق أي صف، تعيد FILTER الخطأ #CALC!، وتعدّ COUNTA ذلك الخطأ قيمة واحدة: اكتب West في D2 فتعرض E2 القيمة 1، لا 0. ولا يفيد وضع الصيغة داخل IFERROR، لأن COUNTA لا تعيد خطأ. عدّ صفوف النتيجة بدلًا من ذلك، فهذا يمرر الخطأ: تعيد =IFERROR(ROWS(UNIQUE(FILTER(A2:A9,B2:B9="West"))),0) القيمة 0.
عدّ القيم الفريدة مع تجاهل الخلايا الفارغة
تصبح الخلية الفارغة في النطاق "قيمة" إضافية. تعيدها UNIQUE على شكل 0 وتعدّ COUNTA ذلك الصفر، لذا مع Ana وخلية فارغة وBen وAna وخلية فارغة وCara وBen، يعطي الاكسل:
=COUNTA(UNIQUE(A2:A8)) 4 three names plus the 0 for the empty cells
وفي الصيغة الأقدم، يجعل الصف الفارغ COUNTIF تعيد 0، فيعطي 1/0 الخطأ #DIV/0!. احذف الخلايا الفارغة أولًا:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Customer | Formula | Count | |
| 2 | Ana | Skip blanks | 3 | |
| 3 | Older Excel | 3 | ||
| 4 | Ben | |||
| 5 | Ana | |||
| 6 | ||||
| 7 | Cara | |||
| 8 | Ben |
تعدّ الصيغتان العملاء الثلاثة. تحذف FILTER مع A2:A8<>"" الخلايا الفارغة قبل أن تراها UNIQUE. وفي الصيغة الأقدم، تحوّل A2:A8&"" كل خلية فارغة إلى نص فارغ حتى لا تعيد COUNTIF القيمة 0 أبدًا، وتعطي (A2:A8<>"") تلك الصفوف وزنًا قدره 0.
تمرين: عدّ المنتجات
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Order | Product | Count | Result | |
| 2 | 1001 | Apple | Products | ||
| 3 | 1002 | Pear | |||
| 4 | 1003 | Apple | |||
| 5 | 1004 | Plum | |||
| 6 | 1005 | Pear | |||
| 7 | 1006 | Apple | |||
| 8 | 1007 | Plum | |||
| 9 | 1008 | Fig |
دورك: عدّ المنتجات المختلفة التي تظهر في B2:B9. اكتب الصيغة في E2.
أي صيغة تناسب إصدارك من الاكسل
| العد | Excel 365 / 2021 | Excel 2019 وما قبله |
|---|---|---|
| القيم المميزة | =COUNTA(UNIQUE(A2:A9)) | =SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9)) |
| القيم التي تظهر مرة واحدة | =COUNTA(UNIQUE(A2:A9,,TRUE)) | =SUMPRODUCT(--(COUNTIF(A2:A9,A2:A9)=1)) |
| المميزة، بشرط | =COUNTA(UNIQUE(FILTER(A2:A9,B2:B9="North"))) | =SUMPRODUCT((B2:B9="North")/COUNTIFS(A2:A9,A2:A9,B2:B9,B2:B9)) |
| المميزة، مع تخطي الفارغة | =COUNTA(UNIQUE(FILTER(A2:A9,A2:A9<>""))) | =SUMPRODUCT((A2:A9<>"")/COUNTIF(A2:A9,A2:A9&"")) |
في الجدول المحوري، يؤدي ملخص "Distinct Count" (العدد المميز) المهمة نفسها دون صيغة، لكن فقط عندما يُنشأ الجدول المحوري مع تحديد خيار "إضافة هذه البيانات إلى نموذج البيانات". ولحذف التكرارات بدلًا من عدّها، راجع إزالة التكرارات.
الأسئلة الشائعة
كيف أعدّ القيم الفريدة في الاكسل؟
في Excel 365 أو 2021، استخدم =COUNTA(UNIQUE(A2:A9)): تسرد UNIQUE كل قيمة مرة واحدة وتعدّ COUNTA القائمة. وفي الإصدارات الأقدم استخدم =SUMPRODUCT(1/COUNTIF(A2:A9,A2:A9)).
كيف أعدّ القيم التي تظهر مرة واحدة فقط؟
اضبط الوسيط الثالث للدالة UNIQUE، أي exactly_once، على TRUE: =COUNTA(UNIQUE(A2:A9,,TRUE)). ففي القائمة Ana وAna وBen تعطي 1، لأن Ben وحده يظهر مرة واحدة. وفي Excel 2019 وما قبله استخدم =SUMPRODUCT(--(COUNTIF(A2:A9,A2:A9)=1)).
كيف أعدّ القيم الفريدة بشرط؟
رشّح أولًا، ثم عدّ: تعدّ =COUNTA(UNIQUE(FILTER(A2:A9,B2:B9="North"))) العملاء المختلفين في صفوف North. وإذا لم يتطابق أي صف، تعدّ COUNTA الخطأ #CALC! الذي تعيده FILTER على أنه 1، لذا عندما يمكن أن يحدث ذلك استخدم =IFERROR(ROWS(UNIQUE(FILTER(A2:A9,B2:B9="North"))),0).
كيف أعدّ القيم الفريدة مع تجاهل الخلايا الفارغة؟
احذف الخلايا الفارغة قبل UNIQUE: =COUNTA(UNIQUE(FILTER(A2:A9,A2:A9<>""))). وفي الإصدارات الأقدم من الاكسل، تتخطاها =SUMPRODUCT((A2:A9<>"")/COUNTIF(A2:A9,A2:A9&"")).