Дианы c ассортимент и критерии для ВЛУКУП - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь создать VLOOKUP, который может использовать номер COLUMN как для критерия, так и для начальной позиции диапазона, в то же время получая индекс из числа COLUMNS.

У меня есть электронная таблица, в которую я импортирую набор данных для анализа. Я добавляю пару строк вверху и использую одну из этих строк, чтобы пометить указанные c столбцы как содержащие значения, которые являются фиксированными - например, значения поступают из предопределенного выбора, например, порядок_статусов будет иметь фиксированные значения созданных, отправленных, выполнено, оплачено и т. д. c.

Поскольку я отмечаю каждый как фиксированный, строка выше постепенно увеличивает числовое значение для каждого из столбцов. Если у меня есть 16 фиксированных значений, будут столбцы с шагом от 1 до 16.

В аналитическом листе у меня есть 16 столбцов, которые я использую для выполнения некоторого анализа. Первое, что он делает для каждой строки в наборе данных, - назначает уникальный идентификатор для каждого уникального значения в столбце набора данных или, если значение ранее существовало в строках перед ним, ищет номер, который был присвоен ему в прошлый раз. Позже я смогу затем найти отдельные значения на основе этих уникальных чисел и связать их количество, чтобы показать, как часто каждое из этих значений существует в наборе данных.

Я создал этот лист анализа таким образом, чтобы он уже знает позиции столбцов. Пример, показанный ниже:

=IF(B5="",0,IF(COUNTIF(B$3:B4,B5)>0,VLOOKUP(B5,B:AB,27,FALSE),MAX(AB$3:AB4)+1))

Мой вопрос заключается в том, как сделать критерии и начальную позицию формулы динамическими c, чтобы я мог изменить столбцы, которые я классифицирую как фиксированные, без необходимости настройки формул анализа.

Так, для примера выше, столбец B является столбцом с фиксированным значением. У меня уже есть следующая формула:

formula=MATCH(AB2,$A2:$Z2,0)

, которая говорит мне, что столбец 2 (также известный как B) является первым фиксированным значением.

Если я воспроизвел формулу для динамической работы, используя то, что Я знаю, это будет:

=IF(COUNTIF($column(formula)+row (=3): column(formula)+ current_row(5)-1
           , column(formula)+ current_row(5)>0
               , VLOOKUP (column(formula)+current_row(5), column(formula):AB
               , COLUMNS(column(formula):AB)
               , false)
           , MAX(AB$3:AB4)+1))

Однако способ, которым я сделал эту формулу, не работает - я не знаю, как явно установить номера строк в формуле. Я надеюсь, что предоставил достаточно информации, чтобы объяснить, что я пытаюсь сделать, заранее спасибо.

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

1 Ответ

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

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

=COUNTIF(INDIRECT(*formula to generate range string*),INDIRECT(*formula to generate cell string*))

Однако INDIRECT - это энергозависимая функция, которая будет пересчитывать каждый раз, когда вы вносите какие-либо изменения в Учебное пособие. Если у вас есть целый столбец из них, ваша книга может сильно замедлиться, особенно если объединить их с точным поиском.

Один из альтернативных вариантов - использование функции CHOOSE, которую можно использовать, если вы выбираете из известных фиксированные возможные диапазоны:

CHOOSE(*rangenumber*,*range1*,*range2*,*range3*,...)

Выбор довольно хорош тем, что он не является изменчивой функцией.

Если число или размер диапазонов не фиксированы, вместо этого вы можете использовать функцию OFFSET:

OFFSET(*starting point*,*row offset*,*column offset*,*number of rows*, *number of columns*)

Это позволит вам начать с точки привязки, а затем рассчитать расстояние до желаемого диапазона, а также размер требуемый диапазон.

OFFSET также является изменчивым, однако вы можете сохранить его как определенное имя, а затем повторно использовать это определенное имя в столбце формул, требуя, чтобы его вычисляли только один раз, прежде чем использовать во всех формулах, скорее чем нужно рассчитывать в каждой формуле.

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