Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/VBA написание формулы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA написание формулы
VBA написание формулы
DemonNik Дата: Воскресенье, 24.02.2013, 12:51 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Проблема такая: надо подсчитать зарплату, в функции должно быть две переменные - начислено(N) и налог(x), я составил формулу но она выводит тоже число что и указанно в переменной "N", где ошибка?
вот текст:

[vba]
Код
Public Function Zarplata(N%, x%)
Dim q, w, e, r
For x = 0.12 To 0.14999
q = x * N
Next x
For x = 0.15 To 0.19999
w = x * N
Next x
For x = 0.2 To 0.24999
e = x * N
Next x
For x = 0.25 To 0.1
r = x * N
Next
Select Case N
Case Is <= 3000
Zarplata = N - q
Case 3000 To 7000
Zarplata = N - w
Case 7000 To 9000
Zarplata = N - e
Case Is > 9000
Zarplata = N - r
End Select
End Function
[/vba]
[admin]
Оформляйте коды тегами![/admin]
К сообщению приложен файл: 235234.rar (8.1 Kb)
 
Ответить
СообщениеПроблема такая: надо подсчитать зарплату, в функции должно быть две переменные - начислено(N) и налог(x), я составил формулу но она выводит тоже число что и указанно в переменной "N", где ошибка?
вот текст:

[vba]
Код
Public Function Zarplata(N%, x%)
Dim q, w, e, r
For x = 0.12 To 0.14999
q = x * N
Next x
For x = 0.15 To 0.19999
w = x * N
Next x
For x = 0.2 To 0.24999
e = x * N
Next x
For x = 0.25 To 0.1
r = x * N
Next
Select Case N
Case Is <= 3000
Zarplata = N - q
Case 3000 To 7000
Zarplata = N - w
Case 7000 To 9000
Zarplata = N - e
Case Is > 9000
Zarplata = N - r
End Select
End Function
[/vba]
[admin]
Оформляйте коды тегами![/admin]

Автор - DemonNik
Дата добавления - 24.02.2013 в 12:51
AlexM Дата: Воскресенье, 24.02.2013, 13:52 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4509
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Покажите формулу, по которой считаете зарплату.
Зачем второй аргумент. Процент налога определяется от размера зарплаты.
Может быть так подойдет?
[vba]
Код
Public Function Zarplata(N&)
Dim x!
Select Case N
Case Is <= 3000: x = 0.12
Case 3000 To 7000: x = 0.15
Case 7000 To 9000: x = 0.2
Case Is > 9000: x = 0.25
End Select
Zarplata = N - N * x
End Function
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Воскресенье, 24.02.2013, 14:09
 
Ответить
СообщениеПокажите формулу, по которой считаете зарплату.
Зачем второй аргумент. Процент налога определяется от размера зарплаты.
Может быть так подойдет?
[vba]
Код
Public Function Zarplata(N&)
Dim x!
Select Case N
Case Is <= 3000: x = 0.12
Case 3000 To 7000: x = 0.15
Case 7000 To 9000: x = 0.2
Case Is > 9000: x = 0.25
End Select
Zarplata = N - N * x
End Function
[/vba]

Автор - AlexM
Дата добавления - 24.02.2013 в 13:52
RAN Дата: Воскресенье, 24.02.2013, 14:33 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Во первых, тип integer - целые числа. Для финансов используйте
[vba]
Код
N As Currency, x As Currency
[/vba]
Во вторых, если шаг не указан, х меняется с шагом 1. 0,12 + 1 = 1,12. Так что никакого цикла тут нет.
[vba]
Код
For x = 0.12 To 0.14999
q = x * N
Next x
[/vba]
В третьих, в каждом таком блоке х принимает новое фиксированное значение, так что использование этой переменной в качестве аргумента функции совершенно не понятно.
В четвертых, во избежание конфликта пишите условия так
[vba]
Код
   Zarplata = N - q
     Select Case N
     Case Is <= 7000
         Zarplata = N - w
     Case Is <= 9000
         Zarplata = N - e
     Case Else
         Zarplata = N - r
     End Select
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВо первых, тип integer - целые числа. Для финансов используйте
[vba]
Код
N As Currency, x As Currency
[/vba]
Во вторых, если шаг не указан, х меняется с шагом 1. 0,12 + 1 = 1,12. Так что никакого цикла тут нет.
[vba]
Код
For x = 0.12 To 0.14999
q = x * N
Next x
[/vba]
В третьих, в каждом таком блоке х принимает новое фиксированное значение, так что использование этой переменной в качестве аргумента функции совершенно не понятно.
В четвертых, во избежание конфликта пишите условия так
[vba]
Код
   Zarplata = N - q
     Select Case N
     Case Is <= 7000
         Zarplata = N - w
     Case Is <= 9000
         Zarplata = N - e
     Case Else
         Zarplata = N - r
     End Select
