19. اكسل كيفية حساب عدد القيم الفريدة


الحل الأول

لحساب عدد القيم الفريدة في نطاق من الخلايا A3:A17 على سبيل المثال ،

1 - إذا كان النطاق لا يحتوي على خلايا فارغة ، استخدم الصيغة :

=SUMPRODUCT(1/COUNTIF(A3:A17,A3:A17))

2 - إذا كان النطاق يحتوي على خلايا فارغة ، استخدم الصيغة :

=SUMPRODUCT((A3:A17<>"")/COUNTIF(A3:A17,A3:A17&""))

شرح الصيغ

سنشرح هذه الصيغ تدريجيًا وهي مناسبة للتذكير ببعض دوال أكسل.

لنعتبر المقتطف التالي:

اكسل 2016 مثال عدد القيم الفريدة

الصيغة في الخلية B3 هي:

=COUNTIF($A$3:$A$17,A3)

تحسب هذه الصيغة عدد تكرارات القيمة في A3 في النطاق A3:A17. تمت إضافة علامات "$" لأجل التعبئة التلقائية.

في C3 ، معكوس القيمة في B3 ، أي الصيغة

=1/B3

وفي الخلية C18 ، مجموع القيم الموجودة في العمود . :

=SUM(C3:C17)

القيمة التي تم الحصول عليها في الخلية C18 هي بالفعل عدد القيم الفريدة في العمود A ، لأنه يتم حساب كل قيمة فريدة بمقدار 1.

خذ على سبيل المثال قيمة موجودة 3 مرات ، سيكون لدينا في العمود C لكل تكرار :

0,3333333

بإضافة هذه القيمة 3 مرات ، سيكون لدينا 1.

إذن بهذه الطريقة ، قمنا بحساب عدد القيم الفريدة ، ولكن يمكننا القيام بذلك دون المرور بعمود وسيط. الصيغة كما هو موضح أعلاه:

=SUMPRODUCT(1/COUNTIF(A3:A17,A3:A17))

هنا أخذت الدالة COUNTIF نطاق من الخلايا كوسيطة ثانية. في هذه الحالة ، يتم إجراء المقارنة مع قيمة كل خلية في النطاق وإرجاع مصفوفة (أي جدول من القيم) عدد عناصرها يساوي عدد الخلايا في النطاق.

تعطينا الدالة SUMPRODUCT مع وسيطة واحدة مجموع عناصر المصفوفة المعطاة كوسيطة. و هي نفس القيم الموجودة في العمود C من المقتطف السابق.

من أجل مساعدتك على فهم أفضل ، أعرض عليك عناصر المصفوفة التي تم إرجاعها بواسطة الدالة COUNTIF ، بالإضافة إلى العناصر العكسية ، و ذلك باستخدام الدالة INDEX.

اكسل 2016 مثال عدد القيم الفريدة

في الخلية C3 ، الصيغة هي :

=INDEX(COUNTIF($A$3:$A$17,$A$3:$A$17),B3)

في الخلية D3 ، الصيغة هي :

=INDEX(1/COUNTIF($A$3:$A$17,$A$3:$A$17),B3)

معالجة الخلايا الفارغة

إذا أضفنا خلية فارغة إلى النطاق A3:A17 ، فحينئذٍ الصيغة

COUNTIF(A3:A17,A3:A17)

ترجع مصفوفة تحتوي على عنصر يساوي 0. و الصيغة

1/COUNTIF(A3:A17,A3:A17)

ترجع مصفوفة تحتوي على عنصر يساوي الخطأ #DIV/0! وسيكون المجموع الذي يتم إرجاعه بواسطة SUMPRODUCT أيضًا هو الخطأ #DIV/0!.

السبب هو أن المقارنة مع خلية فارغة في دالة COUNTIF تعطي FALSE. ولكن ، يمكننا حل هذه المشكلة عن طريق ضم القيمة المراد مقارنتها بالسلسلة الفارغة "" ، لأن مقارنة الخلية الفارغة بالسلسلة الفارغة تعطي القيمة TRUE.

لذلك فإن الصيغة التي يجب استخدامها هي: :

=SUMPRODUCT(1/COUNTIF(A3:A17,A3:A17&""))

بهذه الطريقة نتجنب الخطأ #DIV/0! ولكن ، سيتم أيضًا حساب الخلايا الفارغة بمقدار 1.

إذا لكي لا يتم احتساب الخلايا الفارغة ، فعلينا استخدام الصيغة :

=SUMPRODUCT((A3:A17<>"")/COUNTIF(A3:A17,A3:A17&""))

الحل الثاني

لحساب عدد القيم الرقمية الفريدة في نطاق A3: A17 ، استخدم الصيغة :

=SUM(IF(FREQUENCY(A3:A17,A3:A17)>0.1,1,0))

لحساب عدد القيم الفريدة نصوص أو قيم رقمية في النطاق A3:A17 بشرط ألا يحتوي هذا النطاق على أي خلايا فارغة ، استخدم الصيغة :

=SUM(IF(FREQUENCY(MATCH(A3:A17,A3:A17,0),MATCH(A3:A17,A3:A17,0))>0.1,1,0))

لحساب عدد القيم الفريدة نصوص أو قيم رقمية في النطاق A3:A17 ، استخدم الصيغة :

