Excel: Flashfill Offset по горизонтали + по вертикали - PullRequest
3 голосов
/ 06 апреля 2020

Так что я не фанат VBA, и недавно я узнал, что OFFSET можно использовать с COUNTA для мгновенного заполнения диапазона до тех пор, пока вы стремитесь к более длинному диапазону, чем у вас есть данные. Теперь я хочу добиться этого одновременно для столбцов и строк, где строки усредняются. Можно ли это сделать? Я бьюсь головой о стену, чтобы найти какую-то логику c, чтобы сделать это, но мне удается только объединить ее таким образом, чтобы умножить строки на номер столбца ... что, конечно, нежелательно.

Я опубликовал минимальный воспроизводимый пример в Excel Online: https://onedrive.live.com/view.aspx?resid=63EC0594BD919535! 1491 & ithint = file% 2cxlsx & authkey =! ALmV0VtFb7QZCvI

Если вы увидите ячейки J9 и J11, вы увидите посмотрим, что я хочу совместить. Три строки в J11 и ниже, я хочу усреднить в J10, и разлив / флэш-заполнение (как J9 и 11 делает автоматически из-за формулы уже) их справа, для столько столбцов, сколько данных в диапазоне A1- G4 ..

Итак, у меня есть необработанные данные чисел с заголовками в A1-G4, и, записав =OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1) в J9, я получаю все заголовки столбцов, заполненные слева направо и, написав =OFFSET($A$1,1,0,COUNTA($A:$A)-1) в J11, я получаю строки первого столбца, заполненные сверху вниз. Их также можно объединить, написав OFFSET(Days,1,0,COUNTA($A:$A)-1,COUNTA(Days)), где «Дни» равны =OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1) (в именованном диапазоне для удобочитаемости) или OFFSET($A$1:$A$1,0,0,1,COUNTA($A$1:$EV$1)-1) без использования именованного диапазона

Как мысль, хотя я ' я не уверен, как это реализовать, может быть, это можно каким-то образом использовать для получения ссылки на столбец для горизонтальной части в сочетании с =AVERAGE(OFFSET($A$1,1,0,COUNTA($A:$A)-1))

=MID(ADDRESS(ROW(),COLUMN()),2,SEARCH("$",ADDRESS(ROW(),COLUMN()),2)-2)

.. в https://superuser.com/questions/1259506/formula-to-return-just-the-column-letter-in-excel/1259507

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Теперь, основываясь на вашем объяснении, вот скриншот моего теста:

enter image description here

Раздел A1: Exxx

I преобразовали этот раздел в таблицу под названием «TblData» , имеющую многочисленные преимущества:

  1. Он расширяется автоматически без каких-либо дополнительных усилий / формула
  2. Мы можем определить Данные по столбцам, автоматически присваиваемым таблицей [@1], [@2],[@3], [@4], [@5]

Раздел J9: N9

В качестве реплики имени таблицы я использовал следующую формулу для ее получения:

=INDEX(TblData[#Headers],1,COLUMN(A1))    '<--- This is for J9
=INDEX(TblData[#Headers],1,COLUMN(E1))    '<--- This is for N9

Раздел J11: Nxx

В качестве копии содержимого таблицы я использовал следующую формулу для заполнения содержимого:

=INDEX(TblData,ROW($A1),MATCH(J$9,TblData[#Headers],0))   '<--- This is on J11
=INDEX(TblData,ROW($A3),MATCH(N$9,TblData[#Headers],0))   '<--- This is on N13

Раздел J10: N10

Теперь это интересная часть Среднее , поэтому вот формула, которую я использовал для этого:

=AVERAGE(TblData[1])  '<--- This is on J10
=AVERAGE(TblData[5])  '<--- This is on N10

NB: ( 1) Вместо использования содержимого ниже J10: N10, я предпочитаю повторно использовать таблицу, так как она расширяется автоматически по мере увеличения количества строк добавлено. (2) Если это действительно не нужно, я чувствую, что это также двойная работа, чтобы повторить снова A1: Exxx из J9: Nxxx, потому что вы можете использовать Таблицу для чего угодно, с меньшими затратами на обслуживание.

Пожалуйста, найдите прикрепленный файл также после того, как я обновил эти элементы:

Ссылка на файл: https://drive.google.com/open?id=1wRbpUxg0XLpfGqdvMF4fNKXDrL7xPPWs

Мы можем больше соответствовать ниже для получения дополнительной информации. Надеюсь, что вы расширите свою компетенцию :) 1055 *

0 голосов
/ 06 апреля 2020

Извините, приятель, я не могу понять, что вы хотите рассчитать. Если имеет смысл добавить J9 + J11, вы можете просто объединить две формулы в J9 и J11 со знаком плюс. После долгих размышлений я решил предположить, что ваш вопрос не в формуле, а в написании формулы - для краткости "ссылка" Поэтому я подготовил этот ответ для вас, надеясь, что он окажется полезным.

Опираясь на ваш именованный диапазон Дней Я предлагаю вам создать динамический c именованный диапазон Данные с этой формулой [Данные] =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),COUNTA(Sheet1!$1:$1))

Определенный таким образом диапазон является динамическим c в обоих направлениях. Однако, принимая во внимание, что OFFSET является изменчивым (замедляет ваш рабочий лист), вы можете ограничить его использование этой формулой и, возможно, начать диапазон с A2, но я соблазню вас нарушить правило. Теперь вы можете использовать функцию INDEX для обращения к диапазону Data.

= INDEX(Data, [Row number], [Column number]) определяет одну ячейку. Но установив столбец или строку в ноль, вы можете определить весь столбец или строку. =INDEX(Data,0,1) определяет столбец 1 диапазона Data , =INDEX(Data,1,0) определяет его первую строку. =INDEX(OFFSET(Data,1,0),0,1) определяет первый столбец диапазона, перемещенного на одну строку вниз от его исходного положения. Я рекомендую альтернативу и начинаю диапазон Данные с А2 и, возможно, объявляю другой диапазон для первой строки.

=AVERAGE(INDEX(Data,0,1)) нарисует то же среднее значение, которое вы уже имеете на своем листе, при условии, что данные были определены, начиная с A2. Ради интереса, =AVERAGE(INDEX(OFFSET(Data,1,0),0,1)) будет делать то же самое без изменения определения диапазона.

=COLUMN() возвращает номер столбца, в котором находится эта формула. Таким образом, вы можете ввести =COLUMN()-6 в столбце G , скопируйте вправо и получите счет, начиная с 1. (Вы можете сделать то же самое по вертикали с помощью функции ROW ().) Применительно к вашей формуле =AVERAGE(INDEX(Data,0,COLUMN()-6)) вернет среднее значение из столбца 1, если введено в столбец G, и из колонок 2, 3 4 и т. д. c, скопированных справа.

Как я уже сказал, я недостаточно понимаю вашу просьбу довести эту идею до конца, но я думаю, что использование метода Описанное выше предоставит вам инструмент для копирования формул в таблицу, расположенную справа от вашего образца. Если бы вы уточнили ваше требование, я мог бы помочь вам больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...