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

Вход

Регистрация

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

 

= Мир MS Excel/Уникальный идентификатор ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Уникальный идентификатор ячейки
Gamma754 Дата: Пятница, 11.04.2014, 23:16 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
Всем привет!

Есть задача - программно присваивать ячейке какой-нибудь уникальный идентификатор, чтобы потом его использовать в различных операциях. Идентификатор должен свободно "висеть" в течение всего времени работы, сохраняться вместе с книгой и не зависеть от изменений значений value ячейки. Это что-то типа атрибута "tag", куда можно писать любой текст, только это для ячейки excel.

Пробовал использовать range.id, но он удаляется, если нажать del.
Есть еще вариант range.name, но там любые значения не запишешь.
Примечания используются для других целей.
Есть всякие варианты сделать номерную серию, присваивать name ячейки номер, по номеру хранить текст где-то в другом месте, но это не вариант, это грустно и громоздко.

Конкретно в моем случае, динамически создается временная
таблица, в которой я пишу значения, которые потом сохраняю
в другой таблице по параметрам, которые и хотелось бы прописать
в идентификаторе ячейки, т.е. там будет некий paramstring или куски SQL-запросов.

В общем, что-то типа cell custom properties.

Если у кого-то есть мысли, было бы здорово.
))


Сообщение отредактировал Gamma754 - Пятница, 11.04.2014, 23:47
 
Ответить
СообщениеВсем привет!

Есть задача - программно присваивать ячейке какой-нибудь уникальный идентификатор, чтобы потом его использовать в различных операциях. Идентификатор должен свободно "висеть" в течение всего времени работы, сохраняться вместе с книгой и не зависеть от изменений значений value ячейки. Это что-то типа атрибута "tag", куда можно писать любой текст, только это для ячейки excel.

Пробовал использовать range.id, но он удаляется, если нажать del.
Есть еще вариант range.name, но там любые значения не запишешь.
Примечания используются для других целей.
Есть всякие варианты сделать номерную серию, присваивать name ячейки номер, по номеру хранить текст где-то в другом месте, но это не вариант, это грустно и громоздко.

Конкретно в моем случае, динамически создается временная
таблица, в которой я пишу значения, которые потом сохраняю
в другой таблице по параметрам, которые и хотелось бы прописать
в идентификаторе ячейки, т.е. там будет некий paramstring или куски SQL-запросов.

В общем, что-то типа cell custom properties.

Если у кого-то есть мысли, было бы здорово.
))

Автор - Gamma754
Дата добавления - 11.04.2014 в 23:16
Hugo Дата: Суббота, 12.04.2014, 00:37 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3547
Репутация: 771 ±
Замечаний: 0% ±

365
Словарь адресов ячеек (можно с книгой/листом), адресу в item пишем что угодно, хоть другой словарь.
Правда вот "сохраняться вместе с книгой" словарь словарей будет затруднительно сделать, да и вообще придётся его на скрытый лист перед сохранением выгружать, а при открытии оттуда считывать.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
СообщениеСловарь адресов ячеек (можно с книгой/листом), адресу в item пишем что угодно, хоть другой словарь.
Правда вот "сохраняться вместе с книгой" словарь словарей будет затруднительно сделать, да и вообще придётся его на скрытый лист перед сохранением выгружать, а при открытии оттуда считывать.

Автор - Hugo
Дата добавления - 12.04.2014 в 00:37
Gustav Дата: Суббота, 12.04.2014, 08:04 | Сообщение № 3
Группа: Админы
Ранг: Участник клуба
Сообщений: 2770
Репутация: 1140 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Есть еще вариант range.name, но там любые значения не запишешь.
Примечания используются для других целей.
Есть всякие варианты сделать номерную серию, присваивать name ячейки номер, по номеру хранить текст где-то в другом месте, но это не вариант, это грустно и громоздко.

