Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Алгоритм поиска нужного значения - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Алгоритм поиска нужного значения
light26 Дата: Суббота, 08.09.2012, 22:47 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Ну вот, сессия прошла, теперь контрольные решаем.
Рутинная работа с одинаковым пересчетом разных значений.
Все было бы очень просто, если бы не одно "НО"
Это "НО" описано в файле.
Нужной функции для решения проблемы в справке не нашел.
Пробовал через =ЕСЛИ - зашел в тупик.
Прошу помощи у знатоков.
К сообщению приложен файл: 4034430.xls (28.0 Kb)


Я не волшебник. Я только учусь
 
Ответить
СообщениеНу вот, сессия прошла, теперь контрольные решаем.
Рутинная работа с одинаковым пересчетом разных значений.
Все было бы очень просто, если бы не одно "НО"
Это "НО" описано в файле.
Нужной функции для решения проблемы в справке не нашел.
Пробовал через =ЕСЛИ - зашел в тупик.
Прошу помощи у знатоков.

Автор - light26
Дата добавления - 08.09.2012 в 22:47
Serge_007 Дата: Суббота, 08.09.2012, 22:59 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Особо не вникал, так надо?
Code
=ЦЕЛОЕ(B8/0,4)*0,4


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеОсобо не вникал, так надо?
Code
=ЦЕЛОЕ(B8/0,4)*0,4

Автор - Serge_007
Дата добавления - 08.09.2012 в 22:59
light26 Дата: Суббота, 08.09.2012, 23:02 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (Serge_007)
так надо?

Серж, не так. Прочти, пожалуйста, текст в файле, начиная с ячейки G15


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (Serge_007)
так надо?

Серж, не так. Прочти, пожалуйста, текст в файле, начиная с ячейки G15

Автор - light26
Дата добавления - 08.09.2012 в 23:02
Serge_007 Дата: Суббота, 08.09.2012, 23:03 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Вадим, там многабукаф, я не люблю читать более одного-двух предложений.
Чем не подходит?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВадим, там многабукаф, я не люблю читать более одного-двух предложений.
Чем не подходит?

Автор - Serge_007
Дата добавления - 08.09.2012 в 23:03
light26 Дата: Суббота, 08.09.2012, 23:10 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (Serge_007)
Вадим, там многабукаф

))))
Quote (Serge_007)
Чем не подходит?

Эта формула для одного конкретного случая, а формула должна "думать". Тут в 2 словах не пояснишь...
Короче, надо, не округлять делимое число, а добиться, чтобы результатом деления на 0,4 было целое число. И то число, которое без остатка делится на 0,4, должно возвращаться в ячейку. И еще 2 условия должны соблюдаться, но это уже вникать надо


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Суббота, 08.09.2012, 23:11
 
Ответить
Сообщение
Quote (Serge_007)
Вадим, там многабукаф

))))
Quote (Serge_007)
Чем не подходит?

Эта формула для одного конкретного случая, а формула должна "думать". Тут в 2 словах не пояснишь...
Короче, надо, не округлять делимое число, а добиться, чтобы результатом деления на 0,4 было целое число. И то число, которое без остатка делится на 0,4, должно возвращаться в ячейку. И еще 2 условия должны соблюдаться, но это уже вникать надо

Автор - light26
Дата добавления - 08.09.2012 в 23:10
Serge_007 Дата: Суббота, 08.09.2012, 23:17 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (light26)
Эта формула для одного конкретного случая

Приведи пример, когда эта формула не подойдёт


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (light26)
Эта формула для одного конкретного случая

Приведи пример, когда эта формула не подойдёт

Автор - Serge_007
Дата добавления - 08.09.2012 в 23:17
light26 Дата: Суббота, 08.09.2012, 23:38 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (Serge_007)
Приведи пример, когда эта формула не подойдёт

