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

Вход

Регистрация

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

 

= Мир MS Excel/Формула с динамическим адресом - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Формула с динамическим адресом (Формулы/Formulas)
Формула с динамическим адресом
RAN Дата: Пятница, 07.06.2019, 21:26 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5126
Репутация: 1023 ±
Замечаний: 0% ±

2010
Мяв!
Прежде всего, хочу сознаться, что название темы и самому не нравится, но идей вообще нет.
Имеется файл, где макрос вставляет формулы.
Сейчас адреса вычисляются в макросе, и все работает. Одна беда - при добавлении/удалении столбцов формулу в макросе нужно править.
Хочу перейти на копипаст из первой строки. Для этого нужна универсальная формула. Объяснять словами, что и почему долго... Зато в файле сразу видно.
Опорный столбец - "A"
Поможите, чем можите!
К сообщению приложен файл: 0779603.xlsx(9.0 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеМяв!
Прежде всего, хочу сознаться, что название темы и самому не нравится, но идей вообще нет.
Имеется файл, где макрос вставляет формулы.
Сейчас адреса вычисляются в макросе, и все работает. Одна беда - при добавлении/удалении столбцов формулу в макросе нужно править.
Хочу перейти на копипаст из первой строки. Для этого нужна универсальная формула. Объяснять словами, что и почему долго... Зато в файле сразу видно.
Опорный столбец - "A"
Поможите, чем можите!

Автор - RAN
Дата добавления - 07.06.2019 в 21:26
bmv98rus Дата: Пятница, 07.06.2019, 21:48 | Сообщение № 2
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2524
Репутация: 436 ±
Замечаний: 0% ±

Excel 2013/2016
RAN, Андрей, я б по возможности вот это рекомендовал бы, для E2
Код
=IF(A2<>"";B2/C2*D2;E1/B1*B2)
, но невозможно начать с первой строки
Альтернатива
Код
=B1/LOOKUP(2;1/($A$1:A1<>"");$C$1:C1)*LOOKUP(2;1/($A$1:A1<>"");$D$1:D1)

Но тогда чем дальше тем тяжелее.
Как-то делал интеллектуальную формулу, сперва берет от первой строки , а спустя несколько строк, когда однозначно появится значение в A, Адрес a1 и остальные "следуют" за формулой
Код
=B1/LOOKUP(2;1/(INDEX(A:A;IF(ROW()<10;1;ROW()-9)):A1<>"");INDEX(C:C;IF(ROW()<10;1;ROW()-9)):C1)*LOOKUP(2;1/(INDEX(A:A;IF(ROW()<10;1;ROW()-9)):A1<>"");INDEX(D:D;IF(ROW()<10;1;ROW()-9)):D1)
В примере отставание 9 строк, то есть в этом промежутке должно появится значение в A


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 07.06.2019, 23:39
 
Ответить
СообщениеRAN, Андрей, я б по возможности вот это рекомендовал бы, для E2
Код
=IF(A2<>"";B2/C2*D2;E1/B1*B2)
, но невозможно начать с первой строки
Альтернатива
Код
=B1/LOOKUP(2;1/($A$1:A1<>"");$C$1:C1)*LOOKUP(2;1/($A$1:A1<>"");$D$1:D1)

Но тогда чем дальше тем тяжелее.
Как-то делал интеллектуальную формулу, сперва берет от первой строки , а спустя несколько строк, когда однозначно появится значение в A, Адрес a1 и остальные "следуют" за формулой
Код
=B1/LOOKUP(2;1/(INDEX(A:A;IF(ROW()<10;1;ROW()-9)):A1<>"");INDEX(C:C;IF(ROW()<10;1;ROW()-9)):C1)*LOOKUP(2;1/(INDEX(A:A;IF(ROW()<10;1;ROW()-9)):A1<>"");INDEX(D:D;IF(ROW()<10;1;ROW()-9)):D1)
В примере отставание 9 строк, то есть в этом промежутке должно появится значение в A

Автор - bmv98rus
Дата добавления - 07.06.2019 в 21:48
Светлый Дата: Пятница, 07.06.2019, 22:35 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1272
Репутация: 322 ±
Замечаний: 0% ±

Excel 2010
Начиная со второй строки:
Код
=ЕСЛИ(A2;B2/C2*D2;E1*B2/B1)
*Или с первой строки:
Код
=ЕСЛИ(A1;B1/C1*D1;СМЕЩ(E1;-1;)*B1/СМЕЩ(B1;-1;))


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Пятница, 07.06.2019, 22:42
 
Ответить
СообщениеНачиная со второй строки:
Код
=ЕСЛИ(A2;B2/C2*D2;E1*B2/B1)
*Или с первой строки:
Код
=ЕСЛИ(A1;B1/C1*D1;СМЕЩ(E1;-1;)*B1/СМЕЩ(B1;-1;))

Автор - Светлый
Дата добавления - 07.06.2019 в 22:35
bmv98rus Дата: Пятница, 07.06.2019, 22:40 | Сообщение № 4
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2524
Репутация: 436 ±
Замечаний: 0% ±

Excel 2013/2016
[offtop]Медведя бессовестно обкрадывают !!!![/offtop]


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение[offtop]Медведя бессовестно обкрадывают !!!![/offtop]

Автор - bmv98rus
Дата добавления - 07.06.2019 в 22:40
RAN Дата: Пятница, 07.06.2019, 23:20 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5126
Репутация: 1023 ±
Замечаний: 0% ±

2010
Спасибо за содействие.
Вариант с обратным пересчетом очень интересен, но, дело даже не во второй строке, ибо таблица, как и кот, в шапке, а в том pray , что реальная формула завернута в округление.
Опять пример составил криво >( .
Альтернатива кажется подходит. Попробую вставить в макрос.
С каких размеров таблицы "тяжесть" формулы станет ощутимой?
Формулу с ИНДЕКСом пока не смотрел.
"Летучую" тоже бы не хотелось.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеСпасибо за содействие.
Вариант с обратным пересчетом очень интересен, но, дело даже не во второй строке, ибо таблица, как и кот, в шапке, а в том pray , что реальная формула завернута в округление.
Опять пример составил криво >( .
Альтернатива кажется подходит. Попробую вставить в макрос.
С каких размеров таблицы "тяжесть" формулы станет ощутимой?
Формулу с ИНДЕКСом пока не смотрел.
"Летучую" тоже бы не хотелось.

Автор - RAN
Дата добавления - 07.06.2019 в 23:20
bmv98rus Дата: Пятница, 07.06.2019, 23:39 | Сообщение № 6
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2524
Репутация: 436 ±
Замечаний: 0% ±

Excel 2013/2016
Андрей, если в A числа, да еще так как в примере, то
Код
=B1/SUMIF($A$1:A1;MAX($A$1:A1);$C$1:C1)*SUMIF($A$1:A1;MAX($A$1:A1);$D$1:D1)
К сообщению приложен файл: 4612579.xlsx(9.7 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 07.06.2019, 23:39
 
Ответить
СообщениеАндрей, если в A числа, да еще так как в примере, то
Код
=B1/SUMIF($A$1:A1;MAX($A$1:A1);$C$1:C1)*SUMIF($A$1:A1;MAX($A$1:A1);$D$1:D1)

Автор - bmv98rus
Дата добавления - 07.06.2019 в 23:39
bmv98rus Дата: Пятница, 07.06.2019, 23:52 | Сообщение № 7
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2524
Репутация: 436 ±
Замечаний: 0% ±

Excel 2013/2016
"Летучую" тоже бы не хотелось.

В нелетучую переделать не проблема,
Код
=IF(A1<>"";B1/C1*D1;INDEX(E:E;ROW()-1)/INDEX(B:B;ROW()-1)*B1)
а вот
реальная формула завернута в округление
делает это бессмысленным


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
"Летучую" тоже бы не хотелось.

В нелетучую переделать не проблема,
Код
=IF(A1<>"";B1/C1*D1;INDEX(E:E;ROW()-1)/INDEX(B:B;ROW()-1)*B1)
а вот
реальная формула завернута в округление
делает это бессмысленным

Автор - bmv98rus
Дата добавления - 07.06.2019 в 23:52
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Формула с динамическим адресом (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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