Страницы: 1
RSS
Транспонировать + связь
 
Как связать две таблицы, т.е. Одна таблица источник, Вторая - транспонированная таблица, в которая будет связана с первой (при изменении данных первой таблицы будут изменяться во второй)?
 
Сначала копируете и вставляете связь (желательно с абсолютными или частично абсолютными ссылками), затем эту связь копируете и транспонируете - получаете транспонированную связь.  
Абслоютныее ссылки нужны для корректного их транспонирования
 
факт, надо делать абсолюнтые. с относительными будет показывать погоду на марсе.  
кстати, а есть способ чтоб сделать в диапазоне сразу все ссылки из относительных абсолютными?
 
{quote}{login=Лузер™}{date=30.05.2008 10:33}{thema=}{post}Сначала копируете и вставляете связь (желательно с абсолютными или частично абсолютными ссылками), затем эту связь копируете и транспонируете - получаете транспонированную связь.  
Абслоютныее ссылки нужны для корректного их транспонирования{/post}{/quote}  
Действительно, как все ссылки сделать абсолютными?
 
Я уже дважды задавал этот вопрос на форуме. Похоже универсального способа нет.  
Единственная возможность известная мне - поиск и замена.  
Если идет ссылка на другой лист, то меняем ! на !$ - тогда только столбцы закрепляются.  
Если ссылка на один столбец, то меняем А на $A$ - тогда ссылка целиком абсолютная.  
Еще есть возможность сразу при вставке связи получить абсолютные ссылки - это выделение кликом на каждой ячейке диапазона с зажатым ctrl.  
Ну и не забываем про функцию =ТРАНСП(), но ей не всегда удобно пользоваться.
 
{quote}{login=Лузер™}{date=30.05.2008 11:10}{thema=}Транспонировать + связь{post}Я Уже дважды задавал этот вопрос на форуме. Похоже универсального способа нет. Единственная возможность известная мне - поиск и замена.  
{/post}{/quote}  
 
Мне ещё известна возможность - использовать готовенькое. Оригинальную ссылку на сайте www.ozgrid.com не нашёл, но вот копия этого макроса:  
http://forum.msexcel.ru/index.php?action=dlattach;topic=235.0;attach=199  
 
PS: Передаём переменной RdoRange вместо всего листа наш диапазон и усё.
 
ТУРБО-ЁЖ, я не смог зайти по вашей ссылке ((  
Но с помощью поиска я нашёл эту страницу на том сайте. Там 2 макроса, которые переводят ссылки из Абсолютных в Относительные и наоборот. Первый указан как быстрый способ (Fast), другой как более медленный (Slow)  
 
http://www.ozgrid.com/VBA/formula-ref-change.htm
 
Во-первых, спасибо Павлу и Турбо-ежу за найденный метод ConvertFormula. Я подозревал, что должно быть что-то такое.  
Быстрый способ выполняется примерно в 100 раз быстрее, но медленный учитывает формулы массива, а быстрый их превратит в обычные, со всеми вытекающими.  
Кроме того, быстрый способ можно записать на порядок короче:  
Sub MakeAbsoluteorRelativeFastMod()  
'Written by OzGrid Business Applications  
'www.ozgrid.com  
 
Dim RdoRange As Range  
Dim Reply As String  
 
   'Ask whether Relative or Absolute  
   Reply = InputBox("Change formulas to?" & Chr(13) & Chr(13) _  
   & "Absolute all = 1" & Chr(13) _  
   & "Absolute row/Relative column = 2" & Chr(13) _  
   & "Relative row/Absolute column = 3" & Chr(13) _  
   & "Relative all = 4", "OzGrid Business Applications")  
 
   'They cancelled  
   If Reply = "" Then Exit Sub  
   ReferenceType = Val(Reply)  
   On Error Resume Next  
   'Set Range variable to formula cells only  
   Set RdoRange = Selection.SpecialCells(Type:=xlFormulas)  
   RdoRange.Formula = Application.ConvertFormula _  
   (Formula:=RdoRange.Formula, _  
   FromReferenceStyle:=xlA1, _  
   ToReferenceStyle:=xlA1, ToAbsolute:=ReferenceType)  
       'Clear memory  
   Set RdoRange = Nothing  
End Sub  
Только быстрее он от этого не становится, хотя и медленнее тоже. :)  
попробовал запихнуть обработку массива ячеек в массив VBA - выигрыша в скорости никакого не получил. :(
 
Можно ли копировать лист одной книги в другую, без связей на папку и файл, только чтобы оставались связи на лист, при этом название листов в каждой книге, их структура одинаковы? Понятно, что можно изменить потом связи, но можно ли изначально их не тащить…
Ирина
Страницы: 1
Читают тему
Наверх