powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Округлить слагаемые пропорционально и выйти на округленную сумму
25 сообщений из 31, страница 1 из 2
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857234
Ulqieorra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем, прошу Вашей помощи.

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

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
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;



В приложении формула округления и часть сметы для понимания. Заранее спасибо.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857255
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UlqieorraОбычное округление дает неправильный итог, есть формула с нарастанием (в приложении) только как ее применить в аксес?
.
=ОКРУГЛ(СУММ($B$5:B8);0)-СУММ($D$5:D7)
неправильный итог из-за этого
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857278
Ulqieorra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.[/quot]
=ОКРУГЛ(СУММ($B$5:B8);0)-СУММ($D$5:D7)
неправильный итог из-за этого[/quot]

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

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

Если сделать пропорцию, получатся 0.11111111 и т.д. , если это число округлить , то выйдет 58, т.е. неправильно.
Я приложил в файле вариант формулы, которая выдает диапазон значений, который в итоге даст 55, т.е. правильно.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857420
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясните такой момент:запланирована по смете покупка 87 курток. Фактически куплено 55.
Вопрос-как "размазать" 55 курток (а не их стоимость) на 87 человек
0,621 куртки на работника
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857423
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бывает целочисленное деление, точность как на экране или решения на VBA
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857456
Ulqieorra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuПоясните такой момент:запланирована по смете покупка 87 курток. Фактически куплено 55.
Вопрос-как "размазать" 55 курток (а не их стоимость) на 87 человек
0,621 куртки на работника

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



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

Как разбить 55 курток на этих людей пропорционально?
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857522
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ulqieorra,
количество курток разделить на COUNT люди. Если результат меньше 1 уменьшать COUNT люди (отбрасывая по какому-либо критерию 1 человека ) пока результат не станет >=1
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857530
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку:взять долю заказанных от количества 87 и такую же долю от 55,полученный результат округлить половину вверх,половину вниз
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857536
Ulqieorra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuUlqieorra,
количество курток разделить на COUNT люди. Если результат меньше 1 уменьшать COUNT люди (отбрасывая по какому-либо критерию 1 человека ) пока результат не станет >=1

есть ли какой-то пример?
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857558
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ulqieorra, делаю таким образом:
у нас есть три группы (Вася, Петя,Вова)
Сортирую их по возрастанию.
Все кроме последнего-самого большого получают товар обычным способом
Вова: 17/87*55=10,7=11
Вася: 20/87*55=12,6 =13
последний получает остатки.
Петя=50-(11+13)=26
пример.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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

...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857571
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ulqieorraесть ли какой-то пример?Накидал на скорую руку через 3 запроса. Решение не самое изящное, но результат тот, который нужен.
Запрос 1 распределяет доступное количество курток в процентном соотношении к требуемому количеству.
Запрос 2 определяет у кого самое большое количество
Запрос 3 убирает излишки или добавляет недостающее количество у того, у кого больше всех (Запрос 2)
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857574
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШаманРешение не самое изящное, но результат тот, который нужен.Пардон, фигню сморозил.
Не проверил толком.
Если вбить 20 или 80 - рванина получается (
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857610
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исправил )
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857612
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 90-х так ЗП делили.
Веселуха была.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857615
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тут надо просто разделить задачи "закупа" по собранным заявкам.
и задачи распределения имеющегося/купленного по собранным заявкам.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857647
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коль пример в ёкселе, то и обращаться надо в соответствующий форум(или выкладывать пример в Аксе)
А вообще как-то так (причем чем меньшее количество на большее число людей распределять тем ниже точность(большее влияние дискретности)-придется корректировать вручную.Использован Ваш файл-ссылки на ячейки по нему):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857651
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача скорее административная, чем математическая.
Округлить распределение до ближайшего целого, а получившуюся разницу отнять/поделить среди особо отличившихся/нуждающихся в ту или иную сторону.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857652
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы округлил в меньшую сторону, а остатки оставил бы в резерв, для особо нуждающихся.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857693
Ulqieorra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ШаманИсправил )

Спасибо больше за пример, буду разбираться.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857697
Ulqieorra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdkuКоль пример в ёкселе, то и обращаться надо в соответствующий форум(или выкладывать пример в Аксе)
А вообще как-то так (причем чем меньшее количество на большее число людей распределять тем ниже точность(большее влияние дискретности)-придется корректировать вручную.Использован Ваш файл-ссылки на ячейки по нему):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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. И да, пример в эсель, чтобы помочь понять что я хочу сделать в аксес.
...
Рейтинг: 0 / 0
Округлить слагаемые пропорционально и выйти на округленную сумму
    #39857698
Ulqieorra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183Я бы округлил в меньшую сторону, а остатки оставил бы в резерв, для особо нуждающихся.

Надо сразу дать разбивку, так не получится.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Округлить слагаемые пропорционально и выйти на округленную сумму
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]