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

Вход

Регистрация

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

 

= Мир MS Excel/Создание таблицы (шахматки) макросом - Мир MS Excel

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

Excel 2010
Здравствуйте,
понял, что задача решается только макросом, поэтому прошу помочь с решением или подсказать в каком направлении двигаться.
В ячейках B3:А8 вручную заносятся результаты игр - это исходные данные.
Необходимо сформировать в ячейках C13:O16 таблицу-шахматку на основе данных ячеек B3:А8.
Причем позиции в ячейках C13:C16 расставить в соответствии с ячейками W13:W16, Y13:Z16
К сообщению приложен файл: 1923662.xlsx (11.3 Kb)
 
Ответить
СообщениеЗдравствуйте,
понял, что задача решается только макросом, поэтому прошу помочь с решением или подсказать в каком направлении двигаться.
В ячейках B3:А8 вручную заносятся результаты игр - это исходные данные.
Необходимо сформировать в ячейках C13:O16 таблицу-шахматку на основе данных ячеек B3:А8.
Причем позиции в ячейках C13:C16 расставить в соответствии с ячейками W13:W16, Y13:Z16

Автор - champ
Дата добавления - 19.12.2016 в 12:54
dim34rus Дата: Понедельник, 19.12.2016, 18:29 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
Количество игроков фиксировано, или "задача" предусматривает решение для 5-6-...n игроков?
Результат всегда окончательный, т.е. имеются результаты по всем играм, или частично?
Если результат по частичным играм, то игровые пары, которые еще не сыграны будут указаны в первоначальной таблице или нет?

Жду ответов, и ... приступаем!


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
СообщениеКоличество игроков фиксировано, или "задача" предусматривает решение для 5-6-...n игроков?
Результат всегда окончательный, т.е. имеются результаты по всем играм, или частично?
Если результат по частичным играм, то игровые пары, которые еще не сыграны будут указаны в первоначальной таблице или нет?

Жду ответов, и ... приступаем!

Автор - dim34rus
Дата добавления - 19.12.2016 в 18:29
champ Дата: Понедельник, 19.12.2016, 19:05 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
В идеале конечно лучше для n игроков, насчет результатов, могут быть следующие:
-3:1 ; 2:2; 1:4; в:п, н:н, п:в; w:0; 0:w или пусто (матч еще не сыгран или неизвестен результат).
цифры могут разные в первых трех исходах.
в:п победа первого , без указания счета
п:в - второго, без указания счета
н:н - ничья, без указания счета
w:0 - победа первого техническая(неявка второго)
0:w - победа второго техническая(неявка первого)
победа, победа первого техническая - 3 очка,
ничья - 2 очка,
проигрыш - 1 очко
поражение техническое (неявка) - 0 очков.


Сообщение отредактировал champ - Понедельник, 19.12.2016, 19:06
 
Ответить
СообщениеВ идеале конечно лучше для n игроков, насчет результатов, могут быть следующие:
-3:1 ; 2:2; 1:4; в:п, н:н, п:в; w:0; 0:w или пусто (матч еще не сыгран или неизвестен результат).
цифры могут разные в первых трех исходах.
в:п победа первого , без указания счета
п:в - второго, без указания счета
н:н - ничья, без указания счета
w:0 - победа первого техническая(неявка второго)
0:w - победа второго техническая(неявка первого)
победа, победа первого техническая - 3 очка,
ничья - 2 очка,
проигрыш - 1 очко
поражение техническое (неявка) - 0 очков.

Автор - champ
Дата добавления - 19.12.2016 в 19:05
dim34rus Дата: Вторник, 20.12.2016, 01:39 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
Еще немного терпения и будет Щастье.
А если интересно направление действий, то Вашу первоначальную таблицу засовываем в трехмерный массив, выдергиваем оттуда всю полезную инфу в двумерный массив с результатами (табличка радом с шахматкой)
А делее... (как раз пока здесь на данный момент и остановился)
1. Сортируем двумерный массив по возрастанию очков и прочей лабуды (Кстати про прочую лабуду: при одинаковом количестве очков я так думаю первого ставим того, у кого разница забитых пропущенных лучше, а и при их равенстве - у кого больше забитых)
2. И далее самое "вкусное" сортировка трехмерного массива в двумерном пространстве :-)

