Определение числа кластеров в ряду
Megamen2
Дата: Понедельник, 08.10.2018, 11:12 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Здравствуйте. У меня такой вопрос. Как в числовом ряду - формулой рассчитать количество кластеров заданного размера ? В столбце BN - находятся числа - либо 0, либо 1. Но расставлены они неравномерно. В ячейке BN1 - задается размер искомого кластера (кластер должен быть не меньше этого размера). В ячейке BN2 - задается уровень пропуска (если посередине скопления находится такой же или больший пропуск - значит это как минимум граница разделяющая кластеры) После определения количества скоплений единиц - нужно вывести результат в ячейку BN3.
Здравствуйте. У меня такой вопрос. Как в числовом ряду - формулой рассчитать количество кластеров заданного размера ? В столбце BN - находятся числа - либо 0, либо 1. Но расставлены они неравномерно. В ячейке BN1 - задается размер искомого кластера (кластер должен быть не меньше этого размера). В ячейке BN2 - задается уровень пропуска (если посередине скопления находится такой же или больший пропуск - значит это как минимум граница разделяющая кластеры) После определения количества скоплений единиц - нужно вывести результат в ячейку BN3. Megamen2
Ответить
Сообщение Здравствуйте. У меня такой вопрос. Как в числовом ряду - формулой рассчитать количество кластеров заданного размера ? В столбце BN - находятся числа - либо 0, либо 1. Но расставлены они неравномерно. В ячейке BN1 - задается размер искомого кластера (кластер должен быть не меньше этого размера). В ячейке BN2 - задается уровень пропуска (если посередине скопления находится такой же или больший пропуск - значит это как минимум граница разделяющая кластеры) После определения количества скоплений единиц - нужно вывести результат в ячейку BN3. Автор - Megamen2 Дата добавления - 08.10.2018 в 11:12
Светлый
Дата: Понедельник, 08.10.2018, 22:03 |
Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1868
Репутация:
536
±
Замечаний:
0% ±
Excel 2013, 2016
Здравствуйте! Файл надо сохранить в формате .XLSX и использовать формулу массива (Ctrl+Shift+Enter):Код
=СУММ(--(СЧЁТЕСЛИ(СМЕЩ(BN1;ЕСЛИОШИБКА(ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999);;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(6:267));СТРОКА(1:9))-ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(7:268));СТРОКА(1:9)-1);6);1));999)>=BN1))
Оптимизировать формулу не успел. *Исправил в формуле 1 на 999, а то последний кластер не учитывался.
Здравствуйте! Файл надо сохранить в формате .XLSX и использовать формулу массива (Ctrl+Shift+Enter):Код
=СУММ(--(СЧЁТЕСЛИ(СМЕЩ(BN1;ЕСЛИОШИБКА(ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999);;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(6:267));СТРОКА(1:9))-ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(7:268));СТРОКА(1:9)-1);6);1));999)>=BN1))
Оптимизировать формулу не успел. *Исправил в формуле 1 на 999, а то последний кластер не учитывался. Светлый
Программировать проще, чем писать стихи.
Сообщение отредактировал Светлый - Понедельник, 08.10.2018, 22:10
Ответить
Сообщение Здравствуйте! Файл надо сохранить в формате .XLSX и использовать формулу массива (Ctrl+Shift+Enter):Код
=СУММ(--(СЧЁТЕСЛИ(СМЕЩ(BN1;ЕСЛИОШИБКА(ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999);;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(6:267));СТРОКА(1:9))-ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>=BN2;СТРОКА(7:268));СТРОКА(1:9)-1);6);1));999)>=BN1))
Оптимизировать формулу не успел. *Исправил в формуле 1 на 999, а то последний кластер не учитывался. Автор - Светлый Дата добавления - 08.10.2018 в 22:03
Светлый
Дата: Понедельник, 08.10.2018, 22:41 |
Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1868
Репутация:
536
±
Замечаний:
0% ±
Excel 2013, 2016
Ещё ошибку обнаружил. Теперь формула такая:Код
=СУММ(--(СЧЁТЕСЛИ(СМЕЩ(BN1;ЕСЛИОШИБКА(ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999);;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9))-ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999));1)>=BN1))
Ещё ошибку обнаружил. Теперь формула такая:Код
=СУММ(--(СЧЁТЕСЛИ(СМЕЩ(BN1;ЕСЛИОШИБКА(ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999);;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9))-ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999));1)>=BN1))
Светлый
Программировать проще, чем писать стихи.
Ответить
Сообщение Ещё ошибку обнаружил. Теперь формула такая:Код
=СУММ(--(СЧЁТЕСЛИ(СМЕЩ(BN1;ЕСЛИОШИБКА(ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999);;ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9))-ЕСЛИ(СТРОКА(1:9)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТРОКА(1:9)-1);6);999));1)>=BN1))
Автор - Светлый Дата добавления - 08.10.2018 в 22:41
Megamen2
Дата: Понедельник, 08.10.2018, 22:49 |
Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация:
0
±
Замечаний:
0% ±
Excel 2007
Светлый, все работает. Спасибо.
Сообщение отредактировал Megamen2 - Понедельник, 08.10.2018, 22:49
Ответить
Сообщение Светлый, все работает. Спасибо. Автор - Megamen2 Дата добавления - 08.10.2018 в 22:49
Светлый
Дата: Вторник, 09.10.2018, 21:59 |
Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1868
Репутация:
536
±
Замечаний:
0% ±
Excel 2013, 2016
Может, это уже не нужно, но ещё один вариант компактнее:Код
=СУММ(Ч(МУМНОЖ(ТРАНСП((ЕСЛИОШИБКА(ЕСЛИ(СТОЛБЕЦ(A:G)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТОЛБЕЦ(A:G)-1);6);)<СТРОКА(7:267))*(ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(7:268));СТОЛБЕЦ(A:G));)>СТРОКА(7:267)));--BN7:BN267)>=BN1))
Может, это уже не нужно, но ещё один вариант компактнее:Код
=СУММ(Ч(МУМНОЖ(ТРАНСП((ЕСЛИОШИБКА(ЕСЛИ(СТОЛБЕЦ(A:G)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТОЛБЕЦ(A:G)-1);6);)<СТРОКА(7:267))*(ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(7:268));СТОЛБЕЦ(A:G));)>СТРОКА(7:267)));--BN7:BN267)>=BN1))
Светлый
Программировать проще, чем писать стихи.
Ответить
Сообщение Может, это уже не нужно, но ещё один вариант компактнее:Код
=СУММ(Ч(МУМНОЖ(ТРАНСП((ЕСЛИОШИБКА(ЕСЛИ(СТОЛБЕЦ(A:G)-1;НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(6:267));СТОЛБЕЦ(A:G)-1);6);)<СТРОКА(7:267))*(ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ(ЧАСТОТА(СТРОКА(7:267);BN7:BN267*СТРОКА(7:267))>BN2;СТРОКА(7:268));СТОЛБЕЦ(A:G));)>СТРОКА(7:267)));--BN7:BN267)>=BN1))
Автор - Светлый Дата добавления - 09.10.2018 в 21:59