Я только что узнал , функцию LINи , COLно проблема в том , что они возвращают числа, и мне нужно письмо колонки к INDIRECTнему.
Джадер Диас
2
в этом случае вы можете использовать OFFSETфункцию в сочетании или вместо INDIRECTформулы. Если вы хотите использовать строки, я также обновил свой ответ.
Прорыв
Кстати, INDIRECT - это изменчивая функция, поэтому используйте ее с осторожностью. Это звучит так, как будто бы OFFSET может быть лучшим выбором, если вы основываете нужную ссылку на каком-то расчете позиции.
AdamV
Ответы:
33
Вы можете использовать ROWи COLUMNфункцию , чтобы сделать это. Если вы опустите аргумент для этих формул, используется текущая ячейка. Они могут быть использованы непосредственно с в OFFSETфункции , или любой другой функции , где вы можете указать , как строки и столбца в виде числовых значений.
Например, если вы вводите =ROW()в ячейку D8, возвращаемое значение равно 8. Если вы вводите =COLUMN()в той же ячейке, возвращаемое значение равно 4.
Если вам нужна буква столбца, вы можете использовать CHARфункцию. Я не рекомендую использовать буквы для представления столбца, поскольку при переходе к двухбуквенным именам столбцов все становится сложнее (где использование цифр в любом случае более логично).
В любом случае, если вы все еще хотите получить букву столбца, вы можете просто добавить 64 к номеру столбца (64 - на один символ меньше A), поэтому в предыдущем примере, если вы установите значение ячейки равным =CHAR(COLUMN()+64), возвращаемое значение будет D, Если бы вы хотели, чтобы значением ячейки было само местоположение ячейки, была бы полная формула =CHAR(COLUMN()+64) & ROW().
Просто к вашему сведению, я получил 64 из таблицы ASCII. Вы также можете использовать CODEформулу, поэтому обновленная формула будет такой =CHAR(COLUMN() + CODE("A") - 1). Вы должны вычесть 1, поскольку минимальное значение COLUMNвсегда равно 1, а затем минимальное возвращаемое значение всей формулы будет B.
Однако это не будет работать с двухбуквенными столбцами. В этом случае вам потребуется следующая формула для правильного анализа двухбуквенных столбцов:
Я не уверен, есть ли более простой способ сделать это или нет, но я знаю, что это работает от клетки A1к ZZ99без проблем. Однако это показывает, почему лучше избегать использования буквенных идентификаторов столбцов и придерживаться формул, основанных исключительно на числах (например, используя номер столбца вместо буквы с OFFSET).
Это будет работать только для первых 26 столбцов. Но это подойдет.
Джадер Диас
1
@Jader Dias, поэтому я рекомендую использовать OFFSETвместо этого, что позволяет указывать столбцы в виде чисел. Несмотря на это, я обновил ответ формулой, чтобы расширить его для работы с двухбуквенными столбцами.
Прорыв
2
Я не знаю, почему этот ответ получил так много голосов, когда ответ Скотта НАСТОЛЬКО лучше, за исключением того, что он не объяснил его. Не требуется сложной формулы. Я добавил комментарий, чтобы объяснить, почему / как это работает.
Герхард Пауэлл
Это работает до тех пор, пока вы не перейдете в АА и т.д.
честь Крыма
@krystanhonour использует последнюю формулу из моего ответа в этом случае ...However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Прорыв
34
Попробуйте следующую функцию:
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
Объяснение: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4= относительный адрес. Это означает, что в возвращаемом значении нет $. Для столбца «AB» ADDRESSбудет возвращено «AB1». Заменитель удаляет «1».
Где colidотносится к именованному диапазону, который вы бы создали в другом месте в рабочей книге, содержащей два смежных столбца с несколькими строками: первый столбец, содержащий числа от 1 до n, соответствующий COLUMN()номеру, второй, содержащий буквы A - ZZ, или сколько бы столбцов ни ссылались на вас хочу разместить. Это ROW()нормально, чтобы вернуть номер строки.
Поэтому, если вы скопируете указанную выше строку в ячейку A1 «MySheet2», она получит значение =MySheet1!A1и вернет найденное значение в соответствующей ячейке MySheet1.
Это позволит вам, например, использовать MySheet1в качестве рабочей области удаление и повторную вставку новых данных, в то время как любое форматирование или вычисления MySheet2, относящиеся к этому содержимому, будут продолжать корректно работать с новыми наборами данных из целевой таблицы с вкладками.
Вот VBA, пользовательская формула, решение. Работает с 1, 2 и 3 буквенными столбцами.
Поместите следующее в модуль кода:
Function COLUMNLETTER(Optional rng As Range) As String
'Returns the Column Letter of the top left cell in rng.
If rng Is Nothing Then Set rng = Application.Caller
COLUMNLETTER = Left(rng.Address(0, 0), IIf(rng.Column > 26, IIf(rng.Column > 702, 3, 2), 1))
End Function
= COLUMNLETTER () в любой ячейке вернет букву столбца ячейки.
= COLUMNLETTER (В3) в любой клетке будет возвращать B .
Эта пользовательская функция прекрасно работает при создании общих формул внутри функции INDIRECT.
Формула адреса работает, возвращая имя столбца и строки. Возвращенный формат всегда будет $(Column Letters)$(Row Numbers)- например, $AA$2или$XAA$243556
Если мы знаем, что $ всегда будет появляться в первом символе, мы можем использовать первую среднюю формулу, чтобы начать вытягивать символы после первого знака $ (то есть 2-го символа).
Затем мы находим следующий знак $ (как мы знаем, их будет только два), и мы знаем, сколько символов находится между первым и вторым знаком доллара. Остальное простое вычитание.
LIN
и ,COL
но проблема в том , что они возвращают числа, и мне нужно письмо колонки кINDIRECT
нему.OFFSET
функцию в сочетании или вместоINDIRECT
формулы. Если вы хотите использовать строки, я также обновил свой ответ.Ответы:
Вы можете использовать
ROW
иCOLUMN
функцию , чтобы сделать это. Если вы опустите аргумент для этих формул, используется текущая ячейка. Они могут быть использованы непосредственно с вOFFSET
функции , или любой другой функции , где вы можете указать , как строки и столбца в виде числовых значений.Например, если вы вводите
=ROW()
в ячейку D8, возвращаемое значение равно 8. Если вы вводите=COLUMN()
в той же ячейке, возвращаемое значение равно 4.Если вам нужна буква столбца, вы можете использовать
CHAR
функцию. Я не рекомендую использовать буквы для представления столбца, поскольку при переходе к двухбуквенным именам столбцов все становится сложнее (где использование цифр в любом случае более логично).В любом случае, если вы все еще хотите получить букву столбца, вы можете просто добавить 64 к номеру столбца (64 - на один символ меньше
A
), поэтому в предыдущем примере, если вы установите значение ячейки равным=CHAR(COLUMN()+64)
, возвращаемое значение будетD
, Если бы вы хотели, чтобы значением ячейки было само местоположение ячейки, была бы полная формула=CHAR(COLUMN()+64) & ROW()
.Просто к вашему сведению, я получил 64 из таблицы ASCII. Вы также можете использовать
CODE
формулу, поэтому обновленная формула будет такой=CHAR(COLUMN() + CODE("A") - 1)
. Вы должны вычесть 1, поскольку минимальное значениеCOLUMN
всегда равно 1, а затем минимальное возвращаемое значение всей формулы будетB
.Однако это не будет работать с двухбуквенными столбцами. В этом случае вам потребуется следующая формула для правильного анализа двухбуквенных столбцов:
Я не уверен, есть ли более простой способ сделать это или нет, но я знаю, что это работает от клетки
A1
кZZ99
без проблем. Однако это показывает, почему лучше избегать использования буквенных идентификаторов столбцов и придерживаться формул, основанных исключительно на числах (например, используя номер столбца вместо буквы сOFFSET
).источник
OFFSET
вместо этого, что позволяет указывать столбцы в виде чисел. Несмотря на это, я обновил ответ формулой, чтобы расширить его для работы с двухбуквенными столбцами.However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Попробуйте следующую функцию:
Объяснение:
ADDRESS(row_num, column_num, [abs_num])
.[abs_num] = 4
= относительный адрес. Это означает, что в возвращаемом значении нет $. Для столбца «AB»ADDRESS
будет возвращено «AB1». Заменитель удаляет «1».источник
Попробуй это
Это дает вам точный заголовок столбца, без каких-либо $ и т. Д.
источник
Введите это в любую ячейку:
Español :
Английский :
Вы можете заменить column () номером строки.
источник
Чтобы получить имя столбца, я использовал следующие формулы.
Для конкретной ячейки:
Для текущей ячейки:
Попробуйте этот вариант. Он работает на трехбуквенных столбцах и не оставляет «$» на переднем конце:
источник
Немного ручная, но меньше VBA и более простая формула:
=column()
=Address(1,A1)
$A$1
После того, как значения скопированы, найдите и замените
$
и1
пустым.источник
Это будет работать так же
источник
Другой возможный способ - использовать что-то вроде этого:
Где
colid
относится к именованному диапазону, который вы бы создали в другом месте в рабочей книге, содержащей два смежных столбца с несколькими строками: первый столбец, содержащий числа от 1 до n, соответствующийCOLUMN()
номеру, второй, содержащий буквы A - ZZ, или сколько бы столбцов ни ссылались на вас хочу разместить. ЭтоROW()
нормально, чтобы вернуть номер строки.Поэтому, если вы скопируете указанную выше строку в ячейку A1 «MySheet2», она получит значение
=MySheet1!A1
и вернет найденное значение в соответствующей ячейкеMySheet1
.Это позволит вам, например, использовать
MySheet1
в качестве рабочей области удаление и повторную вставку новых данных, в то время как любое форматирование или вычисленияMySheet2
, относящиеся к этому содержимому, будут продолжать корректно работать с новыми наборами данных из целевой таблицы с вкладками.источник
Решение для польской версии Excel:
источник
Вот VBA, пользовательская формула, решение. Работает с 1, 2 и 3 буквенными столбцами.
Поместите следующее в модуль кода:
= COLUMNLETTER () в любой ячейке вернет букву столбца ячейки.
= COLUMNLETTER (В3) в любой клетке будет возвращать B .
Эта пользовательская функция прекрасно работает при создании общих формул внутри функции INDIRECT.
источник
Формула адреса работает, возвращая имя столбца и строки. Возвращенный формат всегда будет
$(Column Letters)$(Row Numbers)
- например,$AA$2
или$XAA$243556
Если мы знаем, что $ всегда будет появляться в первом символе, мы можем использовать первую среднюю формулу, чтобы начать вытягивать символы после первого знака $ (то есть 2-го символа).
Затем мы находим следующий знак $ (как мы знаем, их будет только два), и мы знаем, сколько символов находится между первым и вторым знаком доллара. Остальное простое вычитание.
источник
Вот как вы можете найти заголовок столбца (то есть букву):
источник
попробуй это:
источник
Следующая формула работает независимо от того, где вы ее поместили (она вернет вам имя столбца).
источник
попробуй это:
эта функция действует до "ZY1" или столбца = 701
источник
источник