Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13

Описание модели нормы остатка денежных средств

07.05.2009, 00:31. Показов 4261. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, Уважаемые программисты!
Помогите, пожалуйста, вот в чем:
Существует задачка. Честно не знаю как ее тут описать, поэтому и добавила как есть во вложение.
Если кому не трудно, посмотрите, пожалуйста. Дохожу до момента, когда в VBA написала алгоритм, а что дальше делать не знаю. Программу писал программист, может что-то не так? Не считается MyFunc и все тут.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2009, 00:31
Ответы с готовыми решениями:

Внутреннее перемещение денежных средств
1С:Предприятие 8.2 (8.2.19.116) конфигурация "Управление торговлей", редакция 10.3 (10.3.40.1) Имеется РИБ при проведении документа...

Показать остаток денежных средств
Добрый день! Существует таблица с заложенными денежными средствами распределённая на три организации по кодам ОКПД2 и статьям расхода....

Определить общую сумму денежных средств
Условие задачи: На столе лежит листок. На нем написано, что в течении девяти месяцев я получу от родителей 1500 рублей, сдача после...

23
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 12:07
Хорошо бы еще взглянуть на эксель файл с тем что Вы сделали.
Значит говорите до макроса дошли?
Перешли в редактор? (Alt+F11)
Переписали как в методичке?
Переходите обратно в эксель и посмотрите появилась ли Ваша функция: щелкните на пустую ячейку а потом щелкните на fx (вверху перед строкой для ввода формулы). У Вас откроется список стандартных формул. Из списка Категория выберите Определенны пользователем (самая последняя). Если в списке появилась Ваша функция то все нормально. Тогда не вижу в чем загвоздка.
1
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 13:06  [ТС]
Спасибо, огромное, что откликнулись!
Да, именно так и получилось, функция появилась в списке, но она не считает...Я в деле VBA новичок, поэтому думала, что после написания алгоритма в редакторе надо произвести еще какие-либо действия...
Файл Excel во вложении.
Вложения
Тип файла: rar VBA(1).rar (24.0 Кб, 20 просмотров)
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 15:11
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

У Вас опечатки были и еще n=8 а значений 7 и еще макрос не понимает "ОА()" в параметрах функции, я сделал "ОА" и заработало. Не знаю что получилсь, но вот это выдает какие-то цифры:
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Function MyFunc(P, A1, H, OA) As Double
 
'Описание передаваемых переменных
'P-вероятность
'A1-начало первого интервала
'H-интервал
'OA()-массив, содержащий частоты
Dim G(7) As Double 'Накопленная частота
Dim Interval(7) As Double  'Интервалы частот
Dim Sum_fr As Double 'Сумма частот
 
'Считаем сумму чисел
n = 7
Sum_fr = 0
For I = 0 To n - 1
    Sum_fr = Sum_fr + OA(I + 1)
Next I
 
'Разбор массива частот
Interval(0) = A1 - H / 2
G(0) = 0
For I = 0 To n - 1
    Interval(I + 1) = Interval(I) + H
    G(I + 1) = G(I) + OA(I + 1) / Sum_fr
Next I
 
'Возвращаем искомое значение
For I = 0 To n - 1
    If G(I) < A1 Then MyFunc = 0
         If G(I) <= P And P <= G(I + 1) Then
       MyFunc = Interval(I) + (P - G(I)) * (Interval(I + 1) - Interval(I) / G(I + 1) - G(I))
    Exit Function
    End If
Next I
End Function
И еще: в ячейке В37 лучше так написать:
='VBA(1).xls'!Module9.MyFunc(A37;$B$25;$ B$24;$B$28:$B$34)
Тогда она будет правильно тянуться вниз.
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 18:47  [ТС]
Спасибо большое!
Теперь считает, только не те цифры выдает, но по крайней мере хоть что-то. Первое значение так и не считает, а дальше вот так:
#ЗНАЧ!
-16363731,60
-17091960,49
-17820189,38
-21332822,86
-29043481,73
-33412855,09
должно быть:
-809830,05
-573904,12
-101054,23
369796,73
601345,23
841342,03
189344,56
А это не может зависить от версии программы? Просто уже не знаю, что предположить...
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 19:19
Цитата Сообщение от Helenka Посмотреть сообщение
А это не может зависить от версии программы?
Нет!

