Самосознание для ячейки, столбца и строки в функциях листа

В функции рабочего листа в Excel, как вы ссылаетесь на ячейку, столбец или строку, в которой вы находитесь?

Обратите внимание, что это чрезвычайно полезно для условного форматирования.

    где F13 – ячейка, которую вы должны ссылаться:

    =CELL("Row",F13) yields 13; its row number =CELL("Col",F13) yields 6; its column number; =SUBSTITUTE(ADDRESS(1,COLUMN(F13)*1,4),"1","") yields F; its column letter 

    Для самой ячейки для саморекламы:

     INDIRECT(ADDRESS(ROW(), COLUMN())) 

    Чтобы ячейка могла самостоятельно ссылаться на свою колонку:

     INDIRECT(ADDRESS(1,COLUMN()) & ":" & ADDRESS(65536, COLUMN())) 

    Чтобы ячейка могла самостоятельно ссылаться на свою строку:

     INDIRECT(ADDRESS(ROW(),1) & ":" & ADDRESS(ROW(),256)) or INDIRECT("A" & ROW() & ":IV" & ROW()) 

    Числа указаны за 2003 год и ранее, используйте столбец: XFD и строку: 1048576 для 2007+.

    Примечание. Функция INDIRECT нестабильна и ее следует использовать только при необходимости.

    Я не вижу необходимости в косвенном, особенно для условного форматирования.

    Самый простой способ самонаведения ячейки, строки или столбца – относиться к ней обычно, например, «= A1» в ячейке A1, и сделать ссылку частично или полностью относительной. Например, в условной формуле форматирования для проверки того, есть ли значение в первом столбце строк различных ячеек, введите следующее с выделенным A1 и скопируйте при необходимости. Условное форматирование всегда будет ссылаться на столбец А для строки каждой ячейки:

     = $A1 <> "" 

    Для нелетучего решения, как насчет в 2007 году:

     for cell =INDEX($A$1:$XFC$1048576,ROW(),COLUMN()) for column =INDEX($A$1:$XFC$1048576,0,COLUMN()) for row =INDEX($A$1:$XFC$1048576,ROW(),0) 

    У меня есть странная ошибка в Excel 2010, где она не будет принимать самую последнюю строку или столбец для этой формулы (строка 1048576 и столбец XFD), поэтому вам может понадобиться ссылаться на эти короткие. Не уверен, что это то же самое для любых других версий, поэтому оцените отзывы и изменения.

    и за 2003 год (индекс INDEX стал нестабильным в 97 году):

     for cell =INDEX($A$1:$IV$65536,ROW(),COLUMN()) for column =INDEX($A$1:$IV$65536,0,COLUMN()) for row =INDEX($A$1:$IV$65536,ROW(),0) 

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

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

    Например:

    Столбец A является истинным или ложным, столбец B содержит денежное значение, столбец C содержит следующую формулу:

     =B1 

    Теперь, чтобы вычислить, что столбец B будет выделен желтым в условном формате, только если столбец A равен True, а столбец B больше нуля …

     =AND(A1=True,C1>0) 

    Затем вы можете скрыть столбец C

    В функции UDF для листа VBA вы используете Application.Caller для получения диапазона ячеек (ячеек), которые содержат формулу, называемую UDF.

    Текущая колонка вычисляется по:

    Способ 1:

    = ЛЕВЫЙ (АДРЕС (СТРОКА (), Column (), 4,1), LEN (АДРЕС (СТРОКА (), Column (), 4,1)) – LEN (СТРОКА ()))

    Способ 2:

    = ЛЕВЫЙ (АДРЕС (СТРОКА (), Column (), 4,1), INT ((колонка () – 1) / 26) + 1)

    Моя текущая строка вычисляется по:

    = ПРАВЫЙ (АДРЕС (СТРОКА (), Column (), 4,1), LEN (СТРОКА ()))

    поэтому косвенная ссылка на Sheet2! My Column, но другая строка, указанная в столбце A моей строки:

    Способ 1:

    = INDIRECT ( "Лист2!" & LEFT (АДРЕС (СТРОКА (), COLUMN (), 4,1), LEN (АДРЕС (СТРОКА (), COLUMN (), 4,1)) – LEN (СТРОКА ())) & INDIRECT (АДРЕС (СТРОКА (), 1,4,1)))

    Способ 2:

    = ДВССЫЛ ( "Лист2!" & ЛЕВЫЙ (АДРЕС (СТРОКА (), Column (), 4,1), INT ((колонка () – 1) / 26) +1) & ДВССЫЛ (АДРЕС (СТРОКА (), 1,4 , 1)))

    Поэтому, если A6 = 3, а моя строка – 6, а мой Col – C, возвращается содержимое «Sheet2! C3»,

    Поэтому, если A7 = 1, а моя строка – 7, а мой Col – D, возвращает содержимое «Sheet2! D1»

    Я искал решение этого и использовал косвенный, найденный на этой странице, но я нашел его довольно длинным и неуклюжим для того, что я пытался сделать. После небольшого исследования я нашел более элегантное решение (по моей проблеме) с использованием нотации R1C1 – я думаю, вы не можете смешивать разные стили нотации, не используя VBA.

    В зависимости от того, что вы пытаетесь сделать с самоналоженной ячейкой, что-то вроде этого примера должно получить ячейку для ссылки на нее, где ячейка F13:

     Range("F13").FormulaR1C1 = "RC" 

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

     Range("F13").FormulaR1C1 = "R[-1]C[1]" 

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

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

     Sub Code() Dim Range1 As Range Set Range1 = Range("B18:B23") Range1.Locked = False Range1.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],DATABYCODE,2,FALSE),"""")" Range1.Locked = True End Sub 

    Мое значение поиска – это ячейка слева от каждой ячейки (столбец -1) в моем диапазоне DIM'd, а DATABYCODE – это именованный диапазон, на который я смотрю.

    Надеюсь, что это мало смысла? Подумал, что стоило выбраться в микс как еще один способ подойти к проблеме.

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

     =ROW(A2)-1 

    Допускается линейка ячейки A1 (эта формула будет поступать в ячейку A1.

    Это позволяет избежать использования косвенных () и index (), но все же работает.

    Interesting Posts

    Экран Excel, сопровождающий данные из выпадающего столбца

    Обращение к ячейке другого листа в зависимости от значения другого

    Создать новый столбец без дубликатов VBA?

    Как обрабатывать несколько запросов IFTHEN по столбцам в Excel?

    Я не могу понять, почему моя копия и вставка не работают VBA?

    в excel пустые ячейки непустых строк пренебрегают с помощью java, POI jars

    Печать в ячейки Excel по столбцу в VBA

    Excel VBA для поиска тега dd & dt

    Фильтрация на основе предыдущего фильтра

    Excel VBA Script для копирования и вставки данных из предопределенного списка URL-адресов

    Номер, сохраненный как текстовое предупреждение в excel с использованием POI

    Ошибка компиляции: метод или элемент данных не найден

    Написал сценарий VBA, который имеет смысл, но все еще не работает

    Excel Solver для оптимизации ежедневных линейки фэнтези

    Почему не блокирует ячейку в защищенном листе Excel в Excel, чтобы предотвратить выбор?

    Давайте будем гением компьютера.