Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Округлить слагаемые пропорционально и выйти на округленную сумму / 25 сообщений из 31, страница 1 из 2
04.09.2019, 14:59
    #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
04.09.2019, 15:19
    #39857255
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
UlqieorraОбычное округление дает неправильный итог, есть формула с нарастанием (в приложении) только как ее применить в аксес?
.
=ОКРУГЛ(СУММ($B$5:B8);0)-СУММ($D$5:D7)
неправильный итог из-за этого
...
Рейтинг: 0 / 0
04.09.2019, 15:43
    #39857278
Ulqieorra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
.[/quot]
=ОКРУГЛ(СУММ($B$5:B8);0)-СУММ($D$5:D7)
неправильный итог из-за этого[/quot]

В приложении я указал "Простое округление" дает 58 - неправильно и "Округление под сумму" дает 55 - правильно.
...
Рейтинг: 0 / 0
04.09.2019, 15:49
    #39857284
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
Ulqieorra,
1. Усечь или округлить?(если округлить-сколько знаков после запятой?)
Простое округление до целого понятно,а вот "округление под сумму" озадачивает
2.0,3333333 округлится до 0-так и надо
3.Стесняюсь спросить:что это за товар такой количество которого измеряется с точностью до 8 знаков
(если 1 кг разделить на 9 будет 0,11111111111...кг. А если 1000 граммов на 9 то,вполне приемлимые 111 граммов. Вот и решите какими единицами измерения пользоваться и в каком "месте",при проведении какой арифметической операции, округлять)
...
Рейтинг: 0 / 0
04.09.2019, 17:17
    #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
04.09.2019, 18:08
    #39857420
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
Поясните такой момент:запланирована по смете покупка 87 курток. Фактически куплено 55.
Вопрос-как "размазать" 55 курток (а не их стоимость) на 87 человек
0,621 куртки на работника
...
Рейтинг: 0 / 0
04.09.2019, 18:11
    #39857423
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
бывает целочисленное деление, точность как на экране или решения на VBA
...
Рейтинг: 0 / 0
04.09.2019, 19:12
    #39857456
Ulqieorra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
sdkuПоясните такой момент:запланирована по смете покупка 87 курток. Фактически куплено 55.
Вопрос-как "размазать" 55 курток (а не их стоимость) на 87 человек
0,621 куртки на работника

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



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

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

есть ли какой-то пример?
...
Рейтинг: 0 / 0
04.09.2019, 22:09
    #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
04.09.2019, 22:36
    #39857571
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
Ulqieorraесть ли какой-то пример?Накидал на скорую руку через 3 запроса. Решение не самое изящное, но результат тот, который нужен.
Запрос 1 распределяет доступное количество курток в процентном соотношении к требуемому количеству.
Запрос 2 определяет у кого самое большое количество
Запрос 3 убирает излишки или добавляет недостающее количество у того, у кого больше всех (Запрос 2)
...
Рейтинг: 0 / 0
04.09.2019, 22:46
    #39857574
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
ШаманРешение не самое изящное, но результат тот, который нужен.Пардон, фигню сморозил.
Не проверил толком.
Если вбить 20 или 80 - рванина получается (
...
Рейтинг: 0 / 0
05.09.2019, 00:02
    #39857610
Шаман
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
Исправил )
...
Рейтинг: 0 / 0
05.09.2019, 00:05
    #39857612
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
В 90-х так ЗП делили.
Веселуха была.
...
Рейтинг: 0 / 0
05.09.2019, 00:07
    #39857615
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
А тут надо просто разделить задачи "закупа" по собранным заявкам.
и задачи распределения имеющегося/купленного по собранным заявкам.
...
Рейтинг: 0 / 0
05.09.2019, 01:38
    #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
05.09.2019, 02:03
    #39857651
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
Задача скорее административная, чем математическая.
Округлить распределение до ближайшего целого, а получившуюся разницу отнять/поделить среди особо отличившихся/нуждающихся в ту или иную сторону.
...
Рейтинг: 0 / 0
05.09.2019, 02:09
    #39857652
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
Я бы округлил в меньшую сторону, а остатки оставил бы в резерв, для особо нуждающихся.
...
Рейтинг: 0 / 0
05.09.2019, 08:39
    #39857693
Ulqieorra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
ШаманИсправил )

Спасибо больше за пример, буду разбираться.
...
Рейтинг: 0 / 0
05.09.2019, 08:42
    #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
05.09.2019, 08:47
    #39857698
Ulqieorra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Округлить слагаемые пропорционально и выйти на округленную сумму
982183Я бы округлил в меньшую сторону, а остатки оставил бы в резерв, для особо нуждающихся.

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


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