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

Вход

Регистрация

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

 

= Мир MS Excel/Получить индекс элемента словаря по значению ключа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Получить индекс элемента словаря по значению ключа (Макросы/Sub)
Получить индекс элемента словаря по значению ключа
StoTisteg Дата: Пятница, 09.11.2018, 10:27 | Сообщение № 1
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Коллеги, что-то я в описании такой возможности не нахожу, хотя интуитивно понятно, что она должна быть. Можно ли получить индекс элемента словаря, зная ключ, без полного перебора ключей?


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Пятница, 09.11.2018, 10:27
 
Ответить
СообщениеКоллеги, что-то я в описании такой возможности не нахожу, хотя интуитивно понятно, что она должна быть. Можно ли получить индекс элемента словаря, зная ключ, без полного перебора ключей?

Автор - StoTisteg
Дата добавления - 09.11.2018 в 10:27
Michael_S Дата: Пятница, 09.11.2018, 10:32 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Нельзя.
А зачем? Зная ключ - сразу получим Item.
Или вы о коллекции?
 
Ответить
СообщениеНельзя.
А зачем? Зная ключ - сразу получим Item.
Или вы о коллекции?

Автор - Michael_S
Дата добавления - 09.11.2018 в 10:32
Michael_S Дата: Пятница, 09.11.2018, 10:34 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
дель


Сообщение отредактировал Michael_S - Пятница, 09.11.2018, 10:34
 
Ответить
Сообщениедель

Автор - Michael_S
Дата добавления - 09.11.2018 в 10:34
StoTisteg Дата: Пятница, 09.11.2018, 10:47 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Michael_S, именно о словаре. Он у меня используется для уникальности, потом выгружается на лист в столбец (циклом For), теперь нужно вставить в строки ранее сохранённые данные. То есть зная индекс элемента, было бы весьма удобно это делать, но нет так нет, обойдёмся Find, хотя и не быстрый он, прямо скажем...


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Пятница, 09.11.2018, 10:47
 
Ответить
СообщениеMichael_S, именно о словаре. Он у меня используется для уникальности, потом выгружается на лист в столбец (циклом For), теперь нужно вставить в строки ранее сохранённые данные. То есть зная индекс элемента, было бы весьма удобно это делать, но нет так нет, обойдёмся Find, хотя и не быстрый он, прямо скажем...

Автор - StoTisteg
Дата добавления - 09.11.2018 в 10:47
sboy Дата: Пятница, 09.11.2018, 10:58 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
А почему эти данные сразу в итемы не передать?
Зачем выгружать циклом, если можно массивом?
Приложите пример, а то по описанию возникает ощущение что "вырезаем гланды через задний проход"


Яндекс: 410016850021169
 
Ответить
СообщениеА почему эти данные сразу в итемы не передать?
Зачем выгружать циклом, если можно массивом?
Приложите пример, а то по описанию возникает ощущение что "вырезаем гланды через задний проход"

Автор - sboy
Дата добавления - 09.11.2018 в 10:58
_Boroda_ Дата: Пятница, 09.11.2018, 11:01 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Чет Вы загнули странное такое. По описанию возникает несколько вопросов "Зачем?" Может, все-таки пример покажете?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЧет Вы загнули странное такое. По описанию возникает несколько вопросов "Зачем?" Может, все-таки пример покажете?

Автор - _Boroda_
Дата добавления - 09.11.2018 в 11:01
StoTisteg Дата: Пятница, 09.11.2018, 11:04 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
А! Всё же озвучить проблему — великое дело :) Ежели словарь используется только для сбора уников, то ничто же не мешает вместо[vba]
Код
If Not slov.Exists(FamNam) then slov.Add FamNam, ""
[/vba]писать[vba]
Код
If Not slov.Exists(FamNam) then slov.Add FamNam, slov.Count+1
[/vba]и индекс извлекать как [vba]
Код
slov.Item(FamNam)
[/vba]


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеА! Всё же озвучить проблему — великое дело :) Ежели словарь используется только для сбора уников, то ничто же не мешает вместо[vba]
Код
If Not slov.Exists(FamNam) then slov.Add FamNam, ""
[/vba]писать[vba]
Код
If Not slov.Exists(FamNam) then slov.Add FamNam, slov.Count+1
[/vba]и индекс извлекать как [vba]
Код
slov.Item(FamNam)
[/vba]

Автор - StoTisteg
Дата добавления - 09.11.2018 в 11:04
StoTisteg Дата: Пятница, 09.11.2018, 11:19 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
По описанию возникает несколько вопросов "Зачем?"
Общая задача — совсем не пускать юзверя править книгу, ибо один косячок превратит её в тыкву, а все правки вносить через формы с проверкой правильности данных. Идея проверять уникальность исполнителей прямо в форме и орать на юзверя мне как-то не глянулась. Поэтому макрос удаляет дубликаты тихой сапой, при переносе данных на лист. Если исполнителей нужно добавить или удалить, не трогая тех, у кого уже есть отметка об исполнении (textbox с исполнителем просто .Enabled=False), строки с отметкой могут поползти непредсказуемым образом. Соответственно запоминаем в массив данные об отметках об исполнении, правим в форме, загружаем из неё новый список исполнителей, возвращаем отметки тем, у кого они уже были.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение
По описанию возникает несколько вопросов "Зачем?"
Общая задача — совсем не пускать юзверя править книгу, ибо один косячок превратит её в тыкву, а все правки вносить через формы с проверкой правильности данных. Идея проверять уникальность исполнителей прямо в форме и орать на юзверя мне как-то не глянулась. Поэтому макрос удаляет дубликаты тихой сапой, при переносе данных на лист. Если исполнителей нужно добавить или удалить, не трогая тех, у кого уже есть отметка об исполнении (textbox с исполнителем просто .Enabled=False), строки с отметкой могут поползти непредсказуемым образом. Соответственно запоминаем в массив данные об отметках об исполнении, правим в форме, загружаем из неё новый список исполнителей, возвращаем отметки тем, у кого они уже были.

Автор - StoTisteg
Дата добавления - 09.11.2018 в 11:19
StoTisteg Дата: Пятница, 09.11.2018, 11:30 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Соответственно написание примера с го и гейшами формами и их обработкой для задачи, в тупик отнюдь не загоняющей, лишняя трата сил и времени, на мой взгляд.
Зачем выгружать циклом, если можно массивом?
Ну это да, в боевом варианте так и будет, а пока просто лень массив описывать :)


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеСоответственно написание примера с го и гейшами формами и их обработкой для задачи, в тупик отнюдь не загоняющей, лишняя трата сил и времени, на мой взгляд.
Зачем выгружать циклом, если можно массивом?
Ну это да, в боевом варианте так и будет, а пока просто лень массив описывать :)

Автор - StoTisteg
Дата добавления - 09.11.2018 в 11:30
_Boroda_ Дата: Пятница, 09.11.2018, 11:31 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Я не о том. Я о
возникает ощущение что "вырезаем гланды через задний проход"

Ну ладно, как хотите


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЯ не о том. Я о
возникает ощущение что "вырезаем гланды через задний проход"

Ну ладно, как хотите

Автор - _Boroda_
Дата добавления - 09.11.2018 в 11:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Получить индекс элемента словаря по значению ключа (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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