[/vba]

Автор - RAN
Дата добавления - 24.02.2013 в 14:33
AlexM Дата: Воскресенье, 24.02.2013, 14:40 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4509
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
For x = 0.12 To 0.14999
[/vba]
Я думаю так сделали вот что
0.12 <x<0.14999
Ну и дальше
0.15 <x<0.19999
0.2 <x<0.24999



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение[vba]
Код
For x = 0.12 To 0.14999
[/vba]
Я думаю так сделали вот что
0.12 <x<0.14999
Ну и дальше
0.15 <x<0.19999
0.2 <x<0.24999

Автор - AlexM
Дата добавления - 24.02.2013 в 14:40
DemonNik Дата: Воскресенье, 24.02.2013, 16:34 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Как мне указать диапазон для переменной, допустим, от 0,12 до 0,149 с шагом 0,01?
 
Ответить
СообщениеКак мне указать диапазон для переменной, допустим, от 0,12 до 0,149 с шагом 0,01?

Автор - DemonNik
Дата добавления - 24.02.2013 в 16:34
AlexM Дата: Воскресенье, 24.02.2013, 16:44 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4509
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Цитата (AlexM)
Покажите формулу, по которой считаете зарплату.


Цитата (DemonNik)
Как мне указать диапазон для переменной, допустим, от 0,12 до 0,149 с шагом 0,01

Зачем это нужно. Для расчета зарплаты достаточно
Зарплата = Начислено - Начислено*процент налога.
Ну а то что вы спрашиваете
[vba]
Код
For x = 0.12 To 0.149 Spep 0,01
e = x * N
Next x
[/vba]
Результат цикла
e = 0,14 * N



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (AlexM)
Покажите формулу, по которой считаете зарплату.


Цитата (DemonNik)
Как мне указать диапазон для переменной, допустим, от 0,12 до 0,149 с шагом 0,01

Зачем это нужно. Для расчета зарплаты достаточно
Зарплата = Начислено - Начислено*процент налога.
Ну а то что вы спрашиваете
[vba]
Код
For x = 0.12 To 0.149 Spep 0,01
e = x * N
Next x
[/vba]
Результат цикла
e = 0,14 * N

Автор - AlexM
Дата добавления - 24.02.2013 в 16:44
DemonNik Дата: Воскресенье, 24.02.2013, 16:56 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

[Зарплата = Начислено - Начислено*процент налога.]

Ну да эта формула и есть, просто у меня по заданию, сделать это через две переменные, чтобы начисленные деньги без налога и процент налога брались с листа, лист я прикрепил к первому сообщению
 
Ответить
Сообщение[Зарплата = Начислено - Начислено*процент налога.]

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

Автор - DemonNik
Дата добавления - 24.02.2013 в 16:56
RAN Дата: Воскресенье, 24.02.2013, 17:05 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Если все брать с листа, то
[vba]
Код
Public Function Zarplata(N As Currency, x As Currency) As Currency
Zarplata = N - N * x
End Function
[/vba]

И больше ничего не нужно.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЕсли все брать с листа, то
[vba]
Код
Public Function Zarplata(N As Currency, x As Currency) As Currency
Zarplata = N - N * x
End Function
[/vba]

И больше ничего не нужно.

Автор - RAN
Дата добавления - 24.02.2013 в 17:05
AlexM Дата: Воскресенье, 24.02.2013, 17:06 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4509
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Если с двумя переменными, зачем циклы и управляющая инструкция Select Case End Select
[vba]
Код
Public Function Zarplata(N&, x!)
Zarplata = N - N * x
End Function
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЕсли с двумя переменными, зачем циклы и управляющая инструкция Select Case End Select
[vba]
Код
Public Function Zarplata(N&, x!)
Zarplata = N - N * x
End Function
[/vba]

