Excel: использование текста из ячейки в качестве имени рабочего листа в уравнении условного форматирования

Excel: использование текста из ячейки в качестве имени рабочего листа в уравнении условного форматирования

Название действительно полностью выражает то, что я пытаюсь сделать, но оно немного запутанное и непонятное, поэтому я объясню на примере использования:

Если у меня есть книга Excel с двумя листами (ЛистA и ЛистB), которые расположены очень близко друг к другу, и я хочу, чтобы различия визуально выделялись, типичный способ сделать это может быть примерно таким:

  • На листе А выделите все ячейки.
  • Введите условное форматирование, Новое правило, Использовать формулу
  • В поле формулы введите:

    =a1<>ЛистB!a1

  • примените желаемое форматирование и нажмите «ОК».

По сути, это сравнивает каждую ячейку SheetA с ее аналогом в SheetB, и если они не равны, применить форматирование. Если имена листов сложные (особенно если они содержат пробелы и, следовательно, нуждаются в кавычках), нажатие на имя вкладки во время ввода формулы делает полезные вещи.

Но теперь предположим, чтов некоторой ячейке ЛистаА,Я ввел текстовое выражение, содержащее имя SheetB, и хотел бы сослаться на эту ячейку в формуле условного форматирования выше.

(Почему? У меня может быть 100 электронных таблиц, и я хотел бы сравнить 1 с 2, затем 1 с 3, затем 1 с 55, изменяя текст в ячейке, а не вручную каждый раз изменять условное форматирование.)

Как мне это сделать?

Я знаю, что функция ДВССЫЛ используется для преобразования текста в имена листов, и пробовал несколько вариаций на эту тему, используя функцию ДВССЫЛ как часть формулы условного форматирования, но, похоже, ничего не работает.

решение1

Используйте формулу условного форматирования, например:

= A1 <> INDIRECT(ADDRESS(ROW(A1), COLUMN(A1),,, aSheet), TRUE)

Замените aSheetссылкой на ячейку, в которой вы сохранили имя листа для сравнения.

TheADDRESS()Функция собирает ссылку на ячейку в виде текстовой строки, используя функции ROW()и COLUMN()для определения строки и столбца оцениваемой ячейки.

Вы можете пропустить ADDRESS()функцию и просто создать ссылку на ячейку в формате R1C1 с помощью конкатенации строк, но формула выше, вероятно, более проста для чтения и понимания. Эквивалент будет таким:

= A1 <> INDIRECT(aSheet & "!R" & ROW(A1) & "C" & COLUMN(A1), FALSE)

Связанный контент