Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
Добрый день всем, прошу Вашей помощи.

Веду базу снабжения шахт материалами, пытаюсь переехать на аксес.
Общее товара необходимо разбить по шахтам (строкам) пропорционально и округленно.

Обычное округление дает неправильный итог, есть формула с нарастанием (в приложении) только как ее применить в аксес?
Попробовал в запросе воспроизвести, но выдает ошибку о циклической ссылке.

SELECT 
t1.order_id, 
t1.order_quantity, 
Nz(Sum(t2.order_quantity),0)+t1.order_quantity AS OrderTop, 
Nz(Sum(OrderTop2),0) AS OrderTop2
FROM test AS t1 LEFT JOIN test AS t2 
ON t1.order_id > t2.order_id
GROUP BY t1.order_id, t1.order_quantity;


В приложении формула округления и часть сметы для понимания. Заранее спасибо.

К сообщению приложен файл (Округления (1).xls - 43Kb) cкачать
4 сен 19, 14:59    [21963521]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 625
Ulqieorra
Обычное округление дает неправильный итог, есть формула с нарастанием (в приложении) только как ее применить в аксес?
.

=ОКРУГЛ(СУММ($B$5:B8);0)-СУММ($D$5:D7)
неправильный итог из-за этого
4 сен 19, 15:19    [21963548]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
.[/quot]
=ОКРУГЛ(СУММ($B$5:B8);0)-СУММ($D$5:D7)
неправильный итог из-за этого[/quot]

В приложении я указал "Простое округление" дает 58 - неправильно и "Округление под сумму" дает 55 - правильно.
4 сен 19, 15:43    [21963592]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
Ulqieorra,
1. Усечь или округлить?(если округлить-сколько знаков после запятой?)
Простое округление до целого понятно,а вот "округление под сумму" озадачивает
2.0,3333333 округлится до 0-так и надо
3.Стесняюсь спросить:что это за товар такой количество которого измеряется с точностью до 8 знаков
(если 1 кг разделить на 9 будет 0,11111111111...кг. А если 1000 граммов на 9 то,вполне приемлимые 111 граммов. Вот и решите какими единицами измерения пользоваться и в каком "месте",при проведении какой арифметической операции, округлять)
4 сен 19, 15:49    [21963600]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
sdku
Ulqieorra,
1. Усечь или округлить?(если округлить-сколько знаков после запятой?)
Простое округление до целого понятно,а вот "округление под сумму" озадачивает
2.0,3333333 округлится до 0-так и надо
3.Стесняюсь спросить:что это за товар такой количество которого измеряется с точностью до 8 знаков
(если 1 кг разделить на 9 будет 0,11111111111...кг. А если 1000 граммов на 9 то,вполне приемлимые 111 граммов. Вот и решите какими единицами измерения пользоваться и в каком "месте",при проведении какой арифметической операции, округлять)


Попытаюсь прояснить.
Есть смета на 87 штук товара на определенную сумму. Поставщик предложил цену выше и на сумму сметы можно купить только 55 штук товара. Теперь эти 55 штук нужно пропорционально размазать по диапазону строк (из которых складывается смета 87 шт.)

Если сделать пропорцию, получатся 0.11111111 и т.д. , если это число округлить , то выйдет 58, т.е. неправильно.
Я приложил в файле вариант формулы, которая выдает диапазон значений, который в итоге даст 55, т.е. правильно.
4 сен 19, 17:17    [21963721]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
Поясните такой момент:запланирована по смете покупка 87 курток. Фактически куплено 55.
Вопрос-как "размазать" 55 курток (а не их стоимость) на 87 человек
0,621 куртки на работника
4 сен 19, 18:08    [21963777]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
бывает целочисленное деление, точность как на экране или решения на VBA
4 сен 19, 18:11    [21963780]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
sdku
Поясните такой момент:запланирована по смете покупка 87 курток. Фактически куплено 55.
Вопрос-как "размазать" 55 курток (а не их стоимость) на 87 человек
0,621 куртки на работника