Почему грустно? Почему громоздко? Я как раз за подобный алгоритм:
1. На основном листе генерируем для ячейки имя - Range.Name.
2. Это Name прописываем на другой лист (можно скрытый) в ячейку колонки A.
3. Начиная с колонки B можем писать на этом другом листе хоть по 32767 символов в каждую ячейку. Всё это будут комментарии, теги, кастом пропертис к нашему священному Name.
Т.е. фактически это означает создание справочника именованных ячеек на отдельном листе.

По поводу "грусти и громоздкости". Строка для определенного Name на другом листе легко находится при помощи функции ПОИСКПОЗ или программно при помощи ее аналога WorksheetFunction.Match. Не громоздче, чем доставать инфу из примечания к ячейке.

По поводу скорости обработки. Известно, что диапазон ячеек листа считывается в массив одной операци присваивания: array = Range("A1..."). А дальше в массиве, как я недавно и не без удовольствия обнаружил, работают все полезные функции поиска из семейства WorksheetFunction: Match, Index, Lookup и др. Т.е. программирование всего этого хозяйства обещает быть вполне комфортным.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Есть еще вариант range.name, но там любые значения не запишешь.
Примечания используются для других целей.
Есть всякие варианты сделать номерную серию, присваивать name ячейки номер, по номеру хранить текст где-то в другом месте, но это не вариант, это грустно и громоздко.

Почему грустно? Почему громоздко? Я как раз за подобный алгоритм:
1. На основном листе генерируем для ячейки имя - Range.Name.
2. Это Name прописываем на другой лист (можно скрытый) в ячейку колонки A.
3. Начиная с колонки B можем писать на этом другом листе хоть по 32767 символов в каждую ячейку. Всё это будут комментарии, теги, кастом пропертис к нашему священному Name.
Т.е. фактически это означает создание справочника именованных ячеек на отдельном листе.

По поводу "грусти и громоздкости". Строка для определенного Name на другом листе легко находится при помощи функции ПОИСКПОЗ или программно при помощи ее аналога WorksheetFunction.Match. Не громоздче, чем доставать инфу из примечания к ячейке.

По поводу скорости обработки. Известно, что диапазон ячеек листа считывается в массив одной операци присваивания: array = Range("A1..."). А дальше в массиве, как я недавно и не без удовольствия обнаружил, работают все полезные функции поиска из семейства WorksheetFunction: Match, Index, Lookup и др. Т.е. программирование всего этого хозяйства обещает быть вполне комфортным.

Автор - Gustav
Дата добавления - 12.04.2014 в 08:04
Gamma754 Дата: Суббота, 12.04.2014, 13:02 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
Решение нашлось.
Оказывается, range.name - это объект (к моему большом удивлению), и там есть свойство comment, куда можно писать все. Это string, 255 симв., но мне хватит.


Почему грустно? Почему громоздко?
Т.к. мне для каждой ячейки, к которой надо хранить properties, нужно "содержать" 1 строку на скрытом листе. Т.е. надо создавать механизм ее создания, редактирования, удаления. К тому же, каждый раз при создании рабочего листа придется заботится о том, чтобы генерить те же самые имена, что и в прошлый раз (или читать их с листа).

Я проправлюсь, эта схема громоздкая в моем случае. А так она, по меньшей мере, рабочая, и, бы даже сказал, классическая, и за нее респект )).


(лирическая приписка)
А так вообще я за то, чтобы хранить только исходные табличные данные (в виде plain tables), а все "Простыни" для работы генерить динамически, вместе с формулами и всем прочим. Это удобно - представьте, что мне надо вести учет по 30 товарным позициям в течение 6 мес. по 4м поставщикам. Отслеживать, там, общий процент поставки, делать заказы и т.п. Если я буду руками рисовать эту простыню - ошибки неизбежны. Т.е. все рабочие простыни генерятся автоматически,а введенные в них значения - сохраняются.
К сообщению приложен файл: 9779989.png (57.3 Kb)


Сообщение отредактировал Gamma754 - Суббота, 12.04.2014, 13:04
 
Ответить
СообщениеРешение нашлось.
Оказывается, range.name - это объект (к моему большом удивлению), и там есть свойство comment, куда можно писать все. Это string, 255 симв., но мне хватит.


