У меня есть книга Excel с несколькими листами. В столбце 'SheetA'!W:W
перечислен текст, который можно найти в заголовке столбца в строке 'Sheet3'!1:1
. Например, SheetA'!W42
содержит "B16". Ячейка Sheet3'!CB1
имеет текст заголовка "B16: Sample 40", поэтому это будет целевой столбец.
Пример: Образец'SheetA'!W42
В 'SheetA'!CD42
есть формула, которая вычисляет номер образца, который необходимо найти в 'Sheet3'!A:A
. В примере ниже CD42
отображается вычисленное значение «30», которое можно найти в 'Sheet3'!A32
.
Пример: образец данных из Sheet3, отображающий заголовки и пересечение заголовка столбца (B16) и строки, содержащей интересующий номер образца:
Цель состоит в том, чтобы извлечь содержимое ячейки на Листе 3, где пересекаются искомые столбец и строка, и отобразить его в ячейке на Листе А. В представленном примере на 'Sheet3'!CB:CB
пересекающейся строке 32 и на Листе А будет отображено значение «0,1950581843».
Кто-нибудь знает, как этого можно добиться?
решение1
Учитывая ваши данные выше, я собираюсь сделать несколько предположений. Если все это правда, то HLOOKUP
может легко решить вашу проблему. В противном случае может потребоваться более сложная цепочка функций.
Предположения:
- Все соответствующие тексты заголовков
'Sheet3'!1:1
находятсяабсолютно уникальныйв этом ряду. - Все соответствующие тексты заголовков
'Sheet3'!1:1
имеют формат «[X]: [Y]», где:- [X] — это значение, которое можно найти в
'SheetA'!W:W
. - [Y] — значение,
'SheetA'!X:X
которое находится в той же строке, что и [X].
- [X] — это значение, которое можно найти в
- Все возможные значения
'SheetA'!CD:CD
доступны для поиска в'Sheet3'!A:A
, поэтому они будут находиться в той же строке, что и данные, которые предполагается извлечь.- Я просто добавляю это, потому что заметил, что в Sheet3 есть некоторое повторение этих значений, и хотел убедиться, что нет условий, при которых вы могли бы искать значение,
'SheetA'!CD:CD
которое должно было сопоставляться с другим столбцом (и, следовательно, может выдавать неточные результаты при сопоставлении в'Sheet3'!A:A
). - Если повторение необходимо исключительно для удобства чтения, могу ли я предложить вместо этого использовать функцию «Закрепить области»?
- Я просто добавляю это, потому что заметил, что в Sheet3 есть некоторое повторение этих значений, и хотел убедиться, что нет условий, при которых вы могли бы искать значение,
- Все соответствующие значения в
'Sheet3!A:A'
идеально последовательны, начинаются с «1» в'Sheet3'!A3
, никогда не повторяются в этом столбце, ивсегдасортировка по возрастанию.
Учитывая вышеизложенные предположения, я построил собственные таблицы с образцами данных, которые примерно отражают ваш сценарий.
Вот частичный скриншот моего «Листа 3».
И частичный снимок моего «ЛистаА».
Список аналогов:
- Лист3
- Мой A:A = Ваш A:A, BY:BY:, CA:CA:, ...
- Мои B:B, C:C, D:D, ... = Ваши B:B, BZ:BZ, CB:CB, ...
- ЛистА
- Мой А:А = Ваш W:W
- Мой Б:Б = Твой Х:Х
- Мой C:C = Ваш CD:CD
- Мой D:D = Любой столбец, в который вы хотите поместить найденные данные.
Как вы можете видеть на втором снимке экрана, формула для D2 следующая:
=HLOOKUP(CONCATENATE(A2,": ",B2),Sheet3!A:Y,C2+2,FALSE)
Пошаговое описание формулы:
ГПРпозволяет вам просматривать диапазон ячеек по горизонтали для значения, а затем возвращать значение ячейки в том же столбце на основе относительной позиции строки. Он принимает четыре аргумента, три из которых являются обязательными:искомое_значение,таблица_массив,row_index_num,[диапазон_просмотра]. Это формула, которая выполнит всю работу по поиску нужных вам данных на Листе3 и помещению их в ячейку на ЛистеA.
- искомое_значениеэто значение, которое вы хотите
HLOOKUP
найти первым. Это значениедолженприсутствовать в первом рядутаблица_массив, потому что это единственная строка, которая будет искаться.HLOOKUP
также вернет только первое совпадение, поэтому эти значения также должны быть уникальными. Здесь мы используемCONCATENATE
для построения нашей строки поиска.
- ОБЪЕДИНЯТЬпозволяет объединять различные строки и значения в одну строку. Он принимает ряд аргументов, упорядоченных в соответствии с последовательностью, в которой они должны быть размещены в результирующей строке.
- А2— наш первый аргумент для
CONCATENATE
. Первая часть нашей строки будет «Имя образца» в A2. - ": "— наш второй аргумент для
CONCATENATE
. Это помещает двоеточие и пробел в строку, чтобы соответствовать формату значений в'Sheet3'!1:1
. - Би 2наш последний аргумент для
CONCATENATE
. Он извлекает "Sample ID" из B2, чтобы завершить синтаксис, используемый для заголовков в'Sheet3'!1:1
.
- А2— наш первый аргумент для
- ОБЪЕДИНЯТЬпозволяет объединять различные строки и значения в одну строку. Он принимает ряд аргументов, упорядоченных в соответствии с последовательностью, в которой они должны быть размещены в результирующей строке.
- таблица_массивэто ссылка на диапазон ячеек,
HLOOKUP
с которыми вы хотите работать. Помните, что первая строка должна содержатьискомое_значение. Этот диапазон также должен охватывать все возможные значения дляrow_index_num.- Лист3!А:Y— это ссылка на все ячейки в столбцах A–Y (единственные заполненные в моем Sheet3) из Sheet3. Это гарантирует, что любые данные, добавленные в новые строки позже, также будут в области поиска. Если данные будут добавлены в новые столбцы вместо строк, я бы хотел использовать ссылку
Sheet3!1:32
(в настоящее время 32 — последняя заполненная строка в моем Sheet3). Если данные могут быть добавлены новыми столбцамииДля новых строк я бы сослался на весь лист с помощьюSheet3!1:1048576
илиSheet3!A:XFD
. (Примечание: ссылка «весь лист» действительна для Excel 2013. Более ранние версии могут иметь меньшие ограничения по строкам/столбцам — настройте1048576
илиXFD
по мере необходимости.)
- Лист3!А:Y— это ссылка на все ячейки в столбцах A–Y (единственные заполненные в моем Sheet3) из Sheet3. Это гарантирует, что любые данные, добавленные в новые строки позже, также будут в области поиска. Если данные будут добавлены в новые столбцы вместо строк, я бы хотел использовать ссылку
- row_index_num— положительное целое число, представляющее позицию строки относительно самой верхней строки втаблица_массив. Это говорит,
HLOOKUP
какую ячейку вы хотите вернуть из соответствующего столбца. Обратите внимание, что, посколькуHLOOKUP
ищет толькоискомое_значениев верхнем рядутаблица_массив, иrow_index_numне может быть отрицательным, вы не можете использовать егоHLOOKUP
(по крайней мере, само по себе) для возврата информации из ячеек, которые находятся вышеискомое_значение.- С2+2- Поскольку все значения в
'Sheet3'!A:A
идеально последовательны, без пропущенных целых чисел, и всегда будут упорядочены по возрастанию, мы можем использовать эти значения (также представленные в'SheetA'!C:C
) как индикаторы номеров строк для данных, которые мы хотим найти. Здесь+2
для учета того факта, что нумерация начинается с "1" в строке 3 Листа3.
- С2+2- Поскольку все значения в
- [диапазон_просмотра]— необязательный аргумент для
HLOOKUP
. Параметры — ИСТИНА или ЛОЖЬ, указывающие, хотите ли вы разрешить приблизительные совпадения или следует разрешить только точные совпадения. Excel по умолчанию принимает значение ИСТИНА (приблизительное совпадение), если этот аргумент опущен, что часто может привести к нежелательному поведению — особенно если ваш лист не отсортирован определенным образом. Поэтому мы указываемЛОЖЬздесь, чтобы убедиться, чтоHLOOKUP
будет найдено только точное совпадение.
Адаптировав вышесказанное к макету вашего листа, я полагаю, что это формула, которая вам понадобится для ячейки 'SheetA'!CE42
(предполагая, что именно туда вы хотите поместить данные):
=HLOOKUP(CONCATENATE(W42,": ",X42),Sheet3!A:CB,CD42+2,FALSE)
Обратите внимание, что если ваши данные на Листе 3 располагаются правее столбца CB и/или данные могут быть добавлены в дополнительные столбцы, вам необходимо будет выполнить настройку.таблица_массивсоответственно.