А она никогда не подойдет.
Эта формула
Quote (Serge_007)
=ЦЕЛОЕ(B8/0,4)*0,4
изначально округляет до целого числа результат вычислений по другой формуле (ячейка В8), а надо ПОЛУЧИТЬ ПОСЛЕ ДЕЛЕНИЯ НА 0,4 целое число. Вернее, надо найти то число, результатом деления которого на 0,4 будет целое число.
Например, по расчетам формулы у нас получилось 14,35. Если это число разделить на 0,4, мы не получим целое число. Ближайшее число от 14,35, которое делится на 0,4 без остатка - это 14,4. Вот его-то нам и надо найти
И потом, зачем ты сначала делишь, а потом умножаешь на 0,4?


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Суббота, 08.09.2012, 23:40
 
Ответить
Сообщение
Quote (Serge_007)
Приведи пример, когда эта формула не подойдёт

А она никогда не подойдет.
Эта формула
Quote (Serge_007)
=ЦЕЛОЕ(B8/0,4)*0,4
изначально округляет до целого числа результат вычислений по другой формуле (ячейка В8), а надо ПОЛУЧИТЬ ПОСЛЕ ДЕЛЕНИЯ НА 0,4 целое число. Вернее, надо найти то число, результатом деления которого на 0,4 будет целое число.
Например, по расчетам формулы у нас получилось 14,35. Если это число разделить на 0,4, мы не получим целое число. Ближайшее число от 14,35, которое делится на 0,4 без остатка - это 14,4. Вот его-то нам и надо найти
И потом, зачем ты сначала делишь, а потом умножаешь на 0,4?

Автор - light26
Дата добавления - 08.09.2012 в 23:38
kim Дата: Суббота, 08.09.2012, 23:43 | Сообщение № 8
Группа: Друзья
Ранг: Обитатель
Сообщений: 371
Репутация: 160 ±
Замечаний: 0% ±

Excel 2010
Можно попробовать формулу массива:
[vba]
Code
=ИНДЕКС((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР(СТРОКА(2:1001)/2)/1000);ПОИСКПОЗ(1=1;ОТБР((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР(СТРОКА(2:1001)/2)/1000)/B6)=(B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР(СТРОКА(2:1001)/2)/1000)/B6;))
[/vba]


Сцяна - гэта тая ж прыступка. Проста трэба дарасьці да яе.
 
Ответить
СообщениеМожно попробовать формулу массива:
[vba]
Code
=ИНДЕКС((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР(СТРОКА(2:1001)/2)/1000);ПОИСКПОЗ(1=1;ОТБР((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР(СТРОКА(2:1001)/2)/1000)/B6)=(B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР(СТРОКА(2:1001)/2)/1000)/B6;))
[/vba]

Автор - kim
Дата добавления - 08.09.2012 в 23:43
Serge_007 Дата: Суббота, 08.09.2012, 23:46 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (light26)
...надо найти то число, результатом деления которого на 0,4 будет целое число...
Теперь немного понятнее стало
Пробуй:
Code
=ОКРУГЛ(B8/0,4;)*0,4


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (light26)
...надо найти то число, результатом деления которого на 0,4 будет целое число...
Теперь немного понятнее стало
Пробуй:
Code
=ОКРУГЛ(B8/0,4;)*0,4

Автор - Serge_007
Дата добавления - 08.09.2012 в 23:46
Pelena Дата: Суббота, 08.09.2012, 23:48 | Сообщение № 10
Группа: Админы
Ранг: Местный житель
Сообщений: 19420
Репутация: 4567 ±
Замечаний: ±

Excel 365 & Mac Excel
Такой вариант
Code
=ЕСЛИ(СРЗНАЧ(ОКРВВЕРХ(B8;0,4);ОКРВНИЗ(B8;0,4))>B8;ОКРВНИЗ(B8;0,4);ОКРВВЕРХ(B8;0,4))


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеТакой вариант
Code
=ЕСЛИ(СРЗНАЧ(ОКРВВЕРХ(B8;0,4);ОКРВНИЗ(B8;0,4))>B8;ОКРВНИЗ(B8;0,4);ОКРВВЕРХ(B8;0,4))