Нашел ошибку: у Вас частоты не так вычисляются! Вы написали формулу в первой строке и растянули ее вниз, а для функции "Частота" делать нужно не так. Эта функция выощвращает сразу весь массив частот и формулу нужно задавать для всего столбца.
Делается так:
1. Выделяете ячейки В28:В34
2. вводите (копируете) формулу =ЧАСТОТА(I3:I19;A28:A34)
3. нажмите Ctrl+Shift+Enter (по краям формулы должны появится фигурные скобки {} )

Так же скопируйте еще раз макрос ПОЛНОСТЬЮ т.к. у меня считаются все значения:
2234728,204
4260510,986
4353359,16
6346947,924
6555268,339
6659428,546
6763588,753

а после правильного нахождения частот:
858556,1151
1065428,602
1272301,088
1479173,575
2299802,397
6335569,077
6439729,276

Сейчас макрос посмотрю, ошибка в нем, но найти ее трудно т.к. я даже не понимаю что там происходит
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 19:34  [ТС]
На счет частоты, да, действительно, там не так. Я уже разобралась по этому поводу, поэтому дико извиняюсь, что послала не тот файл. А вот с макросом, сделала еще раз, но все равно значения те же.
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 19:42
Кстати если я что-то в чем-то понимаю то дыра это не только нора, но и потенциальная ошибка в программе
Я имею ввиду что в методичке написано:
PureBasic
1
2
3
FOR I = 0 TO n - 1
    Sum_fr = Sum_fr + OA(I)
NEXT I
ОА это массив ячеек, передаваемый в функцию. Этот массив интересен тем, что как и ссылки на ячейки, нумерация в нем идет с 1!!! А в коде цикл считает с 0 и первое значение не "0", а "Частоты" (заголовок таблицы).
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 20:05  [ТС]
ОА это массив ячеек, передаваемый в функцию. Этот массив интересен тем, что как и ссылки на ячейки, нумерация в нем идет с 1!!! А в коде цикл считает с 0 и первое значение не "0", а "Частоты" (заголовок таблицы).
Не совсем поняла, что Вы имели в виду?

Теперь алгоритм выглядит так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
FUNCTION MyFunc(P, A1, H, OA) AS DOUBLE
 
'Описание передаваемых переменных
'P-вероятность
'A1-начало первого интервала
'H-интервал
'OA()-массив, содержащий частоты
DIM G(7) AS DOUBLE 'Накопленная частота
DIM Interval(7) AS DOUBLE 'Интервалы частот
DIM Sum_fr AS DOUBLE 'Сумма частот
 
'Считаем сумму чисел
n = 7
Sum_fr = 0
FOR I = 0 TO n - 1
Sum_fr = Sum_fr + OA(I + 1)
NEXT I
 
'Разбор массива частот
Interval(0) = A1 - H / 2
G(0) = 0
FOR I = 0 TO n - 1
Interval(I + 1) = Interval(I) + H
G(I + 1) = G(I) + OA(I + 1) / Sum_fr
NEXT I
 
