Определение значений близких к заданному
ununnamed
Дата: Вторник, 04.04.2017, 12:41 |
Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Здравствуйте. Помогите решить задачу, которую мы уже 7 лет решаем ручным перебором. Есть два столбика данных - дни и высота. Если построить график высоты от дней, то получится, что в этой зависимости есть 1 пик. И мне нужно найти два дня, слева и справа от максимума, где высота была равной половине от максимальной. Половину максимальной высоты я могу найти, но как найти два значения, близкие к получившейся дробной величине?
Здравствуйте. Помогите решить задачу, которую мы уже 7 лет решаем ручным перебором. Есть два столбика данных - дни и высота. Если построить график высоты от дней, то получится, что в этой зависимости есть 1 пик. И мне нужно найти два дня, слева и справа от максимума, где высота была равной половине от максимальной. Половину максимальной высоты я могу найти, но как найти два значения, близкие к получившейся дробной величине? ununnamed
Сообщение отредактировал ununnamed - Вторник, 04.04.2017, 12:43
Ответить
Сообщение Здравствуйте. Помогите решить задачу, которую мы уже 7 лет решаем ручным перебором. Есть два столбика данных - дни и высота. Если построить график высоты от дней, то получится, что в этой зависимости есть 1 пик. И мне нужно найти два дня, слева и справа от максимума, где высота была равной половине от максимальной. Половину максимальной высоты я могу найти, но как найти два значения, близкие к получившейся дробной величине? Автор - ununnamed Дата добавления - 04.04.2017 в 12:41
китин
Дата: Вторник, 04.04.2017, 13:13 |
Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7034
Репутация:
1079
±
Замечаний:
0% ±
Excel 2007;2010;2016
как то так: формула массиваКод
=ИНДЕКС($A$2:$A$19;ПОИСКПОЗ(МИН(ЕСЛИ($B$2:$B$19>=$E$2;$B$2:$B$19));$B$2:$B$19;0))
как то так: формула массиваКод
=ИНДЕКС($A$2:$A$19;ПОИСКПОЗ(МИН(ЕСЛИ($B$2:$B$19>=$E$2;$B$2:$B$19));$B$2:$B$19;0))
китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Ответить
Сообщение как то так: формула массиваКод
=ИНДЕКС($A$2:$A$19;ПОИСКПОЗ(МИН(ЕСЛИ($B$2:$B$19>=$E$2;$B$2:$B$19));$B$2:$B$19;0))
Автор - китин Дата добавления - 04.04.2017 в 13:13
ununnamed
Дата: Вторник, 04.04.2017, 13:20 |
Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
китин, я поменял значения, и мне выдалось два значения с одной стороны от пика. Я прикинул, что может означать эта формула, и мне кажется, что вы учли график, по которому видно, какое из значений больше или меньше полувысоты. По факту, это может отличаться, и мне нужно найти значение, ближайшее в обоих направлениях
китин, я поменял значения, и мне выдалось два значения с одной стороны от пика. Я прикинул, что может означать эта формула, и мне кажется, что вы учли график, по которому видно, какое из значений больше или меньше полувысоты. По факту, это может отличаться, и мне нужно найти значение, ближайшее в обоих направлениях ununnamed
Сообщение отредактировал ununnamed - Вторник, 04.04.2017, 13:22
Ответить
Сообщение китин, я поменял значения, и мне выдалось два значения с одной стороны от пика. Я прикинул, что может означать эта формула, и мне кажется, что вы учли график, по которому видно, какое из значений больше или меньше полувысоты. По факту, это может отличаться, и мне нужно найти значение, ближайшее в обоих направлениях Автор - ununnamed Дата добавления - 04.04.2017 в 13:20
китин
Дата: Вторник, 04.04.2017, 13:23 |
Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 7034
Репутация:
1079
±
Замечаний:
0% ±
Excel 2007;2010;2016
покажите
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Ответить
Сообщение покажите Автор - китин Дата добавления - 04.04.2017 в 13:23
ununnamed
Дата: Вторник, 04.04.2017, 13:26 |
Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
китин, график для удобства я тоже поправил вручную
китин, график для удобства я тоже поправил вручную ununnamed
Ответить
Сообщение китин, график для удобства я тоже поправил вручную Автор - ununnamed Дата добавления - 04.04.2017 в 13:26
китин
Дата: Вторник, 04.04.2017, 13:28 |
Сообщение № 6
Группа: Модераторы
Ранг: Экселист
Сообщений: 7034
Репутация:
1079
±
Замечаний:
0% ±
Excel 2007;2010;2016
я же написал:вводится одновременным нажатием трех клавиш: Ctrl+Shift+Enter
я же написал:вводится одновременным нажатием трех клавиш: Ctrl+Shift+Enter китин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Ответить
Сообщение я же написал:вводится одновременным нажатием трех клавиш: Ctrl+Shift+Enter Автор - китин Дата добавления - 04.04.2017 в 13:28
_Boroda_
Дата: Вторник, 04.04.2017, 13:34 |
Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16885
Репутация:
6599
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Неоптимизированные формулы массива (вводятся одновременным нажатием Контрл Шифт Ентер)Код
=ПРОСМОТР(;-1/(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-МАКС(B2:B19)/2)=МИН(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-МАКС(B2:B19)/2)));A2:A19)
Код
=ПРОСМОТР(;-1/(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-МАКС(B2:B19)/2)=МИН(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-МАКС(B2:B19)/2)));ИНДЕКС(A2:A19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):A19)
В файле _2 зеленое - с допячейками
Неоптимизированные формулы массива (вводятся одновременным нажатием Контрл Шифт Ентер)Код
=ПРОСМОТР(;-1/(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-МАКС(B2:B19)/2)=МИН(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-МАКС(B2:B19)/2)));A2:A19)
Код
=ПРОСМОТР(;-1/(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-МАКС(B2:B19)/2)=МИН(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-МАКС(B2:B19)/2)));ИНДЕКС(A2:A19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):A19)
В файле _2 зеленое - с допячейками _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Неоптимизированные формулы массива (вводятся одновременным нажатием Контрл Шифт Ентер)Код
=ПРОСМОТР(;-1/(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-МАКС(B2:B19)/2)=МИН(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-МАКС(B2:B19)/2)));A2:A19)
Код
=ПРОСМОТР(;-1/(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-МАКС(B2:B19)/2)=МИН(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-МАКС(B2:B19)/2)));ИНДЕКС(A2:A19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):A19)
В файле _2 зеленое - с допячейками Автор - _Boroda_ Дата добавления - 04.04.2017 в 13:34
ununnamed
Дата: Вторник, 04.04.2017, 13:35 |
Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
китин, это проблему не решает, одно значение ищет ближайшее в большую сторону, а другое - в меньшую, и оба находятся с левой стороны от пика
китин, это проблему не решает, одно значение ищет ближайшее в большую сторону, а другое - в меньшую, и оба находятся с левой стороны от пика ununnamed
Ответить
Сообщение китин, это проблему не решает, одно значение ищет ближайшее в большую сторону, а другое - в меньшую, и оба находятся с левой стороны от пика Автор - ununnamed Дата добавления - 04.04.2017 в 13:35
ununnamed
Дата: Вторник, 04.04.2017, 13:41 |
Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
_Boroda_, я не знаю, как, но это работает. Вы не могли бы в двух словах рассказать, что вообще эта формула делает?
_Boroda_, я не знаю, как, но это работает. Вы не могли бы в двух словах рассказать, что вообще эта формула делает? ununnamed
Ответить
Сообщение _Boroda_, я не знаю, как, но это работает. Вы не могли бы в двух словах рассказать, что вообще эта формула делает? Автор - ununnamed Дата добавления - 04.04.2017 в 13:41
_Boroda_
Дата: Вторник, 04.04.2017, 13:49 |
Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 16885
Репутация:
6599
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Ищет положение середины (в файле _2 ячейка Е2), делим исходный диапазон на два - до этой позиции и после и работаем с каждым по отдельности Допустим, с первым ИНДЕКС(B2:B19;E3):B2 - это =B2:B6 Ищем модули разниц МР= B2:B6 и МАКС(B2:B19) ищем в них минимум ММР= МИН(ABS(ИНДЕКС(B2:B19;E3):B2-E2/2)) и приравниваем МР к ММР. И берем из диапазона А то по порядку значение, где это приравнивание дает ИСТИНА
Ищет положение середины (в файле _2 ячейка Е2), делим исходный диапазон на два - до этой позиции и после и работаем с каждым по отдельности Допустим, с первым ИНДЕКС(B2:B19;E3):B2 - это =B2:B6 Ищем модули разниц МР= B2:B6 и МАКС(B2:B19) ищем в них минимум ММР= МИН(ABS(ИНДЕКС(B2:B19;E3):B2-E2/2)) и приравниваем МР к ММР. И берем из диапазона А то по порядку значение, где это приравнивание дает ИСТИНА _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Ищет положение середины (в файле _2 ячейка Е2), делим исходный диапазон на два - до этой позиции и после и работаем с каждым по отдельности Допустим, с первым ИНДЕКС(B2:B19;E3):B2 - это =B2:B6 Ищем модули разниц МР= B2:B6 и МАКС(B2:B19) ищем в них минимум ММР= МИН(ABS(ИНДЕКС(B2:B19;E3):B2-E2/2)) и приравниваем МР к ММР. И берем из диапазона А то по порядку значение, где это приравнивание дает ИСТИНА Автор - _Boroda_ Дата добавления - 04.04.2017 в 13:49
Manyasha
Дата: Вторник, 04.04.2017, 14:54 |
Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
902
±
Замечаний:
0% ±
Excel 2010, 2016
еще варианты:Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(ЕСЛИ((СТРОКА(A2:A19)-1)<=ПОИСКПОЗ(МАКС(B2:B19);B2:B19;);B2:B19)-E2));ABS(ЕСЛИ((СТРОКА(A2:A19)-1)<=ПОИСКПОЗ(МАКС(B2:B19);B2:B19;);B2:B19)-E2);))
(во второй формуле поменять <= на >=) и второй вариант:Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-E2));ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-E2);))
Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-E2));ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-E2);)+ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)-1)
(кусочек с определением диапазона стырила у Саши )
еще варианты:Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(ЕСЛИ((СТРОКА(A2:A19)-1)<=ПОИСКПОЗ(МАКС(B2:B19);B2:B19;);B2:B19)-E2));ABS(ЕСЛИ((СТРОКА(A2:A19)-1)<=ПОИСКПОЗ(МАКС(B2:B19);B2:B19;);B2:B19)-E2);))
(во второй формуле поменять <= на >=) и второй вариант:Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-E2));ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-E2);))
Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-E2));ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-E2);)+ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)-1)
(кусочек с определением диапазона стырила у Саши ) Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение еще варианты:Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(ЕСЛИ((СТРОКА(A2:A19)-1)<=ПОИСКПОЗ(МАКС(B2:B19);B2:B19;);B2:B19)-E2));ABS(ЕСЛИ((СТРОКА(A2:A19)-1)<=ПОИСКПОЗ(МАКС(B2:B19);B2:B19;);B2:B19)-E2);))
(во второй формуле поменять <= на >=) и второй вариант:Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-E2));ABS(B2:ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;))-E2);))
Код
=ИНДЕКС(A2:A19;ПОИСКПОЗ(МИН(ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-E2));ABS(ИНДЕКС(B2:B19;ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)):B19-E2);)+ПОИСКПОЗ(МАКС(B2:B19);B2:B19;)-1)
(кусочек с определением диапазона стырила у Саши ) Автор - Manyasha Дата добавления - 04.04.2017 в 14:54
jakim
Дата: Вторник, 04.04.2017, 16:47 |
Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1218
Репутация:
316
±
Замечаний:
0% ±
Excel 2010
Если у Вас Excel 2013,то подойдут и такие формулы без массивного ввода
Код
=AGGREGATE(15;6;A2:A19/(A2:A19>INDEX(A2:A19;MATCH(MAX(B2:B19);B2:B19;0)))/(B2:B19<MAX(B2:B19)/2);1)
Код
=AGGREGATE(14;6;A2:A19/(A2:A19<INDEX(A2:A19;MATCH(MAX(B2:B19);B2:B19;0)))/(B2:B19<MAX(B2:B19)/2);1)
Если у Вас Excel 2013,то подойдут и такие формулы без массивного ввода
Код
=AGGREGATE(15;6;A2:A19/(A2:A19>INDEX(A2:A19;MATCH(MAX(B2:B19);B2:B19;0)))/(B2:B19<MAX(B2:B19)/2);1)
Код
=AGGREGATE(14;6;A2:A19/(A2:A19<INDEX(A2:A19;MATCH(MAX(B2:B19);B2:B19;0)))/(B2:B19<MAX(B2:B19)/2);1)
jakim
Сообщение отредактировал jakim - Вторник, 04.04.2017, 16:49
Ответить
Сообщение Если у Вас Excel 2013,то подойдут и такие формулы без массивного ввода
Код
=AGGREGATE(15;6;A2:A19/(A2:A19>INDEX(A2:A19;MATCH(MAX(B2:B19);B2:B19;0)))/(B2:B19<MAX(B2:B19)/2);1)
Код
=AGGREGATE(14;6;A2:A19/(A2:A19<INDEX(A2:A19;MATCH(MAX(B2:B19);B2:B19;0)))/(B2:B19<MAX(B2:B19)/2);1)
Автор - jakim Дата добавления - 04.04.2017 в 16:47