ну и напоследок все это счастье кинуть на лист1


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
СообщениеЕще немного терпения и будет Щастье.
А если интересно направление действий, то Вашу первоначальную таблицу засовываем в трехмерный массив, выдергиваем оттуда всю полезную инфу в двумерный массив с результатами (табличка радом с шахматкой)
А делее... (как раз пока здесь на данный момент и остановился)
1. Сортируем двумерный массив по возрастанию очков и прочей лабуды (Кстати про прочую лабуду: при одинаковом количестве очков я так думаю первого ставим того, у кого разница забитых пропущенных лучше, а и при их равенстве - у кого больше забитых)
2. И далее самое "вкусное" сортировка трехмерного массива в двумерном пространстве :-)

ну и напоследок все это счастье кинуть на лист1

Автор - dim34rus
Дата добавления - 20.12.2016 в 01:39
dim34rus Дата: Вторник, 20.12.2016, 17:35 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
Фух. Готово.
Для полной красоты еще можно всяких красотушек и плюшек прикрутить, но в рамках первоначального задания пашет.

Код сюда не кидаю, ибо он большой с функциями и прочей лабудой. Все в файле во вложении

PS: Очистка форматирования пока не реализована. так что форматирование чистим ручками
К сообщению приложен файл: 2993195.xlsm (41.6 Kb)


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
СообщениеФух. Готово.
Для полной красоты еще можно всяких красотушек и плюшек прикрутить, но в рамках первоначального задания пашет.

Код сюда не кидаю, ибо он большой с функциями и прочей лабудой. Все в файле во вложении

PS: Очистка форматирования пока не реализована. так что форматирование чистим ручками

Автор - dim34rus
Дата добавления - 20.12.2016 в 17:35
champ Дата: Вторник, 20.12.2016, 19:08 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
dim34rus, спасибо,
еще вопрос: в шахматке чтобы команды по ранжиру расставлялись автоматически, возможно?
 
Ответить
Сообщениеdim34rus, спасибо,
еще вопрос: в шахматке чтобы команды по ранжиру расставлялись автоматически, возможно?

Автор - champ
Дата добавления - 20.12.2016 в 19:08
dim34rus Дата: Вторник, 20.12.2016, 19:39 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
чтобы команды по ранжиру расставлялись автоматически,

:'(
Дык. ёлы-палы. Они же по ранжиру в шахматке и расставляются


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
Сообщение
чтобы команды по ранжиру расставлялись автоматически,

:'(
Дык. ёлы-палы. Они же по ранжиру в шахматке и расставляются

Автор - dim34rus
Дата добавления - 20.12.2016 в 19:39
champ Дата: Вторник, 20.12.2016, 21:04 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Да это я не туда посмотрел, все верно.
 
Ответить
СообщениеДа это я не туда посмотрел, все верно.

Автор - champ
Дата добавления - 20.12.2016 в 21:04
champ Дата: Пятница, 23.12.2016, 21:34 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
dim34rus, есть несколько вопросов
1. на листе 1 - названия не проставляются, вместо названий "$A$", соответственно и на листе 2 тоже самое вместо названий
2 на листе 1 - автоматически расставляются пары , хотя они могут быть и в другом порядке
на листе 3 привел свои данные
К сообщению приложен файл: 2993195_2.xlsm (51.2 Kb)
 
Ответить
Сообщениеdim34rus, есть несколько вопросов
1. на листе 1 - названия не проставляются, вместо названий "$A$", соответственно и на листе 2 тоже самое вместо названий
2 на листе 1 - автоматически расставляются пары , хотя они могут быть и в другом порядке
на листе 3 привел свои данные

