Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2016, 14:49   #21
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

Ребят, помогите, всё обыскал, чёт не пойму как сделать:
Хочу сделать историю преобразования чертежей..
В ячейках ссылки:

___А_________B______________C______ __________________D
1 Чертёж 0
2 Чертёж 1 =A1
3 Чертёж 2 =B2 =INDIRECT(FORMULA(B2)) =INDIRECT(FORMULA(C3))
4 Чертёж 3 =B3 =INDIRECT(FORMULA(B3)) =INDIRECT(FORMULA(C4))...
5 Чертёж 4 =B4


Проблема в том, что FORMULF(B2) возвращает формулу, а не тектовое значение!!!
Как формулу преобразовать в текст?
Ожидаемый результат:
____А_________B_________C_________D _________E
1 Чертёж 0
2 Чертёж 1 Чертёж 0
3 Чертёж 2 Чертёж 1 Чертёж 0
4 Чертёж 3 Чертёж 2 Чертёж 1 Чертёж 0
5 Чертёж 4 Чертёж 3 Чертёж 2 Чертёж 1 Чертёж 0


P.S. операторы для LIBRE Office Calc, но приму советы по экселю, потом переделаю

P.S2 строк полно и не обязательно все чертежи идут подряд по изменениям, так что привязаться к номеру строки не получится. т.е. может быть вот так:
____А_________B_________C_________D _________E
1 Чертёж 0
2 Чертёж 1 Чертёж 0
3 Чертёж 2 Чертёж 1 Чертёж 0
4 Чертёж 6
5 Чертёж 3 Чертёж 2 Чертёж 1 Чертёж 0
6 Чертёж 11
7 Чертёж 4 Чертёж 3 Чертёж 2 Чертёж 1 Чертёж 0

Последний раз редактировалось sorockinalex; 02.06.2016 в 11:01.
sorockinalex вне форума Ответить с цитированием
Старый 01.06.2016, 16:30   #22
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Так не пойдет?
Изображения
Тип файла: jpg ATT.jpg (100.7 Кб, 117 просмотров)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 01.06.2016, 19:24   #23
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

нет, так не пойдёт, т.к. строчки будут в разброс. Привязка должна идти к адресу ячейки, а не оффсетом
sorockinalex вне форума Ответить с цитированием
Старый 01.06.2016, 19:56   #24
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Не влавливаю логики, почему в вас в В2 формула "=А2" а в ожидаемом результате там "Чертеж 0" а не "Чертеж 1".

Может в С3 формулу:

Код:
=INDIRECT(MID(FORMULA(B2);2;50))
?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 02.06.2016, 11:26   #25
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

Да, там ошибка была - исправил.
То, что надо, спасибо! Только вот дальше теперь не знаю как продолжить...

____А_________B_________C_________D _________E
1 Чертёж 0
2 Чертёж 1 Чертёж 0
3 Чертёж 2 Чертёж 1 Чертёж 0
4 Чертёж 3 Чертёж 2 Чертёж 1 Чертёж 0
5 Чертёж 4 Чертёж 3 Чертёж 2 Чертёж 1 Чертёж 0

Код:
MID(FORMULA(B1);2;50)                  выдаёт A2
INDIRECT(MID(FORMULA(B1);2;50)) выдаёт значение в ячейке A2
А мне нужно значение в ячейке B2
Как хочу сделать:
1. Преобразовать MID(FORMULA(B1);2;50) в ссылку на ячейку (обозначим как x) - каким образом???
2. OFFSET(x, 0, 1) - беру правее на 1 ячейку
3. INDIRECT(OFFSET(x, 0, 1))

При копировании формулы на 10 столбцов вправо будет древовидно отображаться история создания чертежей, где чем правее по строке - тем древнее...

Текущий вопрос: как преобразовать адрес ячейки из текстового вида в адресовый...
sorockinalex вне форума Ответить с цитированием
Старый 02.06.2016, 11:43   #26
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

как преобразовать адрес ячейки из текстового вида в адресовый...
Код:
ДВССЫЛ(...)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.06.2016, 11:56   #27
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
как преобразовать адрес ячейки из текстового вида в адресовый...
Код:
ДВССЫЛ(...)

INDIRECT (ДВССЫЛ) выдаёт текстовое значение ячейки по её адресу.
А мне нужно преобразовать текст в адрес, чтобы сделать как я писал выше
sorockinalex вне форума Ответить с цитированием
Старый 02.06.2016, 12:06   #28
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

цитата из справки по ДВССЫЛ:

ДВССЫЛ (функция ДВССЫЛ)
В этой статье описаны синтаксис формулы и использование функции ДВССЫЛ в Microsoft Excel.
Описание
Возвращает ссылку, заданную текстовой строкой. Ссылки немедленно вычисляются для вывода их содержимого
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.06.2016, 12:21   #29
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

Разберём на примере:
в B1 записана формула =A2
в B2 записана формула =An
n - произвольное число.
A2 имеет текст "Чертёж 1"
An имеет текст "Чертёж 0"

В столбец А вписываются новые обозначения чертежей
В столбец Б ставится ссылка на чертёж, из которого образован новый
Остальные столбцы автоматически высчитываются

____А_________B_________C_________D _________E
1 Чертёж 2 Чертёж 1 Чертёж 0
2 Чертёж 1 Чертёж 0
...
n Чертёж 0
...
m Чертёж 3 Чертёж 2 Чертёж 1 Чертёж 0


______________________результат действия

FORMULA(B1) =А2 в виде формулы
MID(FORMULA(B1);2;10) "A2" в виде текстовой строки
INDIRECT(MID(FORMULA(B1);2;10)) "Чёртёж 1" в виде текстовой строки

Если бы INDIRECT выдавал значение в виде ссылки (A2), тогда бы я сделал дальше:
OFFSET(INDIRECT(MID(FORMULA(B1);2;1 0)),0,1), получив адрес B2 и далее
INDIRECT(OFFSET(INDIRECT(MID(FORMUL A(B1);2;10)),0,1)) выдал бы мне "Чертёж 0"

Но INDIRECT выдаёт текстовое значение, а не адрес ячейки!

Последний раз редактировалось sorockinalex; 02.06.2016 в 12:28.
sorockinalex вне форума Ответить с цитированием
Старый 02.06.2016, 12:42   #30
sorockinalex
Пользователь
 
Регистрация: 10.10.2009
Сообщений: 22
По умолчанию

Сделал вот так по коду символа:
C1:
=INDIRECT(ADDRESS(MID(FORMULA(B1);3 ;10);CODE(MID(FORMULA(B1);2;10))-63;4))

Скопировал формулу в соседний столбец
D1:
=INDIRECT(ADDRESS(MID(FORMULA(C1);3 ;10);CODE(MID(FORMULA(C1);2;10))-63;4))

- выводит "№ЗНАЧЕН"...
Изображения
Тип файла: jpg 2016-06-02_124322.jpg (68.7 Кб, 119 просмотров)
sorockinalex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст в ячейке по нажатию на каждую ссылку. Droid HTML и CSS 18 05.09.2013 00:05
По значению из выпадающего списка в рядом стоящей ячейке выводить текст 550953 Microsoft Office Excel 6 09.09.2009 06:59
Перенос текст в ячейке DataGrid doober Общие вопросы .NET 0 29.06.2009 12:37
В одной ячейке текст и число Shavminator Microsoft Office Excel 11 27.12.2007 14:32
в одной ячейке надписи были в 2-х или 3-х рядках и текст отображался целиком а не прятался за границами KSP Общие вопросы Delphi 7 20.09.2007 20:33