Страницы: 1
RSS
Как получить полный адрес ячейки по ссылке?
 
Есть два листа со списками. Оба списка нужно связать по одному полю - номер заказа, например. То есть - любая срока из второго  листа должна "жестко" ссылаться на какую-либо одну строку из первого листа (типа один заказ - платежей несколько).    
 
Например ячейка "Платежи!B4" содержит абсолютную ссылку на "Заказы!$B$4" и ссылается на номер заказа 1.  
 
Вопрос: Как из ячейки "Платежи!B5" сослаться на соседнюю ячейку первого листа (это будет "Заказы!$B$5") как смещение на одну позицию от абсолютной ссылки, содержащейся в ячейке "Платежи!B4"? И получить например цену по этому заказу?  
 
Другими словами идея такова, чтобы не водить кучу ссылок, а указывать только "смещение к ссылке". Пардон за тавтологию :)  
 
P.S. Понимаю, что можно реализовать через ВПР() и т.д, но интересует возможность именно такого варианта.
 
Как вариант, и то от нечего делать... А вообще не понятно, чего Вы хотите этим добиться...
 
Уважаемая Диана,  
 
благодарю Вас за подсказки. Благодаря Вашему примеру нашел решение. Оно не очень даже не изящное получилось, но именно то, что было нужно.  
 
А добиться хотел только одного: исключить ошибки ввода по максимуму. Один раз связал строки через номер строки и данные подтягиваются с первой закладки.
 
АДРЕС() вообще мало когда применяется (в практических задачах не видел), ДВССЫЛ() - летучая функция (пересчет при любом изменении на листе), СМЕЩ() такая же.  
Почему ВПР() не подошла?
 
Наверно ВПР() не подходит из за того, что данные могут повторяться в таблице. У меня аналогичная проблема, но это решение не подходит так как я не знаю заранее адрес ячейки из которой брать данные. Теоретически все легко делается, если мы знаем адрес ссылки подстановочной таблицы, функцией ДВССЫЛ()и СМЕЩ(). Вопрос как узнать ссылку на ячейку в текстовом виде?    
 
В моем примере первую ячейку я указываю как ссылку а остальные хочу чтоб заполнялись со смещением из другой таблицы(я их и заполнил вставив текстовый адрес "Реализация!C3" вручную).  
Вопрос - как узнать ссылку на ячейку в текстовом виде?
 
ТОВ "Агрокомплекс Аттіс" и "Аттис" нельзя записать одинаково?  
Можно ли в таблице Реализация название фирмы перенести в первый столбец?
 
{quote}{login=vikttur}{date=30.01.2012 05:28}{thema=}{post}ТОВ "Агрокомплекс Аттіс" и "Аттис" нельзя записать одинаково?  
Можно ли в таблице Реализация название фирмы перенести в первый столбец?{/post}{/quote}  
 
К сожалению таблица Реализация отчетная и связать Оплаты и Реализация по фирме тяжело. Прикрепил таблицы полного вида чтоб Вы нагляднее увидели формирование.    
В Оплаты беруться данные из реализации + забиваю суммы оплат и потом на основе этой таблицы формируеться таблица Общая. Таблицу Оплаты могу изменять как угодно, она рабочая. Реализация и Общая - отчетные таблицы.  
Возможно есть способ вытянуть ссылку хотя бы самописной функцией... все равно пару уже написал для этих отчетов, лишняя не повредит.( в бейсике не силен, изменял под себя чужой код)  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Простите за размер, файл переделал :(
 
Ссылку на ячейку в текстовом виде можно получить например так:  
 
=ЯЧЕЙКА("address";A1)  
 
Но вообще работать с текстовыми ссылками на листе - это через одно место. Есть еще такие вещи как именованные диапазоны, функции ИНДЕКС() и ПОИСКПОЗ(), которые намного предпочтительнее, чем ДВССЫЛ()и СМЕЩ() в книгах с большим кол-вом формул. В вашем файле ничего не понял, а разбираться - времени нет.
KL
 
=ЯЧЕЙКА("address";A1) - дает адрес ячейки, а необходимо получить формулу (ссылку на другой лист) содержащуюся в этой ячейке, в текстовом виде. Хотя это только для того способа который я вижу применимым(ДВССЫЛ()и СМЕЩ()) в силу скудных познаний.  
 
Более понятный пример прикрепляю.
 
Не вижу большого смысла в таком "полу-ручном" подходе. Предположим, имена предприятий на листе Реализация будут повторяться, но ведь должна же существовать логика, по которой вы вручную выбираете ссыслку и которую можно было бы превратить в логическое выражение для формулы. Например: искать последнюю запись для данного предприятия.
KL
 
Данные в таблице Реализация добавляются каждый день и переносятся в оплаты разбиваясь по фирмам и ценам продукции. Фирм количество за день разное да и фирмы разные. Поэтому и не мечтаю про полную автоматизацию. С базами данных как-то легче. Будем думать.  
Спасибо Вам огромное за потраченное на меня время :) Прорвемся.
 
Нашел пользовательскую функцию получения формулы:  
 
Function IsFormula(ByVal Cell As Range, Optional ShowFormula As Boolean = False)  
   'Application.Volatile True  
   If ShowFormula Then  
       If Cell.HasFormula Then  
           IsFormula = "Формула: " & IIf(Cell.HasArray, "{" & Cell.FormulaLocal & "}", Cell.FormulaLocal)  
       Else  
           IsFormula = "Значение: " & Cell.Value  
       End If  
   Else  
       IsFormula = Cell.HasFormula  
   End If  
End Function  
 
 
Данная функция имеет два аргумента:  
 
   Cell — ссылка на проверяемую ячейку;  
   ShowFormula — необязательный аргумент. Если присвоено значение ЛОЖЬ или 0 или опущен(не указан) — то функция вернет значение ИСТИНА или ЛОЖЬ(в зависимости от наличия или отсутствия формулы в ячейке). Если присвоено значение ИСТИНА или 1, то в функция вернет не просто ИСТИНА или ЛОЖЬ, а еще и текст самой формулы.  
Чтобы при изменении формулы в целевой ячейке сразу же изменялось её отображение в ячейке с данной функцией необходимо убрать апостраф(‘) перед Application.Volatile True
Страницы: 1
Читают тему
Наверх