В Excel: Как скопировать значение из определённой ячейки на основе имени вкладки.

Вопрос или проблема

Я был бы признателен за вашу помощь в решении этого, даже если не уверен, что это возможно в Excel

У меня есть файл Excel с вкладкой под названием “Index”, в которой в колонке A перечислены имена всех дополнительных вкладок файла, а в колонке B перечислены все заголовки, которые я хотел бы иметь в ячейке C10 каждой из других вкладок.

Другими словами:

В табе под названием Index, в колонке A у меня есть:

A1: T_DEMO
A2: F_DEMO
A3: T_BASE
и т.д…

В табе под названием Index, в колонке B у меня есть:

B1: Table 1: Demographics
B2: Table 2: Baseline
B3: Figure 1: Demographics
и т.д…

Excel-файл имеет другие вкладки с названиями: T_DEMO, F_DEMO, T_BASE и т.д. (те же самые имена, что и в колонке A вкладки Index)

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

Так, например, на вкладке T_DEMO в ячейке C10 мне нужна функция, которая может скопировать значение из колонки B (Table 1: Demographics), учитывая строку, для которой колонка A вкладки Index совпадает с именем вкладки.
Обратите внимание, что порядок вкладок не совпадает с порядком, в котором они перечислены.

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

  • =CELL("filename",A1) вернет имя сохраненного файла и имя листа.
    например, C:\Users\dbartrup-cook\**********\[Book5.xlsx]T_DEMO
  • =INDEX(TEXTSPLIT(CELL("filename",A1),"]"),,2) разделяет текст по символу ] и возвращает второй элемент.
    например, T_DEMO
    Edit:
    Только что понял, что можно заменить INDEX на CHOOSECOLS:
    =CHOOSECOLS(TEXTSPLIT(CELL("filename",A1),"]"),2)

С этой информацией вы можете просто использовать XLOOKUP для возврата данных, которые вас интересуют.
=XLOOKUP("T_DEMO",Index!A2:A4,Index!B2:B4)

=XLOOKUP(INDEX(TEXTSPLIT(CELL("filename",A1),"]"),,2),Index!$A$2:$A$4,Index!$B$2:$B$4)

enter image description here

Edit:
Если у вас нет формул Excel 365 (XLOOKUP и TEXTSPLIT), то эта формула будет работать:

=VLOOKUP(MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,LEN(CELL("filename",A1))),Index!$A$2:$B$4,2,FALSE)

Ответ или решение

Чтобы решить задачу, поднимаемую в вашем вопросе, когда необходимо извлечь значение из определённой ячейки одной вкладки Excel на основе имени другой вкладки, следует воспользоваться функциональностью формул в Excel для автоматизации процесса. Рассмотрим подход последовательным шагом:

ТЕОРИЯ

Концепция извлечения данных в Excel из одной вкладки на другую основана на функциях, которые позволяют ссылаться на динамически определяемые значения. В нашем случае целевая ячейка на каждой вкладке должна извлекать информацию из другого листа в зависимости от имени самого листа. Здесь нам помогут три основных функции Excel:

  1. CELL – эта функция возвращает информацию о форматировании, местоположении или содержании первой ячейки в указанной ссылке. Когда используется вместе с параметром «filename», она может вернуть полный путь, имя файла и имя листа.

  2. TEXTSPLIT или аналоги – данные функции позволяют разбивать текстовые строки на части с помощью разделителей. С помощью TEXTSPLIT можно выделить имя листа из строки, возвращённой функцией CELL.

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

ПРИМЕР

Рассмотрим ваш пример. У вас есть вкладка «Index», где в столбце A перечисляются имена всех других вкладок, а в столбце B находятся заголовки, необходимые для вставки в ячейку C10 на этих вкладках.

Предположим, у вас есть вкладка с именем «T_DEMO». Если необходимо в ячейке C10 этой вкладки автоматически отобразить значение из столбца B листа «Index» (соответствующее заголовку «Table 1: Demographics»), можно использовать следующую комбинацию функций:

  1. Получение имени текущего листа:

    =CHOOSECOLS(TEXTSPLIT(CELL("filename", A1), "]"), 2)

    Эта строка кода отделяет имя листа из строки, возвращаемой функцией CELL. Функция TEXTSPLIT разбивает строку по символу ], а CHOOSECOLS выбирает второй элемент массива, то есть имя текущего листа.

  2. Поиск и извлечение значения:

    =XLOOKUP(CHOOSECOLS(TEXTSPLIT(CELL("filename", A1), "]"), 2), Index!$A$1:$A$100, Index!$B$1:$B$100)

    Здесь XLOOKUP используется для поиска имени текущего листа (полученного в предыдущем шаге) в столбце A листа «Index» и возврата соответствующего значения из столбца B.

ПРИЛОЖЕНИЕ

Теперь, разложим по шагам конкретное применение этой техники на вашем рабочем листе:

  1. Настройка листа "Index": Убедитесь, что ваши данные на листе Index организованы правильно и все имена вкладок точно соответствуют названиям листов.

  2. Вставка формулы на других листах: Откройте каждую вкладку (например, «T_DEMO», «F_DEMO», «T_BASE») и вставьте указанную выше формулу в ячейку C10.

  3. Автоматизация и проверка: После вставки формул, значения в ячейках должны автоматически обновляться в зависимости от соответствующего имени листа. Измените что-нибудь в данных "Index" и убедитесь, что изменения отражаются на всех листах мгновенно.

  4. Учёт версий Excel: Если вы используете более старую версию Excel без поддержки XLOOKUP или TEXTSPLIT, используйте альтернативу с VLOOKUP:

    =VLOOKUP(MID(CELL("filename", A1), FIND("]", CELL("filename", A1)) + 1, LEN(CELL("filename", A1))), Index!$A$1:$B$100, 2, FALSE)

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

ВЫВОД

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

Оцените материал
Добавить комментарий

Капча загружается...