Как размазать я показал в файле приложения, вопрос как это сделать в базе аксес с помощью запросов или вба?
4 сен 19, 19:12    [21963837]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
Вы упорно не хотите ответить:
='ОС-604'!$A8(шт)*$B$2(шт)/$A$2(шт)
Используя данные по количеству хотите получить информацию про финансы. Не понятно,однако!
(зная сумму заложенную в смету и зная цену за единицу товара Вы можете ответить на вопрос "достаточно ли средств?" Да\нет и не более того сколько бы не округлялись (делились,умножались данные) Сформулируйте вопрос на который Вы хотите получить ответ,используя только те данные,которые имеете
4 сен 19, 19:35    [21963859]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
sdku
Вы упорно не хотите ответить:
='ОС-604'!$A8(шт)*$B$2(шт)/$A$2(шт)
Используя данные по количеству хотите получить информацию про финансы. Не понятно,однако!
(зная сумму заложенную в смету и зная цену за единицу товара Вы можете ответить на вопрос "достаточно ли средств?" Да\нет и не более того сколько бы не округлялись (делились,умножались данные) Сформулируйте вопрос на который Вы хотите получить ответ,используя только те данные,которые имеете




Представим есть договор на 55 курток
Заказывали их 87 штук.
Вася заказал 20
Петя 50
Вова 17

Как разбить 55 курток на этих людей пропорционально?
4 сен 19, 19:42    [21963867]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
Ulqieorra,
количество курток разделить на COUNT люди. Если результат меньше 1 уменьшать COUNT люди (отбрасывая по какому-либо критерию 1 человека ) пока результат не станет >=1
4 сен 19, 21:19    [21963964]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
вдогонку:взять долю заказанных от количества 87 и такую же долю от 55,полученный результат округлить половину вверх,половину вниз
4 сен 19, 21:25    [21963972]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
sdku
Ulqieorra,
количество курток разделить на COUNT люди. Если результат меньше 1 уменьшать COUNT люди (отбрасывая по какому-либо критерию 1 человека ) пока результат не станет >=1


есть ли какой-то пример?
4 сен 19, 21:30    [21963981]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
alecko
Member

Откуда: Башкирия
Сообщений: 561
Ulqieorra, делаю таким образом:
у нас есть три группы (Вася, Петя,Вова)
Сортирую их по возрастанию.
Все кроме последнего-самого большого получают товар обычным способом
Вова: 17/87*55=10,7=11
Вася: 20/87*55=12,6 =13
последний получает остатки.
Петя=50-(11+13)=26
пример.
+
Sub Raspr()
const Bylo&=87, Stalo&=55
Dim Krt,Resmassiv&(), i&, sm&
sm=0
krt=array(17, 20,50)
redim Resmassiv(ubound(krt))
for i=0 to ubound(krt)-1
Resmassiv(i)=krt(i)/Bylo*Stalo 
sm=sm+Resmassiv(i)
next i
Resmassiv(i)=Stalo-sm
for i=0 to ubound(Resmassiv)
debug.print Resmassiv(i)
next i
end sub
4 сен 19, 22:09    [21964014]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Шаман
Member

Откуда:
Сообщений: 197
Ulqieorra
есть ли какой-то пример?
Накидал на скорую руку через 3 запроса. Решение не самое изящное, но результат тот, который нужен.
Запрос 1 распределяет доступное количество курток в процентном соотношении к требуемому количеству.
Запрос 2 определяет у кого самое большое количество
Запрос 3 убирает излишки или добавляет недостающее количество у того, у кого больше всех (Запрос 2)

К сообщению приложен файл (куртки.zip - 19Kb) cкачать
4 сен 19, 22:36    [21964028]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Шаман
Member

Откуда:
Сообщений: 197
Шаман
Решение не самое изящное, но результат тот, который нужен.
Пардон, фигню сморозил.
Не проверил толком.
Если вбить 20 или 80 - рванина получается (
4 сен 19, 22:46    [21964032]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Шаман
Member

Откуда:
Сообщений: 197
Исправил )

К сообщению приложен файл (куртки2.zip - 20Kb) cкачать
5 сен 19, 00:02    [21964078]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
982183
Member

Откуда: VL
Сообщений: 3213
В 90-х так ЗП делили.
Веселуха была.
5 сен 19, 00:05    [21964080]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
982183
Member

Откуда: VL
Сообщений: 3213
А тут надо просто разделить задачи "закупа" по собранным заявкам.
и задачи распределения имеющегося/купленного по собранным заявкам.
5 сен 19, 00:07    [21964083]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
Коль пример в ёкселе, то и обращаться надо в соответствующий форум(или выкладывать пример в Аксе)
А вообще как-то так (причем чем меньшее количество на большее число людей распределять тем ниже точность(большее влияние дискретности)-придется корректировать вручную.Использован Ваш файл-ссылки на ячейки по нему):
Sub my()
Dim i
'после последней строки с данными Region должен заканчиваться
'если нужен итог-пропустить\вставить строку
'процедуру назначить кнопке,до её нажатия выделить любую ячейку внутри таблицы
For i = 6 To ActiveCell.CurrentRegion.Rows.Count + 4 'от первой строки данных до последней строки в таблице
If i \ 2 = i / 2 Then
Cells(i, 7) = Int(Cells(i, 2)) 'округление до целого числа-вниз если строка четная
Else
Cells(i, 7) = -Int(-Cells(i, 2))'вверх если строка нечетная
End If
Next
End Sub
5 сен 19, 01:38    [21964115]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
982183
Member

Откуда: VL
Сообщений: 3213
Задача скорее административная, чем математическая.
Округлить распределение до ближайшего целого, а получившуюся разницу отнять/поделить среди особо отличившихся/нуждающихся в ту или иную сторону.
5 сен 19, 02:03    [21964119]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
982183
Member

Откуда: VL
Сообщений: 3213
Я бы округлил в меньшую сторону, а остатки оставил бы в резерв, для особо нуждающихся.
5 сен 19, 02:09    [21964120]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
Шаман
Исправил )


Спасибо больше за пример, буду разбираться.
5 сен 19, 08:39    [21964179]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
sdku
Коль пример в ёкселе, то и обращаться надо в соответствующий форум(или выкладывать пример в Аксе)
А вообще как-то так (причем чем меньшее количество на большее число людей распределять тем ниже точность(большее влияние дискретности)-придется корректировать вручную.Использован Ваш файл-ссылки на ячейки по нему):
Sub my()
Dim i
'после последней строки с данными Region должен заканчиваться
'если нужен итог-пропустить\вставить строку
'процедуру назначить кнопке,до её нажатия выделить любую ячейку внутри таблицы
For i = 6 To ActiveCell.CurrentRegion.Rows.Count + 4 'от первой строки данных до последней строки в таблице
If i \ 2 = i / 2 Then
Cells(i, 7) = Int(Cells(i, 2)) 'округление до целого числа-вниз если строка четная
Else
Cells(i, 7) = -Int(-Cells(i, 2))'вверх если строка нечетная
End If
Next
End Sub



Проверил, получается 52 вместо 55. И да, пример в эсель, чтобы помочь понять что я хочу сделать в аксес.

К сообщению приложен файл (Округления (1).xls - 56Kb) cкачать
5 сен 19, 08:42    [21964185]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
982183
Я бы округлил в меньшую сторону, а остатки оставил бы в резерв, для особо нуждающихся.


Надо сразу дать разбивку, так не получится.
5 сен 19, 08:47    [21964186]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
Ulqieorra
Шаман
Исправил )