Автор - champ
Дата добавления - 23.12.2016 в 21:34
dim34rus Дата: Суббота, 24.12.2016, 13:05 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
1. Мне нужно было взять какие-то названия, а придумывать их лень :-) и вот это они. Можно отдельно реализовать опрос по наименованию команд, а можно заранее приготовленный список с листа взять
2. Пары можно пересортировать как пожелаете, на итоговый результат это никак не влияет

На листе 3 вы не указали еще 3 пары. (ну это так к слову...)

Что-бы было все "Зе битлз":
1) Выделите на листе1 место (колонку) в которой будут указаны все названия команд, я из них тогда буду составлять список.
2) В дополнительной колонке к результату игровой пары можно предусмотреть дату, тогда после заполнения этой колонки игры можно будет отсортировать
3) В шахматке можно будет сделать дату через примечание (при наведении на ячейку будет показывать дату игры :-) )


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
Сообщение1. Мне нужно было взять какие-то названия, а придумывать их лень :-) и вот это они. Можно отдельно реализовать опрос по наименованию команд, а можно заранее приготовленный список с листа взять
2. Пары можно пересортировать как пожелаете, на итоговый результат это никак не влияет

На листе 3 вы не указали еще 3 пары. (ну это так к слову...)

Что-бы было все "Зе битлз":
1) Выделите на листе1 место (колонку) в которой будут указаны все названия команд, я из них тогда буду составлять список.
2) В дополнительной колонке к результату игровой пары можно предусмотреть дату, тогда после заполнения этой колонки игры можно будет отсортировать
3) В шахматке можно будет сделать дату через примечание (при наведении на ячейку будет показывать дату игры :-) )

Автор - dim34rus
Дата добавления - 24.12.2016 в 13:05
champ Дата: Суббота, 24.12.2016, 17:53 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
в приложенном файле указал : название команд и даты
в конкретном примере некоторые матчи не доиграны и их нет в списке игр или их лучше добавить ?
Можно ли будет сделать шахматку не только на конец турнира, на определенную дату?
К сообщению приложен файл: 2993195_3.xlsm (52.3 Kb)
 
Ответить
Сообщениев приложенном файле указал : название команд и даты
в конкретном примере некоторые матчи не доиграны и их нет в списке игр или их лучше добавить ?
Можно ли будет сделать шахматку не только на конец турнира, на определенную дату?

Автор - champ
Дата добавления - 24.12.2016 в 17:53
dim34rus Дата: Понедельник, 26.12.2016, 17:46 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
Доделал.
1. Количество и наименования команд берет из списка
2. Колонка даты, если заполнена (даже для несыгранной игры) - выводится в качестве примечания в шахматке
В принципе там может быть и не дата, а все что пожелаете, хоть составы обоих команд
3. При перезаполнении игровых пар на первом листе вся таблица очищается
4. При формировании шахматки - полностью очищается и динамически переоформляется.
5. Порядок сортировки игровых пар на первом листе не влияет на результаты шахматки
6. Можно записывать баскетбольный счет, т.е корректно будет отрабатывать до 150 забитых голов любой командой в любом матче

ЗЫЖ Даже если игра не сыграна - логично, что игровая пара на первом листе определена.

Для полноты ощущения, по хорошему, надо сделать защиту от "дурака", чтобы можно было вводить только корректные данные и поставить динамический блокировки различных ячеек (от шаловливых ручонок)
К сообщению приложен файл: 5118582.xlsm (66.0 Kb)


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327


Сообщение отредактировал dim34rus - Понедельник, 26.12.2016, 17:56
 
Ответить
СообщениеДоделал.
1. Количество и наименования команд берет из списка
2. Колонка даты, если заполнена (даже для несыгранной игры) - выводится в качестве примечания в шахматке
В принципе там может быть и не дата, а все что пожелаете, хоть составы обоих команд
3. При перезаполнении игровых пар на первом листе вся таблица очищается
4. При формировании шахматки - полностью очищается и динамически переоформляется.
5. Порядок сортировки игровых пар на первом листе не влияет на результаты шахматки
6. Можно записывать баскетбольный счет, т.е корректно будет отрабатывать до 150 забитых голов любой командой в любом матче

ЗЫЖ Даже если игра не сыграна - логично, что игровая пара на первом листе определена.