Автор - AlexM
Дата добавления - 24.02.2013 в 17:06
RAN Дата: Воскресенье, 24.02.2013, 17:10 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Алексей, сингл еще куда ни шло, но почему зарплата лонгом?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеАлексей, сингл еще куда ни шло, но почему зарплата лонгом?

Автор - RAN
Дата добавления - 24.02.2013 в 17:10
DemonNik Дата: Воскресенье, 24.02.2013, 17:19 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

да циклы для того чтобы учесть ограничения
ну как мне объяснили, нужно чтобы переменные брались с листа а ограничения были заложены уже в программе


Сообщение отредактировал DemonNik - Воскресенье, 24.02.2013, 17:20
 
Ответить
Сообщениеда циклы для того чтобы учесть ограничения
ну как мне объяснили, нужно чтобы переменные брались с листа а ограничения были заложены уже в программе

Автор - DemonNik
Дата добавления - 24.02.2013 в 17:19
AlexM Дата: Воскресенье, 24.02.2013, 17:34 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4509
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Цитата (RAN)
почему зарплата лонгом

Конечно зарплата до 922337203685477,5807 лучше, чем до 2147483647, но мне и столько не платили smile
8 байт под скромную зарплату российского служащего слишком много.

Цитата (AlexM)
да циклы для того чтобы учесть ограничения

Мне кажется, что вы с преподавателем не поняли друг друга.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Воскресенье, 24.02.2013, 17:39
 
Ответить
Сообщение
Цитата (RAN)
почему зарплата лонгом

Конечно зарплата до 922337203685477,5807 лучше, чем до 2147483647, но мне и столько не платили smile
8 байт под скромную зарплату российского служащего слишком много.

Цитата (AlexM)
да циклы для того чтобы учесть ограничения

Мне кажется, что вы с преподавателем не поняли друг друга.

Автор - AlexM
Дата добавления - 24.02.2013 в 17:34
DemonNik Дата: Воскресенье, 24.02.2013, 17:39 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

[Мне кажется, что вы с преподавателем не поняли друг друга.]

Может быть
 
Ответить
Сообщение[Мне кажется, что вы с преподавателем не поняли друг друга.]

Может быть

Автор - DemonNik
Дата добавления - 24.02.2013 в 17:39
RAN Дата: Воскресенье, 24.02.2013, 18:42 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
При чем тут много?
Запиши лонгом 5477,58. smile


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПри чем тут много?
Запиши лонгом 5477,58. smile

Автор - RAN
Дата добавления - 24.02.2013 в 18:42
AlexM Дата: Воскресенье, 24.02.2013, 18:54 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4509
Репутация: 1128 ±
Замечаний: 0% ±

Excel 2003
Я понял. Я никогда не сталкивался с финансовыми расчетами. Буду иметь ввиду.
N - это зарплата, без учета налогов. Даже в СССР зарплату давали с точностью рубль, а сейчас точность тысяча. Исключение пенсии. sad



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЯ понял. Я никогда не сталкивался с финансовыми расчетами. Буду иметь ввиду.
N - это зарплата, без учета налогов. Даже в СССР зарплату давали с точностью рубль, а сейчас точность тысяча. Исключение пенсии. sad

Автор - AlexM
Дата добавления - 24.02.2013 в 18:54
Serge_007 Дата: Воскресенье, 24.02.2013, 20:47 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (AlexM)
Даже в СССР зарплату давали с точностью рубль, а сейчас точность тысяча

Это не так
Как было в СССР не знаю, но сейчас з/п рассчитывается с точностью до копеек. Округляются только неполные копейки


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (AlexM)
Даже в СССР зарплату давали с точностью рубль, а сейчас точность тысяча

Это не так
Как было в СССР не знаю, но сейчас з/п рассчитывается с точностью до копеек. Округляются только неполные копейки

Автор - Serge_007
Дата добавления - 24.02.2013 в 20:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA написание формулы
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!