Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2015, 07:13   #1
Nataliina
Пользователь
 
Регистрация: 19.05.2015
Сообщений: 14
По умолчанию Вставление баллов в зависимости от значения на форме в excel

Объясните пожалуйста, как с помощью макросов в зависимости от значения доли (рассчитывается после ввода количества) на форме выставить баллы, в данном случае, по 12-балльной шкале (там где наибольшая доля там выше балл). С помощью цикла if else замучаешься
Вложения
Тип файла: zip Пример.zip (13.4 Кб, 9 просмотров)
Nataliina вне форума Ответить с цитированием
Старый 26.05.2015, 11:03   #2
vefer
Форумчанин
 
Регистрация: 11.10.2010
Сообщений: 134
По умолчанию

А если тупо так?
Код:
Label29.Caption = Round(d1 * 0.12, 0)
Label30.Caption = Round(d2 * 0.12, 0)
Label31.Caption = Round(d3 * 0.12, 0)
Label32.Caption = Round(d4 * 0.12, 0)
Label33.Caption = Round(d5 * 0.12, 0)
Label34.Caption = Round(d6 * 0.12, 0)
Label35.Caption = Round(d7 * 0.12, 0)
Label36.Caption = Round(d8 * 0.12, 0)
Label37.Caption = Round(d9 * 0.12, 0)
Label38.Caption = Round(d10 * 0.12, 0)
Label39.Caption = Round(d11 * 0.12, 0)
Label40.Caption = Round(d12 * 0.12, 0)
vefer вне форума Ответить с цитированием
Старый 26.05.2015, 12:59   #3
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Почему же тупо? очень даже правильно!
С оговоркой по условию задачи что всего 12 баллов и "циклом if else замучаешься"


А вот если серьезно, возможно ли здесь сделать цикл? По сути все просто - цикл For Next от 1 до 12, но как задать переменную для
Код:
Label   29   .Caption = Round(d1 * 0.12, 0)
27102014 вне форума Ответить с цитированием
Старый 26.05.2015, 13:12   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

ну... тогда уже и без d1...d12
Код:
for i = 1 to 12
  controls("Labal" & i+28).caption = round(val(controls("TextBox" & i).text) * 0.12, 0)
next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 26.05.2015, 13:45   #5
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Игорь, есть что-то, чего Вы не знаете?
Немного не согласен с предложенной Вами математикой, у меня получилось так
Код:
Private Sub CommandButton1_Click()
Dim S As Integer, i As Integer

S = Val(TextBox1.Value)

For i = 2 To 12

S = S + Val(Controls("TextBox" & i).Text)


Next

For i = 1 To 12

'Доля

Controls("Label" & i + 15).Caption = Round(Val(Controls("TextBox" & i).Text) * 100 / S, 0)

'Балл по шкале
 Controls("Label" & i + 28).Caption = Round(Val(Controls("TextBox" & i).Text) * 100 / S * 0.12, 0)
Next


End Sub
27102014 вне форума Ответить с цитированием
Старый 26.05.2015, 14:01   #6
Nataliina
Пользователь
 
Регистрация: 19.05.2015
Сообщений: 14
По умолчанию

Ребят, спасибо за ответы. Возник вопрос, что значит вот это "Round(d1 * 0.12, 0)" просто, когда вставляешь код, у меня он рассчитывает как 1 вне зависимости от значения d1
Nataliina вне форума Ответить с цитированием
Старый 26.05.2015, 14:14   #7
Nataliina
Пользователь
 
Регистрация: 19.05.2015
Сообщений: 14
По умолчанию

Как я помню, Round это округление, тогда какой смысл умножения на 0,12, если это не даст реального балла?)
Nataliina вне форума Ответить с цитированием
Старый 26.05.2015, 14:32   #8
Nataliina
Пользователь
 
Регистрация: 19.05.2015
Сообщений: 14
По умолчанию

Если использовать предложенный вами код, результат получается такой. Но по-такому принципу, баллы рассчитываются неверно. В данном случае, наибольшая доля по направлению подготовки 9, т.е. там балл должен быть 12, а не 2 (Ведь у нас 12-балльная шкала, а не 2-х балльная)
Изображения
Тип файла: jpg результат.jpg (36.0 Кб, 117 просмотров)
Nataliina вне форума Ответить с цитированием
Старый 26.05.2015, 14:57   #9
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Мы все подумали что 12 баллов - это всего, и именно число 12 нужно распределить пропорционально между заполненными данными

Округление нужно для целого числа - чтобы не было так 1,2516498743

Опишите задачу правильно - и, возможно, получите правильное решение
27102014 вне форума Ответить с цитированием
Старый 26.05.2015, 15:03   #10
Nataliina
Пользователь
 
Регистрация: 19.05.2015
Сообщений: 14
По умолчанию

Задача описана правильно, выражение 12-балльная шкала означает что не всего имеется 12 баллов, а выставляются оценки от 1 до 12. Мне казалось, это всем известно, что-то не понятно еще, уточняйте....
Nataliina вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В форме поменять цвет шрифта в зависимости от условия teecup Microsoft Office Access 0 19.10.2014 15:55
Присвоение ячейке значения, в зависимости от того, в какой области будет находиться рисунок в Excel ParAlexandr Microsoft Office Excel 2 16.07.2013 12:35
В зависимости от значения в ComboBox1 выводить значения в ComboBox2 LeX2009 БД в Delphi 14 21.05.2010 16:49
Сумировать поле в зависимости от выбраных на форме элементов полей dplz Microsoft Office Access 1 16.02.2010 19:29
Задачка по Excel'ю на 5 баллов для решившего Egorio Microsoft Office Excel 2 20.12.2006 13:21