powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / переименование именовонных ячеек
25 сообщений из 49, страница 1 из 2
переименование именовонных ячеек
    #35048819
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Проблема в следеющем. Существет файл Excel в нем 20 листов. Все строки от A1 до A100 каждого листа проименованы как I_1.. I_100. Мне нужно изменить имя именованной ячейки, чтобы имя включало номер листа, допустим List1_I_1.. List1_I_100, для второго List2_I_1.. List2_I_100. Все вроде бы понятно, только не могу получить имя именованной ячейки, не оригинальное, а именно именование. Рисунок прилагаю.
Буду очень признателен за наставление на путь истины.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048855
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотри на коллекцию workbook.names
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048865
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оно и так его включает, только так же как для адреса ячейки, который одинаковый на всех листах не отображается имя листа, так и для именованой формулы.
Если всё же не включает то задайте имя с именем листа
лист1!Имя1 , хотя в окошке отображается только Имя1, но на самом деле можно ссылаться на этот адрес со всех листов как лист1!Имя1 , так же как лист1!A5 например.
Для того чтобы проверить принадлежит ли ямя определённому листу или всей книги, нужно зайти в меню вставка - имя - присвоить и посмотреть есть ли напротив имени имя текущего листа или нет. Если нет, то значит оно принадлежит всей книге. И в данном случае если сослаться на это имя без указания имени листа, то при наличии на текущем листе такого имени, эксель возмёт его, а при отсутствии возмёт имя которое для всей книги.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048889
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, вы не поняли ) У меня таких файлов 200 штук, мне нужно просто автоматизировать процесс переименования ячеек. В принципе вот и все. Вот что я не могу найти в доке - это как мне получить текущее имя именованной ячейки. Именно то самое I_1 и просто сделать из него List1_I_1. Вообщем так. А-то я так до 100 лет буду руками перебивать, а через 100 лет я буду уже точно на погосте )
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048896
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadДля того чтобы проверить принадлежит ли ямя определённому листу или всей книги, нужно зайти в меню вставка - имя - присвоить и посмотреть есть ли напротив имени имя текущего листа или нет. Если нет, то значит оно принадлежит всей книге. И в данном случае если сослаться на это имя без указания имени листа, то при наличии на текущем листе такого имени, эксель возмёт его, а при отсутствии возмёт имя которое для всей книги.Вообще-то, имя области не может принадлежать либо тому, либо другому.
Имя области всегда принадлежит листу. А коллекция имен книги это автоматически склеенная коллекция из всех коллекций листов. Запусти макрос типа:
Код: plaintext
1.
activesheet.names.add Name:="aaa", refersto:=activesheet.range("a1")
debug.print activeworkbook.Names( 1 ).Name
и сам увидишь.
Когда ты ссылаешься на именованную область без указания листа - Эксель ищет эту область сначала на текущем листе, если не нашел - ищет по всей книге. А если на двух листах есть области с одинаковыми именами, то Эксель либо выругается либо возмет первую попавшийся лист (это зависит от контекста).
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048898
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скриптик, хоть пример, дальше я допетрю сам.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048899
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex232Вот что я не могу найти в доке - это как мне получить текущее имя именованной ячейки. Именно то самое I_1 и просто сделать из него List1_I_1. Вообщем так.А никак ты его не получишь. Пляши от коллекции имен. Делай по ней цикл, смотри куда очередное имя показывает и меняй соотвественно.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048902
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боюсь, что это может привести к тяжеловесным решениям типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub test()
    Dim n As Name
    For Each n In ThisWorkbook.Names
        If Not Intersect(ActiveCell, n.RefersToRange) Is Nothing Then
            'MsgBox n.Name
            n.Name = " List1_I_1"
        End If
    Next n
End Sub


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048904
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, это добавить именованную ячейку. Я так пробовал. Но мне нужно примерно так.
1) OldSellName = Получить имя именованной ячейки в текущем листе по индексу допустим 1,1 или по Range)
2) newName ="List_"+ номер листа преобразованный в строку+"_"+OldSellName
3) Переименовать OldSellName на newName ( или сперва удалить OldSellName и присвоить newName)

Вообщем-то понимаю? что как-то тривиально , но в VBA не силен, докопаюсь конечно, но нужно это сделать как обычно - ВЧЕРА :(
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048907
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Боюсь, что это может привести к тяжеловесным решениям типа:Если от ячейки плясать, то да. А если сразу от имени, то все намного проще будет :)
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048912
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl DeggasadДля того чтобы проверить принадлежит ли ямя определённому листу или всей книги, нужно зайти в меню вставка - имя - присвоить и посмотреть есть ли напротив имени имя текущего листа или нет. Если нет, то значит оно принадлежит всей книге. И в данном случае если сослаться на это имя без указания имени листа, то при наличии на текущем листе такого имени, эксель возмёт его, а при отсутствии возмёт имя которое для всей книги.Вообще-то, имя области не может принадлежать либо тому, либо другому.
Имя области всегда принадлежит листу. А коллекция имен книги это автоматически склеенная коллекция из всех коллекций листов. Запусти макрос типа:
Код: plaintext
1.
activesheet.names.add Name:="aaa", refersto:=activesheet.range("a1")
debug.print activeworkbook.Names( 1 ).Name
и сам увидишь.
Когда ты ссылаешься на именованную область без указания листа - Эксель ищет эту область сначала на текущем листе, если не нашел - ищет по всей книге. А если на двух листах есть области с одинаковыми именами, то Эксель либо выругается либо возмет первую попавшийся лист (это зависит от контекста).