'Возвращаем искомое значение
FOR I = 0 TO n - 1
IF G(I) < A1 THEN MyFunc = 0
IF G(I) <= P AND P <= G(I + 1) THEN
MyFunc = Interval(I) + (P - G(I)) * (Interval(I + 1) - Interval(I) / G(I + 1) - G(I))
EXIT FUNCTION
END IF
NEXT I
END FUNCTION
Выводит такие цифры:
-3057234,315
-2848913,823
-2640593,33
-2432272,837
-2223952,344
-2119792,097
-2015631,851
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 20:22
Цитата Сообщение от Helenka Посмотреть сообщение
Теперь алгоритм выглядит так:
...
Выводит такие цифры:
...
Брррр. Чудес не бывает. В ячейке В37 какая формула?
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 20:23  [ТС]
=VBA(1).xls!Module9.MyFunc(A37;$B$25;$B$ 24;$B$28:$B$34)
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 20:30
в принципе правильно не считая что нет кавычек и убрать пробел перед B$34, но это видимо как-то форум изменил это (ограничение на длинну слова). Значит Вы где-то поменяли цифры. Ладно, я ушел в раздумья.......
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 20:35  [ТС]
Да, это форум так распределил...
Вот не знаю, что делать...руководитель отвечает, что должно работать так как изначально было...правда она сама не знает как, дала методичку и все.
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 20:39  [ТС]
Вот мой файл с последними сохранениями.
Вложения
Тип файла: rar VBA.rar (25.7 Кб, 15 просмотров)
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 22:19
Ну, Helenka, милая, ну для кого я ж писал: "Так же скопируйте еще раз макрос ПОЛНОСТЬЮ".
Найдите 7 отличий:
Sum_fr = Sun_fr + OA(I + 1) 'не правильно
Sum_fr = Sum_fr + OA(I + 1) 'может быть тоже неправильно, но уже лучше
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 22:25  [ТС]
Ой, спасибо...я просто уже с ума схожу...sorry.
Да, теперь результат такой:
858556,1151
1065428,602
1272301,088
1479173,575
2299802,397
6335569,077
6439729,276
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
07.05.2009, 22:44
Меня смущает это:
PureBasic
1
If G(I) < A1 Then MyFunc = 0
G(I) это как я понял что-то на подобие накопленной вероятности каждого интервала. Значение принимает от 0 до 1.
И мы это сравниваем с рублями! В данном случае А1 = -5140439,24.
По-моему не логично рубли сравнивать с долями, да еще и когда эти цифры разняться в 10 миллионов раз!
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
07.05.2009, 22:50  [ТС]
Черт знает! Я вообще этого всего не понимаю совсем. Мне дали вот эту методичку, делай и все получится, я даже не понимаю, что значат эти операторы...ну только некоторые, потому как когда-то проходили Paskal и Basic. Но дело в том, что я экономист, а не программист...
Ваши рассуждения мне понятны в общем-то, и полностью согласна, что "не логично рубли сравнивать с долями, да еще и когда эти цифры разняться в 10 миллионов раз!". А что в этом случае предполагать не знаю...для диплома надо.
0
 Аватар для Toxa33rus
3924 / 925 / 125
Регистрация: 16.04.2009
Сообщений: 1,974
08.05.2009, 10:00
Цитата Сообщение от Helenka Посмотреть сообщение
А что в этом случае предполагать не знаю
Хватит на сегодня, пошли спать

Добавлено через 10 часов 53 минуты 3 секунды
Давно хотел спросить: а вообще какой экономический смысл тех цифр что нужно найти? Вы сможете их найти без макроса? (умножением в столбик )
Если Вы знаете формулы по которым это должно находится, то может просто с нуля написать макрос (рабочий).
0
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 13
08.05.2009, 11:08  [ТС]
В общем вся эта штука взята из экономического журнала, где написан подобный алгоритм, приведен такой же пример...вечером отсканирую и выложу статью...
В статье сказано, что все эти расчеты выполняются при помощи VBA в Excel, как посчитать вручную не знаю, знаю только то, что должны получится вот такие цифры:
0,50 -809830,05
0,60 -573904,12
0,70 -101054,23
0,80 369796,73
0,90 601345,23
0,95 841342,03
1,00 189344,56
т.е. при вероятности 0,70 предприятие сможет погасить свои обязательства в сумме 133871,31 руб.
Короче вся фишка и состоит в этом VBA, т.е. моя задача сказать, что норму остатка денежных средств можно считать с помощью программирования.
Вот вроде как то так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.05.2009, 11:08
Помогаю со студенческими работами здесь

Учет денежных средств в гос организации
ребят кому не жалко, скиньте что нибудь по учету денежных средств если имеется что нибудь. Добавлено через 22 часа 15 минут плз хоть...

Сумма денежных средств сгруппированная по коду
Добрый день! 1) В таблице (Рисунок -Таблица) существует большое количество записей. Необходимо сделать так, чтобы при одинаковом коде...

Написать программу, вычисляющая сумму денежных средств
Написать программу, которая вычисляет сумму денежных средств, которые требуеттся попросить у родителей, чтобы прожить учебный год (10...

Функционал для проверка затрат денежных средств
Помогите решить следующее задание. Задание: Добавить функциональность проверки на затраты денежных средств в месяц при проведении...

Поступление денежных средств и распределение их по расходным накладным. Отчет
Нужно сформировать отчёт о поступлении денежных средств в разрезе Расходная Накладная / Сумма оплаты. !При этом необходимо, чтобы ДС...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru