Формула Excel для ссылки "ячейка слева"
Я пытаюсь сделать условное форматирование, чтобы цвет ячейки менялся, если значение отличается от значения в ячейке слева от него (каждый столбец-месяц, в каждой строке-расходы на определенный объект. Я хочу легко отслеживать изменения цен в течение нескольких месяцев.)
Я могу сделать это за ячейку и формат-перетащите его, но я хотел бы, чтобы общая формула применялась ко всему листу.
спасибо!
11 ответов:
самая короткая наиболее совместимая версия:
=INDIRECT("RC[-1]",0)
"RC[-1]" означает один столбец слева. "R[1]C[-1]" находится внизу слева.
второй параметр 0 означает, что первый параметр интерпретируется с использованием нотации R1C1.
другие варианты:
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
слишком долго на мой взгляд. Но полезно, если относительное значение является динамическим/производным от другой ячейки. например:
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0, A1)
самый простой вариант:
= RC[-1]
имеет тот недостаток, что вам нужно включить нотацию R1C1 с помощью опций, которая не работает, когда другие люди должны использовать excel.
при создании условного форматирования, установите диапазон, к которому он применяется к тому, что вы хотите (весь лист), а затем введите относительные формула (удалить
$
знаки), как если бы вы только форматировали верхний левый угол.Excel правильно применит форматирование к остальным ячейкам соответственно.
в этом примере, начиная с B1,левый ячейки А1. Просто используйте это--нет расширенной формулы требуемый.
если вы ищете что-то более продвинутое, вы можете поиграть с
column()
,row()
иindirect(...)
.
Если вы измените ссылку на ячейку, чтобы использовать нотацию R1C1 (Инструменты|Параметры, вкладка Общие), то вы можете использовать простую нотацию и вставить ее в любую ячейку.
теперь ваша формула просто:
=RC[-1]
заполните ячейку A1, по следующей формуле :
=IF(COLUMN(A1)=1;"";OFFSET(A20;0;-1))&"1"
затем autoextend направо, Вы получаете
1| A | B | C | ect ect 2| 1| 11| 111| ect ect
если смещение находится вне диапазона доступной ячейки, вы получаете #REF! ошибка.
Надеюсь, вам понравится.
вместо того чтобы писать очень долго:
=OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1)
вы можете просто написать:
=OFFSET(*Name of your Cell*,0,-1)
таким образом, например, вы можете написать в ячейку B2:
=OFFSET(B2,0,-1)
для ссылки на ячейку B1
еще спасибо Джейсон Янг!! Я бы никогда не придумал это решение без вашего ответа!
при создании Пользовательская Функция, я узнал, что другие ответы, связанные с функциями
OFFSET
иINDIRECT
не может быть применен.вместо этого, вы должны использовать
Application.Caller
для ссылки на ячейку, в которой была использована пользовательская функция (UDF). На втором шаге вы преобразуете индекс столбца в имя соответствующего столбца.
Наконец, вы можете ссылаться на левую ячейку с помощью активного листа
вы можете использовать сценарий VBA, который изменяет Условное форматирование выделения (возможно, вам придется соответствующим образом настроить условие и форматирование):
For Each i In Selection i.FormatConditions.Delete i.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=" & i.Offset(0, -1).Address With i.FormatConditions(1).Font .Bold = True End With Next i
еще проще:
=indirect(address(row(), column() - 1))
OFFSET возвращает ссылку относительно текущей ссылки, поэтому, если косвенная возвращает правильную ссылку, она вам не нужна.
я наткнулся на эту тему, потому что я хотел всегда ссылаться на "ячейку слева", но принципиально энергонезависимым способом (без смещения, косвенных и подобных катастроф). Глядя в сеть вверх и вниз, нет ответов. (Этот поток на самом деле не дает ответа.) После некоторой возни я наткнулся на самый удивительный метод, которым мне нравится делиться с этим сообществом:
предположим, что начальное значение 100 в E6. Предположим, я ввожу дельту к этому значению в F5, скажем 5. Затем мы рассчитаем значение продолжения (105) в F6 = E6+F5. Если вы хотите добавить еще один шаг, легко: просто скопируйте столбец F в столбец G и введите новую дельту в G5.
Это то, что мы делаем, периодически. Каждый столбец имеет дату, и эти даты должны быть в хронологическом порядке (чтобы помочь с совпадением и т. д.). Время от времени случается так, что мы забываем сделать шаг. Теперь предположим, что вы хотите вставить столбец между F и G (чтобы наверстать упущенное) и скопировать F в новый G (для повторного заполнения формулы продолжения). Это не что иное, как полная катастрофа. Попробуйте - H6 теперь скажет =F6+H5, а не (как нам абсолютно нужно) =G6+H5. (Новый G6 будет правильным.)
Это не должно работать, верно? Круговая ссылка, Понятно! Попробовать его и быть поражены. Excel, похоже, понимает, что, хотя диапазон индекса охватывает ячейку, которую мы пересчитываем, сама эта ячейка не адресуется индексом и, следовательно, не создает циклическую ссылку.
Так что теперь я дома и сухой. Вставьте столбец между F и G, и мы получим именно то, что нам нужно: значение продолжения в старом H будет ссылаться на значение продолжения, которое мы вставили в новый G.