Автор - Pelena
Дата добавления - 08.09.2012 в 23:48
kim Дата: Суббота, 08.09.2012, 23:58 | Сообщение № 11
Группа: Друзья
Ранг: Обитатель
Сообщений: 371
Репутация: 160 ±
Замечаний: 0% ±

Excel 2010
У Сергея самый оптимальный вариант.


Сцяна - гэта тая ж прыступка. Проста трэба дарасьці да яе.
 
Ответить
СообщениеУ Сергея самый оптимальный вариант.

Автор - kim
Дата добавления - 08.09.2012 в 23:58
light26 Дата: Воскресенье, 09.09.2012, 00:00 | Сообщение № 12
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (kim)
Можно попробовать формулу массива:

Спасибо, работает.
Значит через =ЕСЛИ все же тупиковое решение?
Ух ты. Пока ковырялся, тут столько постов появилось. Спасибо всем ))


Я не волшебник. Я только учусь

Сообщение отредактировал light26 - Воскресенье, 09.09.2012, 00:02
 
Ответить
Сообщение
Quote (kim)
Можно попробовать формулу массива:

Спасибо, работает.
Значит через =ЕСЛИ все же тупиковое решение?
Ух ты. Пока ковырялся, тут столько постов появилось. Спасибо всем ))

Автор - light26
Дата добавления - 09.09.2012 в 00:00
light26 Дата: Воскресенье, 09.09.2012, 00:07 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (kim)
Можно попробовать формулу массива:

Оба-на. Рано обрадовался. когда результат вычисления оказался 14,4, который без остатка делится на 0,4, формула все-равно выполнила поиск ближайшего значения и возвратила 14.
Щас проверю остальные.


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (kim)
Можно попробовать формулу массива:

Оба-на. Рано обрадовался. когда результат вычисления оказался 14,4, который без остатка делится на 0,4, формула все-равно выполнила поиск ближайшего значения и возвратила 14.
Щас проверю остальные.

Автор - light26
Дата добавления - 09.09.2012 в 00:07
kim Дата: Воскресенье, 09.09.2012, 00:15 | Сообщение № 14
Группа: Друзья
Ранг: Обитатель
Сообщений: 371
Репутация: 160 ±
Замечаний: 0% ±

Excel 2010
Вадим, не заморачивайтесь с моей формулой - в ней конечно есть ошибка, я просто испытывал разные методы построения виртуальных массивов. Уже есть правильные ответы от других участников smile Ради интереса ее можно поправить:
[vba]
Code
=ИНДЕКС((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР((СТРОКА(1:1000)-1)/2)/1000);ПОИСКПОЗ(1=1;ОТБР((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР((СТРОКА(1:1000)-1)/2)/1000)/B6)=(B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР((СТРОКА(1:1000)-1)/2)/1000)/B6;))
[/vba]


Сцяна - гэта тая ж прыступка. Проста трэба дарасьці да яе.
 
Ответить
СообщениеВадим, не заморачивайтесь с моей формулой - в ней конечно есть ошибка, я просто испытывал разные методы построения виртуальных массивов. Уже есть правильные ответы от других участников smile Ради интереса ее можно поправить:
[vba]
Code
=ИНДЕКС((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР((СТРОКА(1:1000)-1)/2)/1000);ПОИСКПОЗ(1=1;ОТБР((B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР((СТРОКА(1:1000)-1)/2)/1000)/B6)=(B8+(3-(ОСТАТ(СТРОКА(1:1000);2)+1)*2)*ОТБР((СТРОКА(1:1000)-1)/2)/1000)/B6;))
[/vba]

Автор - kim
Дата добавления - 09.09.2012 в 00:15
light26 Дата: Воскресенье, 09.09.2012, 00:20 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Работают.
Черт возьми, Холмс, но как!?
Серж, я не допру своим умом как работает твоя формула!!!


Я не волшебник. Я только учусь
 
Ответить
СообщениеРаботают.
Черт возьми, Холмс, но как!?
Серж, я не допру своим умом как работает твоя формула!!!

