Не могу добиться правильных расчетов с помощью вычисляемого поля сводной таблицы. Пример приложить не удалось. Прикладываю ссылку на Яндекс Диск
Задача: На основании листа "Потребность" необходимо проводить 2 аналитики. Средняя стоимость обслуживания одного агрегата и передачи данных по закупкам для снабжения.
Проблема: Для расчёта средней стоимости обслуживания мы закупаемый материал считаем по процентному соотношению от общего количество (т.е. у нас дробное число получается), а для плана МТО нам нужны целые числа.
Какой был план (речь о сводной таблице на листа "План МТО"): 1. Создаем высчитываемое поле Количество, которое является округлением суммы по полю "Итоговое количество" требуемого количества. 2. Перемножаем Цену на Количество и получаем Стоимость прям как в школе.
План провалился, причины путаюсь выяснить. Выясняю на примере самой первой строки SLIM LINE 20” С округлением проблем не возникло (округляет он правильно - суммарное число, а не каждое по отдельности и суммирует в итоге). А вот стоимость упорно высчитывается не правильно. Я уже просто поставил перемножение Цена на Итоговое количество, но он снова выдает не те цифры. Почему-то он цену в два раза увеличивает.
Не в два, а по кол-ву строк с данным наименованием в исходной таблице. В файле вариант с доп. столбцом в исходной таблице.
Модель удалила, чтобы уменьшить размер файла
Очень сильно помогли. Может подскажите еще что за модель вы удалили, для уменьшения файла. Сам никак не могу понять как его уменьшить. И что не так с общими итогами? Сумма не соответствует истине. У себя тоже не могу настроить.
У Вас проблемы со структурой книги из исходного сообщения #1. Попробуйте скопировать лист "Потребность" в новую книгу (правой кнопкой по ярлыку листа / Переместить или скопировать, в книгу: (новая книга)...) и заново вставить сводную таблицу.
Сейчас в списке полей поле "Стоимость" отображается два раза, после копирования должно отражаться один раз.
может и ни к месту, вариант SQL запросом (см. Лист1):
Код
Private Sub CREATE_BYCRITERIA()
Dim myConnect As Object, mySQL As String, myRecord As Object, QT As QueryTable
Dim DataRange As String, strAddress As String, wshTarget As Worksheet
Set myConnect = CreateObject("ADODB.Connection")
myConnect.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ActiveWorkbook.FullName & ";" & _
"Extended Properties=""Excel 12.0;HDR=YES"""
Set myRecord = CreateObject("ADODB.Recordset")
mySQL = "SELECT DISTINCT [ПТВС], [Наименование], [Категория], [Цена_(окончательная)], ROUND(SUM([Итоговое количество]), 0)" & _
" as Количество, ([Цена_(окончательная)] * Количество) as Цена FROM [Потребность$] GROUP BY [ПТВС], [Наименование], [Категория], [Цена_(окончательная)] " & _
"HAVING [ПТВС]=[ПТВС] AND [Наименование]=[Наименование]"
myRecord.Open mySQL, myConnect
Set wshTarget = Worksheets("Лист1")
With wshTarget
.Cells.Clear
Set QT = .QueryTables.Add(myRecord, .Range("A1"))
QT.Refresh
End With
Dim conn
For Each conn In ActiveWorkbook.Worksheets("Лист1").QueryTables
conn.Delete
Next conn
Set QT = Nothing
myRecord.Close
Set myRecord = Nothing
End Sub
чтобы всё правильно считалось, возвращаемся в Power Pivot (модель данных) и пишем меры для количества и стоимости
Я понял, что вы что-то сделали, но не понял что именно. Надо мне разобраться с этим, потому как в дальнейшем пригодится. Можете дать наводку, что почитать по этой теме?