У меня складывается впечатление что половину этого говорил я, а во второйполовине вы ошибаетесь. Посмотрите мой файл.
1)2 именю одинаковых для книги быть не может. Только одно может быть для книги, второе уже автоматом ставится только для листа.
2)если есть имя Name1 , которое принадлежит определённому листу, т.е. Sh1!Name1 ? то написав на другом листе в ячеке =Name1 , вы получите лишь ошибку, ничего эксель не найдет, т.к. на имя принадлежащее листу нужно ссылаться с других листов только так =Sh1!Name1
3) Возможно я неправильно называю термин принадлежащее листу, просто я это сам придумал, т.к. правильных определений не знаю.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048916
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlЕсли от ячейки плясать, то да. А если сразу от имени, то все намного проще будет :)Ты об этом?

Код: plaintext
ThisWorkbook.Names("I_1").Name = "List1_I_1"

Да, это было бы легко, но похоже задача несколько другая :-)
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048919
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, ага они проименованы, нужно их просто чуток подправить. Вот и все. Им не нужно присваивать новое имя их нужно просто переименовать по правилам которые я оприсал, вернне просто приписать порядковый номер листа. Это нужно для того чтобы дурацкая система отчетнсьти легла по данным. Сейчас ячеки называються просто I_xxx, а нужно их трасформировать в L1I_xxx, вот и все... Тока для меня пока это загадка века. Я не программист, я бухгалтер.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048920
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть закономерность именования ячеек или несколько закономерностей или шаблон имен для всех листов, то на...замеч вообще старое имя ячейки узнавать. Задавай новые имена для всех, да и всё.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048922
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad, нельзя, это добро потом выгружаеться в центр учета, а он итоговый отччет раситывает именно по именам ячеек. Вот тока так и никак иначе.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048923
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadУ меня складывается впечатление что половину этого говорил я, а во второйполовине вы ошибаетесь. Посмотрите мой файл.
1)2 именю одинаковых для книги быть не может. Только одно может быть для книги, второе уже автоматом ставится только для листа.
2)если есть имя Name1 , которое принадлежит определённому листу, т.е. Sh1!Name1 ? то написав на другом листе в ячеке =Name1 , вы получите лишь ошибку, ничего эксель не найдет, т.к. на имя принадлежащее листу нужно ссылаться с других листов только так =Sh1!Name1
3) Возможно я неправильно называю термин принадлежащее листу, просто я это сам придумал, т.к. правильных определений не знаю.

Усложним задачу (см. приложение). Посмотри на всех 3х листах и найди 3 отличия при наличии лишь одного имени.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048929
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex232Deggasad, нельзя, это добро потом выгружаеться в центр учета, а он итоговый отччет раситывает именно по именам ячеек. Вот тока так и никак иначе.
Так я и предлагаю вам имена всех ячеек по новой назначить, вы же знаете как они должны называться.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048933
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad, допустим так. Вы что предлагаете ? Руками все перебить ? Легко )
Все ячеки, старый удалить, а новые присвоить, это при условии что на каждом листе их ( мы называем это показателями около 1500 штук, листов 20, файлов 200) :) Что тогда я тут делаю ? =)
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048939
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex232Deggasad, допустим так. Вы что предлагаете ? Руками все перебить ? Легко )
Все ячеки, старый удалить, а новые присвоить, это при условии что на каждом листе их ( мы называем это показателями около 1500 штук, листов 20, файлов 200) :) Что тогда я тут делаю ? =)

Епти, да не руками а макросом, перебрать все нужные ячейки и задать имена которые нужно, при условии что есть шаблон по которому нужно задавать имена.
Например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for each sh in thisworkbook.shrrts
 n =  1 
 for each iCell in range("A1:A10")
   iCell.name = sh.name & "name" & format(n, "00")
   n = n+ 1 
 next iCell
 n= 0 
next sh

Ведь есть же какая-то закономерность имён, или шаблон из которого имена для ячеек можно дёргать.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048942
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну самое простое, что вы должны знать. Как мне получить имя именованной ячейки ? не реальное имя, а именно присвоенное мной ? Дальше сам разберусь.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048943
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deggasad
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
for each sh in thisworkbook.sheets
 n =  1 
 for each iCell in range("A1:A10")
   iCell.name = sh.name & "_name_" & format(n, "00")
   n = n+ 1 
 next iCell
 n= 0 
next sh


исправления
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048944
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad, а вот iCell.name возвращает реальное имя ячейки :) А вот мне нужно получить старое присвоенное ячейке имя. Я до этого сам допетрил. Не подходит.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048946
Ex232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возвращает так:
'415050110440032131'!$A$16
а мне нужно, просто I_145. Вот так-то. Че и маюсь.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048949
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)
Усложним задачу (см. приложение). Посмотри на всех 3х листах и найди 3 отличия при наличии лишь одного имени.

ШАМАН
правильно я понял, что перед адресом нужно добавить ! (вскл зн) и стереть имя листа?

Шаман, но только моё высказывание эта уловочка не опровергает по той простой причине, что это одно имя (просто замудрёное), а я говорил, что не может быть несколько одинаковых имён в колеекции имён книги, принадлежащих всей книге, а не отдельному листу.
...
Рейтинг: 0 / 0
переименование именовонных ячеек
    #35048951
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex232Возвращает так:
'415050110440032131'!$A$16
а мне нужно, просто I_145. Вот так-то. Че и маюсь.

Вы так совсем замаетесь
Неужели я непонятно изъясняюсь
НАЗОВИ ЕГО ПО НОВОЙ ДА И ВСЁ

Если у тебя есть какакя-то закономерность имён, а если её нет, нах они вообще нужны.
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / переименование именовонных ячеек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]