رونالد تعدادی از اندازه گیری های سطح سیگنال را به عنوان یک سری مقادیر به اکسل وارد می کند. او باید شمارش کند که چند گروه متوالی از مقادیر در این سری وجود دارد که زیر یک آستانه مشخص قرار دارند. به عنوان مثال، او ممکن است اندازه گیری های زیر را داشته باشد:
27, 22, 22, 30, 32, 18, 22, 23, 28, 39, 24, 27, 35, 25, 21
اگر بخواهد تعداد گروههایی را بداند که اعضای آن گروهها زیر 26 نفر بودند، پاسخ 4 خواهد بود. توجه داشته باشید که این گروهبندی مقادیر متوالی زیر 26 است، نه تعداد مقادیر فردی زیر 26. بنابراین، در این در این حالت، چهار گروه بندی با پرانتز در شکل زیر نشان داده می شود:
27, [22, 22], 30, 32, [18, 22, 23], 28, 39, [24], 27, 35, [25, 21]
رونالد به این فکر می کند که از چه نوع فرمولی می تواند برای تعیین تعداد گروه بندی هایی که زیر آستانه دلخواه خود قرار می گیرند استفاده کند.
در واقع چندین راه مختلف وجود دارد که می توانید به این موضوع نزدیک شوید. اولین مورد استفاده از "ستون نتایج" است که اساساً تغییرات در آستانه و گروه بندی توالی را یادداشت می کند. به عنوان مثال، اگر مقادیر بالا را در ستون A یک کاربرگ (از سلول A2 شروع میشود) و مقدار آستانه را در سلول E1 داشتید، میتوانید از فرمول زیر در هر سلول در سمت راست یک مقدار در ستون A استفاده کنید:
=IF(A2>=$E$1,B1,IF(A1
فرمول مجموع گروه ها را زیر آستانه نگه می دارد. حداکثر (یا آخرین مقدار) ستون B تعداد کل گروه های زیر آستانه را نشان می دهد. فرمول بررسی می کند که آیا مقدار بلافاصله سمت چپ، در ستون A، بالاتر است یا پایین تر از آستانه. اگر در بالا، یا اگر نه و مقدار قبلی در ستون A نیز در زیر بود، آنگاه مجموع در حال اجرا را افزایش نمی دهد. در غیر این صورت، افزایش می یابد زیرا یک گروه بندی جدید شروع می شود.
یک روش مرتبط برای انجام شمارش استفاده از این فرمول در ستون B به جای آن است:
=IF(A2>=$E$1,0,IF(A1
این باعث می شود که ستون B حاوی یک سری مقادیر 0 یا 1 باشد. تنها زمانی که مقدار 1 رخ می دهد در شروع یک سری است که زیر آستانه است. این کار جمع کردن تمام مقادیر ستون B را آسان می کند که تعداد گروه بندی ها را ارائه می دهد.
اگر نمی خواهید از ستون نتایج استفاده کنید، می توانید از فرمول آرایه برای محاسبه تعداد استفاده کنید. فرمول زیر، مجدداً فرض میکند که مقادیر مورد تجزیه و تحلیل در ستون A هستند که از A2 شروع میشوند و مقدار آستانه در سلول E1 است. همچنین به یاد داشته باشید که فرمول های آرایه با فشار دادن Ctrl+Shift+Enter وارد می شوند.
=SUM(IF((A2:A16
این فرمول اساساً همان کاری را انجام می دهد که فرمول نتایج-ستون قبلی انجام می داد (0 یا 1 را بر اساس شروع گروه بندی زیر آستانه تعیین می کند) و سپس آن مقادیر را جمع می کند.
البته، اگر این نوع مقایسهها را زیاد انجام میدهید، ممکن است بخواهید تابع تعریفشده توسط کاربر (یک ماکرو) خود را توسعه دهید تا تعداد گروهبندیها را برای شما تعیین کند. در زیر نمونه ای از چنین تابعی آورده شده است.
Function CountGroups(ByVal MyRange As Range, Threshold As Single)
Dim Cell As Range
Dim bInGroup As Boolean
Dim iCount As Integer
Application.Volatile
iCount = 0
bInGroup = False
For Each Cell In MyRange
If Application.IsNumber(Cell) Then
If Cell < Threshold Then Less than the threshold?
If Not bInGroup Then Only count if starting new group
iCount = iCount + 1
bInGroup = True Mark as being in group
End If
Else
bInGroup = False No longer in a group
End If
End If
Next
CountGroups = iCount
End Function
تابع از طریق هر سلول در یک محدوده نگاه می کند و محاسبه می کند که آیا شروع یک گروه جدید زیر آستانه است یا خیر. شما از تابع با استفاده از فرمولی مانند زیر در کاربرگ خود استفاده می کنید:
=CountGroups(A2:A16,E1)