Для полноты ощущения, по хорошему, надо сделать защиту от "дурака", чтобы можно было вводить только корректные данные и поставить динамический блокировки различных ячеек (от шаловливых ручонок)

Автор - dim34rus
Дата добавления - 26.12.2016 в 17:46
champ Дата: Вторник, 27.12.2016, 16:16 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
dim34rus, все работает как надо. Благодарю.
Количество команд любое , неограничено? Если подсчет очков изменить на другой , например 3-1-0 (в-н-п) или 2-1-0, что надо изменить?
 
Ответить
Сообщениеdim34rus, все работает как надо. Благодарю.
Количество команд любое , неограничено? Если подсчет очков изменить на другой , например 3-1-0 (в-н-п) или 2-1-0, что надо изменить?

Автор - champ
Дата добавления - 27.12.2016 в 16:16
dim34rus Дата: Вторник, 27.12.2016, 17:59 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
например 3-1-0 (в-н-п) или 2-1-0, что надо изменить?

это в коде надо менять

[vba]
Код
       'Считаем результаты и очки
       If mas_igr(Com1, Com2, 0) > mas_igr(Com1, Com2, 1) Then
          mas_result(Com1, 1) = mas_result(Com1, 1) + 1
          mas_result(Com2, 3) = mas_result(Com2, 3) + 1
          mas_result(Com1, 4) = mas_result(Com1, 4) + 3
          mas_result(Com2, 4) = mas_result(Com2, 4) + 1
       End If
       
       If mas_igr(Com1, Com2, 0) < mas_igr(Com1, Com2, 1) Then
          mas_result(Com2, 1) = mas_result(Com2, 1) + 1
          mas_result(Com1, 3) = mas_result(Com1, 3) + 1
          mas_result(Com2, 4) = mas_result(Com2, 4) + 3
          mas_result(Com1, 4) = mas_result(Com1, 4) + 1
       End If
[/vba]

здесь 3 на 2
[vba]
Код
       mas_result(Com1, 4) = mas_result(Com1, 4) + 3
[/vba]

и здесь 3 на 2
[vba]
Код
       mas_result(Com2, 4) = mas_result(Com2, 4) + 3
[/vba]


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
Сообщение
например 3-1-0 (в-н-п) или 2-1-0, что надо изменить?

это в коде надо менять

[vba]
Код
       'Считаем результаты и очки
       If mas_igr(Com1, Com2, 0) > mas_igr(Com1, Com2, 1) Then
          mas_result(Com1, 1) = mas_result(Com1, 1) + 1
          mas_result(Com2, 3) = mas_result(Com2, 3) + 1
          mas_result(Com1, 4) = mas_result(Com1, 4) + 3
          mas_result(Com2, 4) = mas_result(Com2, 4) + 1
       End If
       
       If mas_igr(Com1, Com2, 0) < mas_igr(Com1, Com2, 1) Then
          mas_result(Com2, 1) = mas_result(Com2, 1) + 1
          mas_result(Com1, 3) = mas_result(Com1, 3) + 1
          mas_result(Com2, 4) = mas_result(Com2, 4) + 3
          mas_result(Com1, 4) = mas_result(Com1, 4) + 1
       End If
[/vba]

здесь 3 на 2
[vba]
Код
       mas_result(Com1, 4) = mas_result(Com1, 4) + 3
[/vba]

и здесь 3 на 2
[vba]
Код
       mas_result(Com2, 4) = mas_result(Com2, 4) + 3
[/vba]

Автор - dim34rus
Дата добавления - 27.12.2016 в 17:59
champ Дата: Среда, 28.12.2016, 20:50 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
dim34rus, спасибо.. Есть еще варианты турниров когда команды друг с другом по 2 встречи играют (дома, в гостях).
 
Ответить
Сообщениеdim34rus, спасибо.. Есть еще варианты турниров когда команды друг с другом по 2 встречи играют (дома, в гостях).

Автор - champ
Дата добавления - 28.12.2016 в 20:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание таблицы (шахматки) макросом (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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