Добрый день! Ранее обращался за помощью к старожилам данного форума очень помогли. Обращаюсь вновь за помощью.
Суть вопроса. Идёт заполнение табличных данных с Именем и Фамилией, возраст, школа, пол участника. Далее заполняется результаты тестов. Проблемой над которой я борюсь, это создание макроса который бы помогал секретарю в подсчёте данных. Результат должен переводится в баллы согласно возрасту участника и полу. в таблицу.
И есть ли макрос который растравляет места согласно максимальному баллу наборному школой(командой)
Добрый день! Ранее обращался за помощью к старожилам данного форума очень помогли. Обращаюсь вновь за помощью.
Суть вопроса. Идёт заполнение табличных данных с Именем и Фамилией, возраст, школа, пол участника. Далее заполняется результаты тестов. Проблемой над которой я борюсь, это создание макроса который бы помогал секретарю в подсчёте данных. Результат должен переводится в баллы согласно возрасту участника и полу. в таблицу.
И есть ли макрос который растравляет места согласно максимальному баллу наборному школой(командой)Болт
так в какой таблице должны данные сформироваться и по каким критериям считаются баллы? чтобы было понятнее сделай две таблицы исходную с данными и итоговую как это должно быть
так в какой таблице должны данные сформироваться и по каким критериям считаются баллы? чтобы было понятнее сделай две таблицы исходную с данными и итоговую как это должно бытьK-SerJC
Постарался описать в примечаниях . Суть подсчёта. Секретарю дают данные он вносит в таблицу результат испытаний пример челночный бег 3х10, программа соотносит возраст пол участника и результат с критериями очков и переводит их в очки.
Постарался описать в примечаниях . Суть подсчёта. Секретарю дают данные он вносит в таблицу результат испытаний пример челночный бег 3х10, программа соотносит возраст пол участника и результат с критериями очков и переводит их в очки.Болт
Я так понял что формулы с большими пересчётом зависают. Поэтому пытаюсь делать всё в макросе. есть некоторые работы которые мне помогли сделать в макросе методисты очень довольные им нет необходимости производить подсчёт вручную.
Я так понял что формулы с большими пересчётом зависают. Поэтому пытаюсь делать всё в макросе. есть некоторые работы которые мне помогли сделать в макросе методисты очень довольные им нет необходимости производить подсчёт вручную.Болт
Условия: В нормативах Упражнения должны называться идентично тому как в таблице результатов в столбик Очки вводится =Очки(ячейка Пол, ячейка Возраст, ячейка Результат)
[vba]
Код
Public Function Очки(Пол As String, Возраст As Integer, Результат As Range) Dim Sh, Упражнение, rПол, rУпр, iC%, iR% Упражнение = Cells(WorksheetFunction.Match("Результат", Cells(1, Результат.Column).Resize(10, 1), 0) - 1, Результат.Column).Value
For Each Sh In ThisWorkbook.Sheets 'найдем лист с нормативами согласно возраста If Mid(Sh.Name, 1, 2) = Возраст Then Exit For Next
Select Case Пол 'определим согласно пола верхнюю левую ячейку таблицы нормативов Case "м", "М": Set rПол = Sh.Cells.Find("Мальчики") Case "д", "Д": Set rПол = Sh.Cells.Find("Девочки") End Select
Set rУпр = rПол.Resize(5, 7).Find(Упражнение) 'определим ячейку с наименование упражнения в таблице нормативов iC = 8 - (rУпр.Column - rПол.Column) Очки = WorksheetFunction.VLookup(Результат.Value, rУпр.Resize(100, iC), iC) 'ну и собственно поиск результата и возвращение оценки через функцию ВПР End Function
[/vba]
[p.s.]понял ошибки. разберу. это работает только с челночным бегом и бегом на 30 м
Нарисовал функцию. (может грабли, но как вариант)
Условия: В нормативах Упражнения должны называться идентично тому как в таблице результатов в столбик Очки вводится =Очки(ячейка Пол, ячейка Возраст, ячейка Результат)
[vba]
Код
Public Function Очки(Пол As String, Возраст As Integer, Результат As Range) Dim Sh, Упражнение, rПол, rУпр, iC%, iR% Упражнение = Cells(WorksheetFunction.Match("Результат", Cells(1, Результат.Column).Resize(10, 1), 0) - 1, Результат.Column).Value
For Each Sh In ThisWorkbook.Sheets 'найдем лист с нормативами согласно возраста If Mid(Sh.Name, 1, 2) = Возраст Then Exit For Next
Select Case Пол 'определим согласно пола верхнюю левую ячейку таблицы нормативов Case "м", "М": Set rПол = Sh.Cells.Find("Мальчики") Case "д", "Д": Set rПол = Sh.Cells.Find("Девочки") End Select
Set rУпр = rПол.Resize(5, 7).Find(Упражнение) 'определим ячейку с наименование упражнения в таблице нормативов iC = 8 - (rУпр.Column - rПол.Column) Очки = WorksheetFunction.VLookup(Результат.Value, rУпр.Resize(100, iC), iC) 'ну и собственно поиск результата и возвращение оценки через функцию ВПР End Function
[/vba]
[p.s.]понял ошибки. разберу. это работает только с челночным бегом и бегом на 30 мdevilkurs
Public Function Очки(Пол As String, Возраст As Integer, Результат As Range) Dim Sh, Упражнение, Рез, rПол, rУпр, iR%, iC%, iMax, iMin, i, Arr, iT Упражнение = Cells(WorksheetFunction.Match("Результат", Cells(1, Результат.Column).Resize(10, 1), 0) - 1, Результат.Column).Value Рез = Результат.Value
For Each Sh In ThisWorkbook.Sheets 'найдем лист с нормативами согласно возраста If Mid(Sh.Name, 1, 2) = Возраст Then Exit For Next
Select Case Пол 'определим согласно пола верхнюю левую ячейку таблицы нормативов Case "м", "М": Set rПол = Sh.Cells.Find("Мальчики") Case "д", "Д": Set rПол = Sh.Cells.Find("Девочки") End Select
Set rУпр = rПол.Resize(5, 7).Find(Упражнение) 'определим ячейку с наименование упражнения в таблице нормативов iMax = WorksheetFunction.Max(rУпр.Resize(100, 1)) iMin = WorksheetFunction.Min(rУпр.Resize(100, 1))
iC = 8 - (rУпр.Column - rПол.Column) Arr = rУпр.Resize(100, iC).Value For i = 1 To UBound(Arr, 1) If Arr(i, 1) <= Рез And Arr(i, 1) >= iT Then iT = Arr(i, 1): Очки = Arr(i, iC) Next i
End Function
[/vba]
Исправленный мой вариант
[vba]
Код
Public Function Очки(Пол As String, Возраст As Integer, Результат As Range) Dim Sh, Упражнение, Рез, rПол, rУпр, iR%, iC%, iMax, iMin, i, Arr, iT Упражнение = Cells(WorksheetFunction.Match("Результат", Cells(1, Результат.Column).Resize(10, 1), 0) - 1, Результат.Column).Value Рез = Результат.Value
For Each Sh In ThisWorkbook.Sheets 'найдем лист с нормативами согласно возраста If Mid(Sh.Name, 1, 2) = Возраст Then Exit For Next
Select Case Пол 'определим согласно пола верхнюю левую ячейку таблицы нормативов Case "м", "М": Set rПол = Sh.Cells.Find("Мальчики") Case "д", "Д": Set rПол = Sh.Cells.Find("Девочки") End Select
Set rУпр = rПол.Resize(5, 7).Find(Упражнение) 'определим ячейку с наименование упражнения в таблице нормативов iMax = WorksheetFunction.Max(rУпр.Resize(100, 1)) iMin = WorksheetFunction.Min(rУпр.Resize(100, 1))
iC = 8 - (rУпр.Column - rПол.Column) Arr = rУпр.Resize(100, iC).Value For i = 1 To UBound(Arr, 1) If Arr(i, 1) <= Рез And Arr(i, 1) >= iT Then iT = Arr(i, 1): Очки = Arr(i, iC) Next i
Мои познания оставляют желать лучшего, что могу я сделать это поставить кнопку для вызова макроса, и изменить некоторые области применения после долгих проб и ошибок. с пасибо за понимание и терпение к чайнику.
Мои познания оставляют желать лучшего, что могу я сделать это поставить кнопку для вызова макроса, и изменить некоторые области применения после долгих проб и ошибок. с пасибо за понимание и терпение к чайнику.Болт
Болт, Уважаемый buchlotnik Вам поправил в модулях VBA. Повторюсь для закрепления: Моя функция работает так же как и обычная формула, т.е. столбике "Очки" где результаты вводите как обычную формулу
где ссылаетесь на ячейки по этому же участнику из столбцов Пол, Возраст и Результат. Важное условие для работы моей функции (формулы) чтобы наименование упражнения в таблицах нормативов назывались точно так же как и на листе Зал, Улица.
где P5 - ячейка на Сумма очков участника P$5:P76 - диапазон по столбцу Сумма очков участника по всем участникам
Болт, Уважаемый buchlotnik Вам поправил в модулях VBA. Повторюсь для закрепления: Моя функция работает так же как и обычная формула, т.е. столбике "Очки" где результаты вводите как обычную формулу
где ссылаетесь на ячейки по этому же участнику из столбцов Пол, Возраст и Результат. Важное условие для работы моей функции (формулы) чтобы наименование упражнения в таблицах нормативов назывались точно так же как и на листе Зал, Улица.
Меня просто смутили формулы. Я хоел вызывать макрос при пощи отдельной кнопки. Так как у меня секретариат возрастной и может случаем в работе поправить пару функций.
Меня просто смутили формулы. Я хоел вызывать макрос при пощи отдельной кнопки. Так как у меня секретариат возрастной и может случаем в работе поправить пару функций.Болт
Вот что у меня получилось с применением формул. Хотел попросить можно ли без отражение формул и макрос с возможностью коректировки области подсчёта.
Вот что у меня получилось с применением формул. Хотел попросить можно ли без отражение формул и макрос с возможностью коректировки области подсчёта.Болт