Автор - light26
Дата добавления - 09.09.2012 в 00:20
light26 Дата: Воскресенье, 09.09.2012, 00:22 | Сообщение № 16
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (kim)
Вадим, не заморачивайтесь с моей формулой

Легко сказать: "не заморачивайся" )))


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (kim)
Вадим, не заморачивайтесь с моей формулой

Легко сказать: "не заморачивайся" )))

Автор - light26
Дата добавления - 09.09.2012 в 00:22
Serge_007 Дата: Воскресенье, 09.09.2012, 00:38 | Сообщение № 17
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (light26)
Серж, я не допру своим умом как работает твоя формула!!!

Попробую объяснить, хотя объясняльщик из меня, прямо скажем...

Берём значение F и делим на 0,4. Получаем некую величину, которую необходимо привести к целому числу, ведь по условиям задачи надо
Quote (light26)
найти то число, результатом деления которого на 0,4 будет целое число
Используя математическое округление получаем это целое. Теперь умножив это целое на 0,4 получим искомое, заведомо близкое к F (фактически это оно и есть, только округленное) и заведомо делящееся на 0,4 без остатка

Как-то так...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (light26)
Серж, я не допру своим умом как работает твоя формула!!!

Попробую объяснить, хотя объясняльщик из меня, прямо скажем...

Берём значение F и делим на 0,4. Получаем некую величину, которую необходимо привести к целому числу, ведь по условиям задачи надо
Quote (light26)
найти то число, результатом деления которого на 0,4 будет целое число
Используя математическое округление получаем это целое. Теперь умножив это целое на 0,4 получим искомое, заведомо близкое к F (фактически это оно и есть, только округленное) и заведомо делящееся на 0,4 без остатка

Как-то так...

Автор - Serge_007
Дата добавления - 09.09.2012 в 00:38
light26 Дата: Воскресенье, 09.09.2012, 00:54 | Сообщение № 18
Группа: Друзья
Ранг: Старожил
Сообщений: 1352
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
Quote (Serge_007)
Используя математическое округление получаем это целое.

Блин, я даже через "Вычислить формулу" пошагово прошел весь процесс вычисления, чтобы понять.... все гениальное просто... )
Оказывается секрет весь в том, что делит на 0,4 формула ту дробь, которая получилась в результате предыдущих вычислений и только потом округляет.


Я не волшебник. Я только учусь
 
Ответить
Сообщение
Quote (Serge_007)
Используя математическое округление получаем это целое.

Блин, я даже через "Вычислить формулу" пошагово прошел весь процесс вычисления, чтобы понять.... все гениальное просто... )
Оказывается секрет весь в том, что делит на 0,4 формула ту дробь, которая получилась в результате предыдущих вычислений и только потом округляет.

Автор - light26
Дата добавления - 09.09.2012 в 00:54
DV Дата: Воскресенье, 09.09.2012, 07:25 | Сообщение № 19
Группа: Друзья
Ранг: Обитатель
Сообщений: 286
Репутация: 194 ±
Замечаний: 0% ±

Excel 2010 RUS
Quote (Serge_007)
Пробуй:
=ОКРУГЛ(B8/0,4;)*0,4

То же самое:
Code
=ОКРУГЛТ(B8;0,4)

только, насколько помню, с пакетом анализа для 2003-го работает.


Сообщение отредактировал DV - Воскресенье, 09.09.2012, 07:25
 
Ответить
Сообщение
Quote (Serge_007)
Пробуй:
=ОКРУГЛ(B8/0,4;)*0,4

То же самое:
Code
=ОКРУГЛТ(B8;0,4)

только, насколько помню, с пакетом анализа для 2003-го работает.

Автор - DV
Дата добавления - 09.09.2012 в 07:25
ikki Дата: Воскресенье, 09.09.2012, 16:54 | Сообщение № 20
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
округлт() в пакете анализа нет.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениеокруглт() в пакете анализа нет.

Автор - ikki
Дата добавления - 09.09.2012 в 16:54
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!