Спасибо больше за пример, буду разбираться.


если поставить 9 выдает к распределению 7

К сообщению приложен файл (куртки2.rar - 20Kb) cкачать
5 сен 19, 10:05    [21964269]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
Ulqieorra
Ulqieorra
пропущено...


Спасибо больше за пример, буду разбираться.


если поставить 9 выдает к распределению 7


разобрался, все считает)
5 сен 19, 10:12    [21964278]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
Ulqieorra
....Проверил, получается 52 вместо 55...
На представленных данных.На других будет другая точность,в силу дискретности,в очень редких случаях точность будет абсолютной
982183
Задача скорее административная, чем математическая.
И без ручной корректировки не обойтись
5 сен 19, 10:39    [21964312]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
Ulqieorra
Ulqieorra
пропущено...


Спасибо больше за пример, буду разбираться.


если поставить 9 выдает к распределению 7



Немного еще поковырялся, если в диапазоне будет более одного максимального значения, считать будет неправильно.

Запрос 2 выдает более одного максимального значения.
Выход: создать запрос с группировкой.

Но тогда Запрос 3 не работает, пишет "нужен обновляемый запрос" (т.е. запрос 2, который из-за группировки заблокирован)
Выход: создать запрос на создание таблицы и добавить его вызов в кнопку распределения

К сообщению приложен файл (куртки2.rar - 25Kb) cкачать
5 сен 19, 15:58    [21964718]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6292
Ulqieorra
...Немного еще поковырялся, если в диапазоне будет более одного максимального значения, считать будет неправильно....
А если у бабушки будет х.. то она станет дедушкой.
Успехов в решении интеллектуальной задачи математическими средствами
5 сен 19, 18:12    [21964856]     Ответить | Цитировать Сообщить модератору
 Re: Округлить слагаемые пропорционально и выйти на округленную сумму  [new]
Ulqieorra
Member

Откуда:
Сообщений: 13
В общем предыдущий пример не совсем верно считает, получаются минусовые значения, переделал с перебором значений

К сообщению приложен файл (gg.rar - 62Kb) cкачать
6 сен 19, 11:10    [21965177]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft Access Ответить