Как сделать в excel перебор чисел с определенным шагом. Скажем хочу задать excel найти из диапазона цифр (от 587,01 до 591,99 с шагом 0,01) число при умножении которого на число из диапазона (от 3170,01 до 3200,99 с шагом 0,01) получим результат 1886000. Важно что бы все числа были точными до сотых без применения округлений. Т.е числа в которых после запятой встречаются цифры дальше сотых неприемлемы но и округления применять нельзя.
Заранее благодарен за ответ !
Добрый день ! Подскажите если знаете. )
Как сделать в excel перебор чисел с определенным шагом. Скажем хочу задать excel найти из диапазона цифр (от 587,01 до 591,99 с шагом 0,01) число при умножении которого на число из диапазона (от 3170,01 до 3200,99 с шагом 0,01) получим результат 1886000. Важно что бы все числа были точными до сотых без применения округлений. Т.е числа в которых после запятой встречаются цифры дальше сотых неприемлемы но и округления применять нельзя.
Вы имеете ввиду "Данные-Анализ-Подбор параметров" ? Если да то возникает вопрос. Как в строчке "Значение" указать что число может быть любым НО все цифры после сотых должны быть "НУЛИ" Я пробовал так *,**0000000 в результате excel ругается.
Вы имеете ввиду "Данные-Анализ-Подбор параметров" ? Если да то возникает вопрос. Как в строчке "Значение" указать что число может быть любым НО все цифры после сотых должны быть "НУЛИ" Я пробовал так *,**0000000 в результате excel ругается.Rafting
Да сделайте обыкновенную "таблицу умножения": в ячейки B1:SF1 с шагом 0,01 протяните 499 значений от 587,01 до 591,99 (колонки), в ячейки A2:A3100 - 3099 значений от 3170,01 до 3200,99. В ячейку B2 - формулу =$A2*B$1 и протяните на весь диапазон B2:SF3100. Дальше обычный Поиск (по Ctrl+F) и ищем значение 1886000.
Показал бы в файле, но файл получился 23 мегабайта. Но в принципе я всё и так рассказал.
P.S. Можно подсветить результаты условным форматированием с формулой: =ЦЕЛОЕ(B2)=1886000 . У меня поиском по кнопке "Найти все" нашлась 51 ячейка (в одной, правда, чуть меньше 1885999,9964, но поскольку отображалась как искомая строка, то тоже поучаствовала). Это было при ширине колонок 80 пикселей. А если увеличить ширину до, скажем, 100 пикселей (при этом в ячейках будут видны 3 знака после запятой), то останутся 50 честных вариантов.
Да сделайте обыкновенную "таблицу умножения": в ячейки B1:SF1 с шагом 0,01 протяните 499 значений от 587,01 до 591,99 (колонки), в ячейки A2:A3100 - 3099 значений от 3170,01 до 3200,99. В ячейку B2 - формулу =$A2*B$1 и протяните на весь диапазон B2:SF3100. Дальше обычный Поиск (по Ctrl+F) и ищем значение 1886000.
Показал бы в файле, но файл получился 23 мегабайта. Но в принципе я всё и так рассказал.
P.S. Можно подсветить результаты условным форматированием с формулой: =ЦЕЛОЕ(B2)=1886000 . У меня поиском по кнопке "Найти все" нашлась 51 ячейка (в одной, правда, чуть меньше 1885999,9964, но поскольку отображалась как искомая строка, то тоже поучаствовала). Это было при ширине колонок 80 пикселей. А если увеличить ширину до, скажем, 100 пикселей (при этом в ячейках будут видны 3 знака после запятой), то останутся 50 честных вариантов.Gustav
Я уже делал как предлагает Gustav в итоге тратится очень много времени.
Конкретное описание хотелки:
Получаю смету на определенную сумму 1 886 000 Площадь работ по смете 3200 кв.м Когда заношу данные в электронную систему, система выводит цену за 1 кв.метр равную 1 886 000/3200 = 589,38 (цифра округляется, реальный же результат 589,375. Система выводит значение до сотых) В дальнейшем система начинает ругаться на то что 3200*589,38 не равно 1 886 000. Допустимо менять значения 3200 и 589,38 в небольшом диапазоне. Главное что бы при умножении двух значений получался конкретный результат 1 886 000. Так как задача регулярная, ищу способ как задать excel цифру которую нужно получить путем умножения числа X на Y. где X - это диапазон значений от 3100,00 до 3300,00 с шагом 0,01 а Y - это диапазон значений от 560,00 до 600,00 с шагом 0,01 Надеюсь понятно объяснил. Заранее благодарю за ответ.
Я уже делал как предлагает Gustav в итоге тратится очень много времени.
Конкретное описание хотелки:
Получаю смету на определенную сумму 1 886 000 Площадь работ по смете 3200 кв.м Когда заношу данные в электронную систему, система выводит цену за 1 кв.метр равную 1 886 000/3200 = 589,38 (цифра округляется, реальный же результат 589,375. Система выводит значение до сотых) В дальнейшем система начинает ругаться на то что 3200*589,38 не равно 1 886 000. Допустимо менять значения 3200 и 589,38 в небольшом диапазоне. Главное что бы при умножении двух значений получался конкретный результат 1 886 000. Так как задача регулярная, ищу способ как задать excel цифру которую нужно получить путем умножения числа X на Y. где X - это диапазон значений от 3100,00 до 3300,00 с шагом 0,01 а Y - это диапазон значений от 560,00 до 600,00 с шагом 0,01 Надеюсь понятно объяснил. Заранее благодарю за ответ.Rafting
Насколько я знаю, перемножение двух десятичных дробей (или чисел со знаками после запятой) в принципе не может дать целое число. Соответственно, одно из чисел обязательно должно быть целым. А второе, если оно дробное, должно быть кратным целому делителю. Если точность два знака после запятой, соответственно целые делители числа 10000 (их 25).
Насколько я знаю, перемножение двух десятичных дробей (или чисел со знаками после запятой) в принципе не может дать целое число. Соответственно, одно из чисел обязательно должно быть целым. А второе, если оно дробное, должно быть кратным целому делителю. Если точность два знака после запятой, соответственно целые делители числа 10000 (их 25).pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Сообщение отредактировал pabchek - Вторник, 11.04.2017, 15:42
Я уже делал как предлагает Gustav в итоге тратится очень много времени.
Возьмите такой элементарный макрос - времени совсем немного, но не знаю, насколько устроит ответ [vba]
Код
Sub podbor() Dim i, j, mult, delt, mini, summ, imin, jmin
summ = 1886000 mini = summ
For i = 587.01 To 591.99 Step 0.01 For j = 3170.01 To 3200.99 Step 0.01
mult = Round(i, 2) * Round(j, 2)
delt = Abs(mult - summ) If delt < mini Then mini = delt imin = i jmin = j End If Next j Next i Debug.Print Round(imin, 2), Round(jmin, 2), Round(imin, 2) * Round(jmin, 2), mini End Sub
Я уже делал как предлагает Gustav в итоге тратится очень много времени.
Возьмите такой элементарный макрос - времени совсем немного, но не знаю, насколько устроит ответ [vba]
Код
Sub podbor() Dim i, j, mult, delt, mini, summ, imin, jmin
summ = 1886000 mini = summ
For i = 587.01 To 591.99 Step 0.01 For j = 3170.01 To 3200.99 Step 0.01
mult = Round(i, 2) * Round(j, 2)
delt = Abs(mult - summ) If delt < mini Then mini = delt imin = i jmin = j End If Next j Next i Debug.Print Round(imin, 2), Round(jmin, 2), Round(imin, 2) * Round(jmin, 2), mini End Sub
В указанных диапазонах при ограничении 2-х знаков - нереально. Как видите, минимальное расстояние, на которое удается подойти к этой величине - 0,0036. Ближе не подойти.
В указанных диапазонах при ограничении 2-х знаков - нереально. Как видите, минимальное расстояние, на которое удается подойти к этой величине - 0,0036. Ближе не подойти.Gustav
Указанные диапазоны просто как примеры. По большому счету нужна таблица в которую забиваю значения диапазонов и получаю нужный результат. Хотелось бы научится делать самостоятельно. (не знаю хватит ли на это своих знаний)
Указанные диапазоны просто как примеры. По большому счету нужна таблица в которую забиваю значения диапазонов и получаю нужный результат. Хотелось бы научится делать самостоятельно. (не знаю хватит ли на это своих знаний)Rafting