Скопируйте и вставьте массив ячеек с информацией, зависящей от ячейки блокировки (из ссылочной ячейки) с относительным значением - PullRequest
0 голосов
/ 29 февраля 2020

У меня возникла следующая проблема:

У меня есть список номеров и описаний предметов, начиная с A5 и вплоть до B5. У меня есть общее количество проданных товаров за год, C5 соответствует цена продажи за единицу и D5 до его COGS за единицу.

Далее, начиная с ячейки A12, у меня есть определенный c номер элемента и его описание. Затем я продал количество этого товара каждый месяц (ячейки B13: D13), а под ним я хочу, чтобы количество продаж в месяц умножалось на цену продажи за единицу этого товара (то есть в ячейках B14: D14).

Для этого из B14 я ищу номер и описание товара в A12, в списке предметов, которые я упоминал ранее ($ A $ 5: $ D $ 7), чтобы узнать цену этого товара и затем умножьте его на количество проданных месяцев.

Проблема с этим подходом заключается в том, что, когда я перетаскиваю этот результат в течение следующих месяцев, он прекращает поиск значения на A12 и вместо этого ищет значение элемента на B12 затем C12 et c et c.

Итак, чтобы исправить это, я зафиксировал значение на A12 по формуле '=B13*VLOOKUP(INDIRECT(ADDRESS(ROW(Artikel)+ROWS(Artikel)-4;COLUMN(Artikel)+COLUMNS(Artikel)-4);TRUE);ItemSales;3;FALSE). Благодаря этому я могу перетащить результаты первого месяца в следующие месяцы и получить правильный результат.

Однако я хотел бы скопировать таблицу с результатами за месяц ($ B $ 13: $ D $ 15) и вставьте его в несколько строк ниже, и что упомянутый элемент больше не является предыдущим на A12, а новым, скажем, на A26.

Я достигаю этого с помощью формулы k = VLOOKUP ( OFFSET (INDIRECT (ADDRESS (ROW (); COLUMN ())); - 2; -1; 1; 1); ItemSales; 3; FALSE) * B27, но эта формула не содержит номер элемента и значение описания при перетаскивании вместе, так что я не могу объединить их обоих

Есть идеи, как я могу это сделать ??

Excel_problem_description

1 Ответ

1 голос
/ 29 февраля 2020

Я разработал две формулы для вас. Первый для столбца А. Введите его в A12 и скопируйте 6 строк для каждой строки в вашем диапазоне Item_Sales.

=IF(MOD(ROW(),6)=0,INDEX(Item_Sales,INT((ROW()-12)/6)+1,1),IFERROR(INDEX({"Total quantity","Total Sales","Total COGS"},MOD(ROW(),6)),""))

Обратите внимание, что число 12, где бы оно ни встречалось в формуле, относится в строке 12, где начинается ваш названный диапазон "Artikel". Это первая строка, где должен появиться первый элемент в «Item_Sales». Число 6 относится к числу строк в одном наборе данных, по существу строк (12:17) для первого набора, строк (18:23) для второго et c. Ваша строка 16 скрыта, строка 17 пуста. Если вы хотите, чтобы формула что-то там записывала, разверните массив {"Total quantity","Total Sales","Total COGS"}

Другая формула для ячейки B13. Оттуда вы можете скопировать его в B14: B15. Вы также можете скопировать B13: B15 в B19, но в ее нынешней форме формула выдаст ошибку в B16: B18.

=INDEX(Item_Sales,INT((ROW()-12)/6)+1,MOD(ROW(),6)+1)*IF(ISNUMBER(B12),B12,1)

Опять же, значения чисел 12 и 6 такие же, как объяснено выше. Вам нужно будет изменить их, если ваши данные или формат отображения изменится в будущем.

Для вашего лучшего понимания я использовал функцию INDEX, которая берет 2D-диапазон и извлекает из него значения на основе координат. INDEX(Item_Sales, 1, 2) возвращает значение ячейки в первой строке, во втором столбце диапазона, определенного как «Item_Sales». Конечно, эти числа можно вычислить.

Другие используемые мной функции - INT () и MOD (). Int (5/6) возвращает 0, как и INT (1/6). Эта функция может использоваться, чтобы найти первую строку в наборе повторений каждые 6 строк. INT (13/6) возвращает 2, INT (19/6) = 3. Эти вычисления определяют номера строк в Item_Sales, на которые ссылается Artikel.

MOD возвращает модуль деления. MOD(5, 6) возвращает 5, MOD(13,6) возвращает 1. Если нет модуля, возвращаемое значение равно 0. С помощью этой информации вы можете многократно считать от 0 до 6 и перезапускать с 0.

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