Почему грустно? Почему громоздко?
Т.к. мне для каждой ячейки, к которой надо хранить properties, нужно "содержать" 1 строку на скрытом листе. Т.е. надо создавать механизм ее создания, редактирования, удаления. К тому же, каждый раз при создании рабочего листа придется заботится о том, чтобы генерить те же самые имена, что и в прошлый раз (или читать их с листа).

Я проправлюсь, эта схема громоздкая в моем случае. А так она, по меньшей мере, рабочая, и, бы даже сказал, классическая, и за нее респект )).


(лирическая приписка)
А так вообще я за то, чтобы хранить только исходные табличные данные (в виде plain tables), а все "Простыни" для работы генерить динамически, вместе с формулами и всем прочим. Это удобно - представьте, что мне надо вести учет по 30 товарным позициям в течение 6 мес. по 4м поставщикам. Отслеживать, там, общий процент поставки, делать заказы и т.п. Если я буду руками рисовать эту простыню - ошибки неизбежны. Т.е. все рабочие простыни генерятся автоматически,а введенные в них значения - сохраняются.

Автор - Gamma754
Дата добавления - 12.04.2014 в 13:02
Serge_007 Дата: Суббота, 12.04.2014, 14:52 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
вести учет по 30 товарным позициям в течение 6 мес. по 4м поставщикам. Отслеживать, там, общий процент поставки, делать заказы и т.п.
Это легко делается вообще без программирования, сводными таблицами...


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
вести учет по 30 товарным позициям в течение 6 мес. по 4м поставщикам. Отслеживать, там, общий процент поставки, делать заказы и т.п.
Это легко делается вообще без программирования, сводными таблицами...

Автор - Serge_007
Дата добавления - 12.04.2014 в 14:52
Gamma754 Дата: Понедельник, 21.04.2014, 22:40 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
(Продолжая лирику последнего сообщения).
Вообще, чем дальше я пишу, тем больше хочется изобрести для экселя что-то типа jquery. Вообще, странно, что этого еще не изобрели. Такие массивы данных - и нет языка развитого языка запросов. Кгм, действительно странно.


легко делается вообще без программирования, сводными таблицами
. Ну, не знаю.

(продолжая мысль)
Вообще, я сталкиваюсь в экселе с как полнейшим концептуальным отсутствие такой штуки, как теги. Без всяких доп. наворотов типа массивов данных на других листах и т.п., в которых рано или поздно запутываешься. Просто нет тегов, которыми можно как-то манипулировать. Приходится давать диапазонам имена, хранить в переменных адреса ячеек с опред. признаками, или прибегать к цветовой \ текстовой разметке на листе, чтобы потом, например, поместить в эти ячейки формулу, собранную из каких-то других, заранее размеченных ячеек по опред. критериям. И все это делается, фактически, переборами диапазонов. Бррр.



Сообщение отредактировал Gamma754 - Понедельник, 21.04.2014, 23:25
 
Ответить
Сообщение(Продолжая лирику последнего сообщения).
Вообще, чем дальше я пишу, тем больше хочется изобрести для экселя что-то типа jquery. Вообще, странно, что этого еще не изобрели. Такие массивы данных - и нет языка развитого языка запросов. Кгм, действительно странно.


легко делается вообще без программирования, сводными таблицами
. Ну, не знаю.

(продолжая мысль)
Вообще, я сталкиваюсь в экселе с как полнейшим концептуальным отсутствие такой штуки, как теги. Без всяких доп. наворотов типа массивов данных на других листах и т.п., в которых рано или поздно запутываешься. Просто нет тегов, которыми можно как-то манипулировать. Приходится давать диапазонам имена, хранить в переменных адреса ячеек с опред. признаками, или прибегать к цветовой \ текстовой разметке на листе, чтобы потом, например, поместить в эти ячейки формулу, собранную из каких-то других, заранее размеченных ячеек по опред. критериям. И все это делается, фактически, переборами диапазонов. Бррр.


Автор - Gamma754
Дата добавления - 21.04.2014 в 22:40
  • Страница 1 из 1
  • 1
Поиск:

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