=SUM(IF(FREQUENCY(IF(LEN(A3:A17)>0,MATCH(A3:A17,A3:A17,0),""),IF(LEN(A3:A17)>0,MATCH(A3:A17,A3:A17,0),""))>0.1,1,0))

شرح الصيغ

تذكير بخصوص الدالة FREQUENCY :

تأخذ الدالة FREQUENCY وسيطتين وتقوم بإرجاع صفيف من العناصر. نأخذ المثال التالي:

اكسل 2016 الدالة FREQUENCY

الوسيطة الثانية تستخدم لتحديد مجالات. فيما يتعلق بالمثال الموضح أعلاه حيث الوسيطة الثانية هي النطاق B3:B6 ، فإن المجالات هي:
  • القيم أقل من أو تساوي 1
  • القيم الأكبر من 1 وأقل من أو تساوي 3
  • القيم الأكبر من 3 وأقل من أو تساوي 5
  • القيم الأكبر من 5 وأقل من أو تساوي 7
  • قيم أكبر من 7

لكل واحد من هذه المجالات نجد عنصر من الصفيف الذي يتم إرجاعه بواسطة الدالة FREQUENCY وقيمته هي عدد قيم الوسيطة الأولى A2:A16 المحصورة في المجال المقابل.

على سبيل المثال ، العنصر الأول من المصفوفة التي تم إرجاعها هو عدد القيم الموجودة في النطاق A2:A16 التي تكون أقل من أو تساوي 1.

العنصر الأخير من المصفوفة التي تم إرجاعها هو عدد القيم الموجودة في النطاق A2:A16 والتي تكون أكبر من 7 ، أي 0.

في المثال السابق ، تم ترتيب القيم الواردة في الوسيطة الثانية. ماذا يحدث إذا قدمنا ​​نفس القيم بترتيب مختلف:

اكسل 2016 الدالة FREQUENCY

لاحظ أننا نحصل على نفس القيم ولكن بترتيب مختلف. أولاً ، عدد القيم بين 3 و 5 ، ثم عدد القيم بين 1 و 3.

سؤال آخر ، إذا كانت هناك قيمة مكررة في الوسيطة الثانية؟ في هذه الحالة ، تكون القيمة المقابلة للتكرار هي 0 :

اكسل 2016 الدالة FREQUENCY

أخيرًا ، إذا أعطيت الوسيطة الأولى والثانية نفس نطاق الخلايا B3:B17

اكسل 2016 الدالة FREQUENCY

  • أمام القيمة 5 ، لدينا عدد تكرارات هذه القيمة.
  • أمام القيمة 3 ، لدينا عدد تكرارات هذه القيمة.
  • أمام القيمة 4 ، لدينا عدد تكرارات هذه القيمة.
  • أمام تكرار القيمة 5 في السطر 6 ، نحصل على 0. وهكذا.

والنتيجة هي أن لدينا رقمًا مختلف عن 0 أمام التواجد الأول لكل رقم.

تحسب الصيغة التالية عدد عناصر المصفوفة التي تم إرجاعها بواسطة FREQUENCY والتي تختلف عن 0. هذه العناصر هي التكرارات الأولى لكل رقم في القائمة :

=SUM(IF(FREQUENCY(B3:B17,B3:B17)>=1,1,0))

كيفية حساب عدد القيم الرقمية الفريدة وكذلك النصوص

كما هو مذكور أعلاه ، فالصيغة هي :

=SUM(IF(FREQUENCY(MATCH(B3:B17,B3:B17,0),MATCH(B3:B17,B3:B17,0))>=1,1,0))

مقارنة بالصيغة السابقة ، لقد استبدلت فقط عنوان النطاق B3:B17 بـ :

MATCH(B3:B17,B3:B17,0)

ترجع الدالة MATCH موضع القيمة في الوسيطة الأولى في القائمة الواردة في الوسيطة الثانية. إذا كانت الوسيطة الأولى عبارة عن قائمة من العناصر ، فإن الدالة ترجع مصفوفة من العناصر.

الصيغة:

MATCH(B3:B17,B3:B17,0)

تُرجع مصفوفة تمثل عناصرها مواضع التكرارات الأولى لكل قيمة. يوضح المقتطف التالي عناصر هذه المصفوفة :

اكسل 2016 الدالة MATCH

إذن قامت الدالة MATCH بإرجاع أرقام ستتم معالجتها بواسطة الدالة FREQUENCY كما هو موضح أعلاه.

إذا كان هناك قيمة فارغة

ترجع الدالة MATCH الخطأ #N/A إذا أخذت كوسيطة أولى خلية فارغة.

لذلك إذا كان النطاق يحتوي على خلايا فارغة ، فسنحتاج إلى استبدال في الصيغة:

MATCH(B3:B17,B3:B17,0)

ب

IF(LEN(A3:A17)>0,MATCH(A3:A17,A3:A17,0),"")

الصيغة النهائية لحساب القيم الرقمية والنصية الفريدة هي :

=SUM(IF(FREQUENCY(IF(LEN(A3:A17)>0,MATCH(A3:A17,A3:A17,0),""),IF(LEN(A3:A17)>0,MATCH(A3:A17,A3:A17,0),""))>0.1,1,0))


<< 18. اكسل إضافة سطر جديد أو رجوع إلى السطر في خلية

20. اكسل كيفية المقارنة بين عمودين. كيفية تكملة ورقة من أخرى. >>

تعليقات القارئ

إضافة تعليق