Извиняюсь за ранее некорректное создание темы. Часть вопросов решили ранее с Вашей помощью (за что Огромное Спасибо) - часть сами додумались. Поэтому теперь создаю новую тему вроде бы без нарушений... Вопрос один.
Вот файл: Ссылка: http://files.mail.ru/HYX975 В этой таблице: Под графой в 1-ой строке Турниры 2011г. и Турниры 2010г. стоят цифры - обозначающие каждый турнир. В строке 3190 указано обозначение каждого Турнира для 2011 и для 2010. Можно ли потом например нажав мышью предположим на ячейку О2 (85 -там стоит этот номер турнира) что-бы тебе перенаправляло на запись о соответствующим турнире, соответствующего года например: в данном случае в ячейку N 327: 85 Турнир 3-го разряда Юность Москвы март 90 Решается ли вообще этот вопрос средствами Excel с учетом того, что турниры будут добавляться ? Хотя последнее время мне кажется, что с помощью Excel все решается.
Извиняюсь за ранее некорректное создание темы. Часть вопросов решили ранее с Вашей помощью (за что Огромное Спасибо) - часть сами додумались. Поэтому теперь создаю новую тему вроде бы без нарушений... Вопрос один.
Вот файл: Ссылка: http://files.mail.ru/HYX975 В этой таблице: Под графой в 1-ой строке Турниры 2011г. и Турниры 2010г. стоят цифры - обозначающие каждый турнир. В строке 3190 указано обозначение каждого Турнира для 2011 и для 2010. Можно ли потом например нажав мышью предположим на ячейку О2 (85 -там стоит этот номер турнира) что-бы тебе перенаправляло на запись о соответствующим турнире, соответствующего года например: в данном случае в ячейку N 327: 85 Турнир 3-го разряда Юность Москвы март 90 Решается ли вообще этот вопрос средствами Excel с учетом того, что турниры будут добавляться ? Хотя последнее время мне кажется, что с помощью Excel все решается.Elena92
Непонятна цель этой ссылки - посмотреть, что означает 85? И как потом назад вернуться? Мне кажется, что если нужно просто расшифровка 85 - то проще добавить в ячейку комментарий. Это можно сделать макросом, и даже по событию изменения/добавления этого номера. Можно макросом точно так же и гиперссылки вставлять - но зачем?
Непонятна цель этой ссылки - посмотреть, что означает 85? И как потом назад вернуться? Мне кажется, что если нужно просто расшифровка 85 - то проще добавить в ячейку комментарий. Это можно сделать макросом, и даже по событию изменения/добавления этого номера. Можно макросом точно так же и гиперссылки вставлять - но зачем?Hugo
Здравствуйте Hugo. Действительно не подумала. Вот блин. Одним словом блондинка. А назад, то как вернуться... Цель преследовалась следующая как узнать по человеку исходя из того в каком он был турнире что это за турнир. Это нужно например для подготовки к сопернику. Т.е. наведя на например на ячейку AO2 (158 турнир) получить комментарий из справочной таблицы за этот год Можете на примере показать как добавлять комментарий. Если это не очень сложно. И будет ли это работать при добавлении новых турниров. Порезала файл. Только оставила справочную таблицу длинную если что и ее могу порезать, но вроде она не мешает. Прилагаю его.
Здравствуйте Hugo. Действительно не подумала. Вот блин. Одним словом блондинка. А назад, то как вернуться... Цель преследовалась следующая как узнать по человеку исходя из того в каком он был турнире что это за турнир. Это нужно например для подготовки к сопернику. Т.е. наведя на например на ячейку AO2 (158 турнир) получить комментарий из справочной таблицы за этот год Можете на примере показать как добавлять комментарий. Если это не очень сложно. И будет ли это работать при добавлении новых турниров. Порезала файл. Только оставила справочную таблицу длинную если что и ее могу порезать, но вроде она не мешает. Прилагаю его.Elena92
Я тут отлучался... Ну в общем RAN уже сделал неплохой вариант - так и таблицу не нагружает, как если бы каждой ячейке примечание вставлять. Может быть можно сделать такой вариант - по даблклику появляется немодальная форма, которая выводит турнир активной ячейки, и при передвижении по ячейкам информация на форме меняется. Или лучше так - на форме сразу список всех турниров текущей строки. Т.е. сделать действительно можно всё - только продумайте, как будет удобнее пользоваться.
P.S. Вот например такой вариант - продолжил идею RAN.
Я тут отлучался... Ну в общем RAN уже сделал неплохой вариант - так и таблицу не нагружает, как если бы каждой ячейке примечание вставлять. Может быть можно сделать такой вариант - по даблклику появляется немодальная форма, которая выводит турнир активной ячейки, и при передвижении по ячейкам информация на форме меняется. Или лучше так - на форме сразу список всех турниров текущей строки. Т.е. сделать действительно можно всё - только продумайте, как будет удобнее пользоваться.
P.S. Вот например такой вариант - продолжил идею RAN.Hugo
Спасибо ребята. Дайте шанс в воскресенье все посмотреть. То - что успела увидеть повергло в шок какая же я лохушка по сравнению с Вами. А ведь считала , что знаю Excel. Была неправа. Простите. Спокойной ночи гении.
Спасибо ребята. Дайте шанс в воскресенье все посмотреть. То - что успела увидеть повергло в шок какая же я лохушка по сравнению с Вами. А ведь считала , что знаю Excel. Была неправа. Простите. Спокойной ночи гении. Elena92
Здравствуйте все, кто откликнулся и кто не откликнулся то-же. Вроде все ОК. Hugo нам не нужно кликать по фамилиям. Нам нормально когда по номеру турнира. Только можно ли изменить в выпадающей таблице: - что-бы в начале был номер турнира (его сейчас нет) -потом месяц и название (как сейчас) -данные о кол-ве участников тут не нужны (их можно удалить) В следующем году (в конце января - начале февраля) мы поменяем местами (сдвинем) колонку турниры 2011 и справочную под ней, она встанет на место нынешней колонки турниры 2010 года, а колонку 2010 вместе со справочной таблицей мы удалим. На место турниры 2011 и справочную под ней появится таблица турниры 2012. Что и где нужно будет менять в этом случае ? Что-бы все корректно работало. Если не сложно напишите пожалуйста подробно. прикладываю таблицу (просто в ней в колонке С кое чего поменялось) Но наверно это вообще ни на что не влияет. На второй закладке неактивные игроки там ничего не нужно делать (это только для нас справочная информация). Спасибо Hugo и RAN.
Здравствуйте все, кто откликнулся и кто не откликнулся то-же. Вроде все ОК. Hugo нам не нужно кликать по фамилиям. Нам нормально когда по номеру турнира. Только можно ли изменить в выпадающей таблице: - что-бы в начале был номер турнира (его сейчас нет) -потом месяц и название (как сейчас) -данные о кол-ве участников тут не нужны (их можно удалить) В следующем году (в конце января - начале февраля) мы поменяем местами (сдвинем) колонку турниры 2011 и справочную под ней, она встанет на место нынешней колонки турниры 2010 года, а колонку 2010 вместе со справочной таблицей мы удалим. На место турниры 2011 и справочную под ней появится таблица турниры 2012. Что и где нужно будет менять в этом случае ? Что-бы все корректно работало. Если не сложно напишите пожалуйста подробно. прикладываю таблицу (просто в ней в колонке С кое чего поменялось) Но наверно это вообще ни на что не влияет. На второй закладке неактивные игроки там ничего не нужно делать (это только для нас справочная информация). Спасибо Hugo и RAN.
Hugo нам не нужно кликать по фамилиям. Нам нормально когда по номеру турнира.
А что вы вообще хотите увидеть при клике по номеру турнира? Например в турнире 1 участвовало 5 ваших спортсменов. Сейчас этот вариант в таблице отсутствует. Требуется посмотреть а) что это за турнир б) этот турнир, и все турниры, где участвовал этот спортсмен в) что это за турнир и всех ваших участников этого турнира г) еще что-то
Quote (Elena92)
Hugo нам не нужно кликать по фамилиям. Нам нормально когда по номеру турнира.
А что вы вообще хотите увидеть при клике по номеру турнира? Например в турнире 1 участвовало 5 ваших спортсменов. Сейчас этот вариант в таблице отсутствует. Требуется посмотреть а) что это за турнир б) этот турнир, и все турниры, где участвовал этот спортсмен в) что это за турнир и всех ваших участников этого турнира г) еще что-тоRAN
Я всёж настаиваю на даблклике по фамилии Год теперь берётся из заголовков таблиц с турнирами - только следите, чтоб не было ошибки, как в Вашем примере, это теперь недопустимо! Если заголовки будут одинаковые, то код сработает неправильно. Теперь таблицы можете менять местами - главное, чтоб они были на этих местах, и заголовки были в этих ячейках. Когда будете переделывать под рабочие файлы, то Вам придётся поменять значения всюду, где есть буквы и цифры Кроме g1 и g2 - это переменные, год1 и год2.
P.S. Файл удалён, т.к. в него закралась ошибка. Даже две Правильный файл ниже.
Я всёж настаиваю на даблклике по фамилии Год теперь берётся из заголовков таблиц с турнирами - только следите, чтоб не было ошибки, как в Вашем примере, это теперь недопустимо! Если заголовки будут одинаковые, то код сработает неправильно. Теперь таблицы можете менять местами - главное, чтоб они были на этих местах, и заголовки были в этих ячейках. Когда будете переделывать под рабочие файлы, то Вам придётся поменять значения всюду, где есть буквы и цифры Кроме g1 и g2 - это переменные, год1 и год2.
P.S. Файл удалён, т.к. в него закралась ошибка. Даже две Правильный файл ниже.Hugo
Sub test() Sheets(1).[n16].CurrentRegion.Offset(1).Select End Sub
[/vba] ? Только номера и названия захватывает. И ещё столбец левее - т.к. там где-то что-то забито (!!! если так случится в рабочем файле - будет ошибка работы!!!). Если этот диапазон очистить - то только 2 столбца остаются в currentregion. А ещё ведь нужны месяцы, и границу наверх на ряд подвинуть (ну или цикл тогда не до конца вести).
В смысле [vba]
Код
Sub test() Sheets(1).[n16].CurrentRegion.Offset(1).Select End Sub
[/vba] ? Только номера и названия захватывает. И ещё столбец левее - т.к. там где-то что-то забито (!!! если так случится в рабочем файле - будет ошибка работы!!!). Если этот диапазон очистить - то только 2 столбца остаются в currentregion. А ещё ведь нужны месяцы, и границу наверх на ряд подвинуть (ну или цикл тогда не до конца вести).Hugo
Я всёж настаиваю на даблклике по фамилии smile Год теперь берётся из заголовков таблиц с турнирами - только следите, чтоб не было ошибки, как в Вашем примере, это теперь недопустимо!
Попробовала - убедилась вы правы даблклик по ф.и. это оптимально. Да, а в примере у меня была ошибка с годами.
Для RUN (б) этот турнир, и все турниры, где участвовал именно!!! этот спортсмен. Потом будет удобно посмотреть по специфическим базам (не Excel) что этот спортсмен на каждом обозначенном турнире исполнял. Протестирую подробно в понедельник rating-NEW1-Hu.rar(42Kb) пока все вроде ок. Спасибо еще раз подробно отпишусь завтра. Ребята вы волшебники. Кстати 13 и 14 сообщения видимо не для меня - там мне ничего не понятно...
Quote (Hugo)
Я всёж настаиваю на даблклике по фамилии smile Год теперь берётся из заголовков таблиц с турнирами - только следите, чтоб не было ошибки, как в Вашем примере, это теперь недопустимо!
Попробовала - убедилась вы правы даблклик по ф.и. это оптимально. Да, а в примере у меня была ошибка с годами.
Для RUN (б) этот турнир, и все турниры, где участвовал именно!!! этот спортсмен. Потом будет удобно посмотреть по специфическим базам (не Excel) что этот спортсмен на каждом обозначенном турнире исполнял. Протестирую подробно в понедельник rating-NEW1-Hu.rar(42Kb) пока все вроде ок. Спасибо еще раз подробно отпишусь завтра. Ребята вы волшебники. Кстати 13 и 14 сообщения видимо не для меня - там мне ничего не понятно...
Elena92, 13 и 14 сообщения - это скорее мы беседовали Опишу немного свой алгоритм, чтоб понятнее в общем было. Сперва из двух таблиц с номерами турниров создаю "реестр" номеров турниров с заголовками таблиц ( т.е."Турниры 2011 г.|1", ... "Турниры 2010 г.|1"), где к каждому номеру приклеплено описание турнира. Это есть Object("Scripting.Dictionary") - т.е. словарь. Далее перебираю ячейки определённого диапазона строки, где даблкликнули, и проверяю номера по этому реестру. Так проверяю два раза два диапазона. Если номер есть в словаре, то из словаря в массив помещаю описание этого номера (сперва массив увеличиваю на 1 элемент). Ну и ещё - если есть данные по году, то потом добавляю заголовок группе этих данных. [vba]
Код
c(0) = g1 ... c(x) = g2
[/vba] Далее открывается форма, в ListBox которой выгружается собранный массив.
Поэтому, когда будете менять код под свой файл, нужно в коде определить - где эти таблицы, где их заголовки, и где диапазоны с проверяемыми номерами. Ну и какой диапазон отслеживаем на даблклик и где фамилия (кстати, fam = Cells(Target.Row, 4) можно заменить на fam = Target , если кликаем по фамилии).
Elena92, 13 и 14 сообщения - это скорее мы беседовали Опишу немного свой алгоритм, чтоб понятнее в общем было. Сперва из двух таблиц с номерами турниров создаю "реестр" номеров турниров с заголовками таблиц ( т.е."Турниры 2011 г.|1", ... "Турниры 2010 г.|1"), где к каждому номеру приклеплено описание турнира. Это есть Object("Scripting.Dictionary") - т.е. словарь. Далее перебираю ячейки определённого диапазона строки, где даблкликнули, и проверяю номера по этому реестру. Так проверяю два раза два диапазона. Если номер есть в словаре, то из словаря в массив помещаю описание этого номера (сперва массив увеличиваю на 1 элемент). Ну и ещё - если есть данные по году, то потом добавляю заголовок группе этих данных. [vba]
Код
c(0) = g1 ... c(x) = g2
[/vba] Далее открывается форма, в ListBox которой выгружается собранный массив.
Поэтому, когда будете менять код под свой файл, нужно в коде определить - где эти таблицы, где их заголовки, и где диапазоны с проверяемыми номерами. Ну и какой диапазон отслеживаем на даблклик и где фамилия (кстати, fam = Cells(Target.Row, 4) можно заменить на fam = Target , если кликаем по фамилии).Hugo
Здравтсnвуйте Hugo а в турнирах 2010 года в таблице возникает неправильные данные: № турнира правильный, а стальные данные неверные. По 2011 году все ОК Например У 1-го игрока у Елисеева при двойном клике (данные за 2010год) № 61 и 1, а в справочниках они означают другое - что в появляющейся таблице?
Здравтсnвуйте Hugo а в турнирах 2010 года в таблице возникает неправильные данные: № турнира правильный, а стальные данные неверные. По 2011 году все ОК Например У 1-го игрока у Елисеева при двойном клике (данные за 2010год) № 61 и 1, а в справочниках они означают другое - что в появляющейся таблице?Elena92
Да, Елена, извиняюсь, ошибся. В двух местах ошибка была, поэтому просто берите этот файл, а тот сотрите. В одном месте я ошибся, а другую ошибку хочу с Вами поделить - я думал, что обе таблицы по размеру одинаковые (и не перепроверил), а оказывается, что они разные. Обе ошибки были тут: [vba]
Код
For i = 1 To UBound(a) .Add g1 & "|" & a(i, 1), Left(a(i, 1) & " ", 4) & Left(a(i, 16) & " ", 10) & a(i, 2) Next For i = 1 To UBound(b) .Add g2 & "|" & b(i, 1), Left(b(i, 1) & " ", 4) & Left(b(i, 13) & " ", 10) & b(i, 2) Next
[/vba]
Да, Елена, извиняюсь, ошибся. В двух местах ошибка была, поэтому просто берите этот файл, а тот сотрите. В одном месте я ошибся, а другую ошибку хочу с Вами поделить - я думал, что обе таблицы по размеру одинаковые (и не перепроверил), а оказывается, что они разные. Обе ошибки были тут: [vba]
Код
For i = 1 To UBound(a) .Add g1 & "|" & a(i, 1), Left(a(i, 1) & " ", 4) & Left(a(i, 16) & " ", 10) & a(i, 2) Next For i = 1 To UBound(b) .Add g2 & "|" & b(i, 1), Left(b(i, 1) & " ", 4) & Left(b(i, 13) & " ", 10) & b(i, 2) Next
Спасибо огромное за ответ! Завтра все протестирую. Думаю тут проблем не будет. Это тот-же вопрос. Правила я не нарушаю.Serge_007 не ругайтесь. Подскажите - я правильно понимаю в этом (Вашем) макросе, что когда мы заполняем рабочую таблицу (а она выходит у нас 1 раз в месяц). Там у нас меняется (может меняться) кол-во игроков (мы добавляем или удаляем их), кол-во турниров (мы добавляем их в справочники) и забиваем номера турниров соответствующие игроку и все - больше ничего не меняется. В Вашем макросе мы меняем:
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, [D2:100])
[/vba] Вот это число 100 нужно изменить на число соответствующее строке последнего участника в таблице, предположим число Z (это для примера)
'заголовки списка турниров для листбокса берутся с листа из этих ячеек!!! [vba]
Код
g1 = [Y101] g2 = [AW101]
[/vba] Здесь нужно изменить 100 в 2-х строках на (в нашем примере Z+1)
И последнее: 'берём в массивы списки турниров [vba]
Код
a = Range(Cells(103, "AC"), Cells(Rows.Count, "N").End(xlUp)).Value b = Range(Cells(103, "BA"), Cells(Rows.Count, "AO").End(xlUp)).Value
[/vba] Здесь нужно изменить в 2-х строках на (в нашем примере Z+3)
Я права? Больше вроде ничего менять не нужно? Или что-то еще мы пропустили?
Спасибо огромное за ответ! Завтра все протестирую. Думаю тут проблем не будет. Это тот-же вопрос. Правила я не нарушаю.Serge_007 не ругайтесь. Подскажите - я правильно понимаю в этом (Вашем) макросе, что когда мы заполняем рабочую таблицу (а она выходит у нас 1 раз в месяц). Там у нас меняется (может меняться) кол-во игроков (мы добавляем или удаляем их), кол-во турниров (мы добавляем их в справочники) и забиваем номера турниров соответствующие игроку и все - больше ничего не меняется. В Вашем макросе мы меняем:
[vba]
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, [D2:100])
[/vba] Вот это число 100 нужно изменить на число соответствующее строке последнего участника в таблице, предположим число Z (это для примера)
'заголовки списка турниров для листбокса берутся с листа из этих ячеек!!! [vba]
Код
g1 = [Y101] g2 = [AW101]
[/vba] Здесь нужно изменить 100 в 2-х строках на (в нашем примере Z+1)
И последнее: 'берём в массивы списки турниров [vba]
Код
a = Range(Cells(103, "AC"), Cells(Rows.Count, "N").End(xlUp)).Value b = Range(Cells(103, "BA"), Cells(Rows.Count, "AO").End(xlUp)).Value
[/vba] Здесь нужно изменить в 2-х строках на (в нашем примере Z+3)
Я права? Больше вроде ничего менять не нужно? Или что-то еще мы пропустили?Elena92
Ошибочка возникла от того, что я табличку подредактировал. А в сообщении 12 я предлагал сделать примерно как приложенном в файле. Диапазонов "Турнир..." может быть любое количество из любого количества строк. Обязательное условие - совпадение заголовка диапазона и имени листа с таблицей данных.
Ошибочка возникла от того, что я табличку подредактировал. А в сообщении 12 я предлагал сделать примерно как приложенном в файле. Диапазонов "Турнир..." может быть любое количество из любого количества строк. Обязательное условие - совпадение заголовка диапазона и имени листа с таблицей данных.RAN