Как узнать координаты ячейки excel

Обновлено: 06.07.2024

Как с помощью VBA получить значение с ячейки таблицы MS Word в переменую?
Как с помощью VBA получить значение с ячейки таблицы MS Word в переменую. Range(x,y).

Можно ли получить доступ к содержимому определенной ячейки стека по адресу?
Здравствуйте, скажите пожалуйста, могу вывести по определенному адресу из стека, при этом не теряя.

Получить значение последней записи ячейки определённого столбца VBA Excel
Приветствую форумчани подскажите кто может как получить последнюю записть определёного столбца q.

Можно ли с помощью формы в одной книге Excel вносить данные в ячейки двух книг?
Можно ли с помощью формы в одной книге Excel вносить данные в ячейки двух книг?

Это понятно, просто я пользуюсь проц AddPicture (name_of_File,x,y,widht,height). И этот рисунок надо вставить напр в ячейку (2,5).

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

На этот вопрос я ответа не знаю: сложение ширин столбцов (так же как и высот строк), например, требуемого результата не даёт.

Поступать нужно след. образом:

1.Определить адрес ячейки Cells(k, m).Address.
2.Пересчитать в циклах суммы Columns(i).Width и Rows(j).Height
от i = 1 до i = k - 1 (аналогично For j = 1 To m - 1)
3.X = СУММАi, Y = СУММАj,
ширина и высота картинки - по размерам ячейки, если это необходимо:
Picture.Width = Columns(m).Width, Picture.Height = Rows(k).Height

Спасибо это пошло.
Теперь еще такой вопрос: Как этот имейдж центрировать по ячеики?

ThisWorkbook.Sheets('Лист1').Shapes.AddPicture name_of_File, _
True, True, X, Y, cOLUMNS(nSTOLB).wIDTH, rOWS(nSTROK).hEIGHT

Здесь (Columns(Nstolb).Width, Rows(Nstrok).Height) размер рисунка
устанавливается равным размеру ячейки и соответственно, центрируется.
Что-то не устраивает?

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

Вот так всё работает. Правда. длинновато получилось

Уважаемый, почему молчим? Погряз, решая задачу оптимизации?

Молчание удивительно, поскольку то, что я второпях набросал,
содержит несколько ошибок, что, конечно работоспособности коду не добавляет (типы объявленных переменных Long вместо Double,
использование переменной 'i' вместо 'j' в цикле
'For j = Nstolb To Nstolb1').

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

Убрано всё 'лишнее'. Теперь код короткий, прозрачный и быстрый.

Как программно определить фон определенной ячейки Excel?
Как программно определить фон определенной ячейки Excel. Заранее спасибо.


Как получить координаты определенной вкладки в QTabBar?
Я хочу получить QRect определенной вкладки в QTabBar, то есть её координаты и ширину с высотой.


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

Как получить при нажатии координаты определённой программы?
Нажав мышкой где-то на другой windows программе, получить той программы x и y, не самого windows, а.

У вас большой монитор, но таблицы, с которыми вы работаете - еще больше. И, пробегая взглядом по экрану в поисках нужной информации, всегда есть шанс "соскользнуть" взглядом на соседнюю строчку и посмотреть не туда. Я даже знаю людей, который для таких случаев постоянно держат недалеко от себя деревянную линейку, чтобы приложить ее к строке на мониторе. Технологии будущего!

А если при движении активной ячейки по листу будет подсвечиваться текущая строка и столбец? Своего рода координатное выделение примерно такого вида:

Поудобнее, чем линейка, правда?

Есть несколько способов разной сложности, чтобы реализовать такое. Каждый способ - со своими плюсами и минусами. Давайте разберем их детально.

Способ 1. Очевидный. Макрос, выделяющий текущую строку и столбец

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

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Измените адрес рабочего диапазона на свой - именно в пределах этого диапазона и будет работать наше выделение. Затем закройте редактор Visual Basic и вернитесь в Excel.

Нажмите сочетание клавиш ALT+F8, чтобы открыть окно со списком доступных макросов. Макрос Selection_On, как нетрудно догадаться, включает координатное выделение на текущем листе, а макрос Selection_Off - выключает его. В этом же окне, нажав кнопку Параметры (Options) можно назначить этим макросам сочетания клавиш для удобного запуска.

Плюсы этого способа:

  • относительная простота реализации
  • выделение - операция безобидная и никак не изменяет содержимое или форматирование ячеек листа, все остается как есть

Минусы этого способа:

  • такое выделение некорректно работает в том случае, если на листе есть объединенные ячейки - выделяются сразу все строки и столбцы, входящие в объединение
  • если случайно нажать клавишу Delete, то очистится не только активная ячейка, а вся выделенная область, т.е. удалятся данные из всей строки и столбца

Способ 2. Оригинальный. Функция ЯЧЕЙКА + Условное форматирование

Этот способ хотя и имеет пару недостатков, мне представляется весьма изящным. Реализовать что-либо, используя только встроенные средства Excel, минимально влезая в программирование на VBA - высший пилотаж ;)

Способ основан на использовании функции ЯЧЕЙКА (CELL), которая может выдавать массу различной информации по заданной ячейке - высоту, ширину, номер строки-столбца, числовой формат и т.д.. Эта функция имеет два аргумента:

  • кодовое слово для параметра, например "столбец" или "строка"
  • адрес ячейки, для которой мы хотим определить значение этого параметра

Хитрость в том, что второй аргумент не является обязательным. Если он не указан, то берется текущая активная ячейка.

Вторая составляющая этого способа - условное форматирование. Эта крайне полезная функция Excel позволяет автоматически форматировать ячейки, если они удовлетворяют заданным условиям. Если соединить эти две идеи в одно целое, то получим следующий алгоритм реализации нашего координатного выделения через условное форматирование:

  1. Выделяем нашу таблицу, т.е. те ячейки, в которых в будущем должно отображаться координатное выделение.
  2. В Excel 2003 и более старших версиях открываем меню Формат - Условное форматирование - Формула (Format - Conditional Formatting - Formula) . В Excel 2007 и новее - жмем на вкладке Главная (Home) кнопку Условное форматирование - Создать правило (Conditional Formatting - Create Rule) и выбираем тип правила Использовать формулу для определения форматируемых ячеек (Use formula)
  3. Вводим формулу для нашего координатного выделения:

Все почти готово, но остался один нюанс. Дело в том, что Excel не считает изменение выделения изменением данных на листе. И, как следствие, не запускает пересчет формул и перекраску условного форматирования только при изменении положения активной ячейки. Поэтому добавим в модуль листа простой макрос, который будет это делать. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этого простого макроса:

Теперь при изменении выделения будет запускаться процесс пересчета формулы с функцией ЯЧЕЙКА в условном форматировании и заливаться текущая строка и столбец.

Плюсы этого способа:

  • Условное форматирование не нарушает пользовательское форматирование таблицы
  • Этот вариант выделения корректно работает с объединенными ячейками.
  • Нет риска удалить целую строку и столбец с данными при случайном нажатии Delete.
  • Макросы используются минимально

Минусы этого способа:

  • Формулу для условного форматирования надо вводить вручную.
  • Нет быстрого способа включить-выключить такое форматирование - оно включено всегда, пока не будет удалено правило.

Способ 3. Оптимальный. Условное форматирование + макросы

Золотая середина. Используем механизм отслеживания выделения на листе при помощи макросов из способа-1 и добавим к нему безопасное выделение цветом с помощью условного форматирования из способа-2.

Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:

Не забудьте изменить адрес рабочего диапазона на адрес своей таблицы. Закройте редактор Visual Basic и вернитесь в Excel. Чтобы использовать добавленные макросы, нажмите сочетание клавиш ALT+F8 и действуйте аналогично способу 1.

Способ 4. Красивый. Надстройка FollowCellPointer

Excel MVP Jan Karel Pieterse родом из Нидерландов раздает у себя на сайте бесплатную надстройку FollowCellPointer(36Кб), которая решает ту же задачу, отрисовывая с помощью макросов графические линии-стрелки для подсветки текущей строки и столбца:

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

Обычно мы можем определить номер строки и номер столбца ячейки по ее адресу. Например, адрес A2 означает, что он находится в столбце 1 и строке 2. Но может быть немного сложно определить номер столбца ячейки NK60. И если у вас есть только адрес столбца или адрес строки ячейки, как определить номер строки или номер столбца? Эта статья покажет вам решения.

Если вы знаете только адрес, как вы можете определить номер строки и столбца?

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

Если адрес ячейки NK60, он показывает номер строки 60; и вы можете получить столбец с формулой = Столбец (NK60) .

Конечно, вы можете получить номер строки по формуле = Ряд (NK60) .

Если вы знаете только адрес столбца или строки, как вы можете определить номер строки или столбца?

Иногда вы можете знать значение в определенном столбце или строке и хотите определить его номер строки или номер столбца. Вы можете получить их с помощью функции Match.

документ определяет номер столбца строки 1

Предположим, у вас есть таблица, как показано на следующем снимке экрана.

Предположим, вы хотите узнать номер строки «чернила"И вы уже знаете, что он находится в столбце A, вы можете использовать эту формулу = ПОИСКПОЗ ("чернила"; A: A; 0) в пустой ячейке, чтобы получить номер строки. После ввода формулы и нажатия клавиши Enter отобразится номер строки ячейки, содержащей "чернила".

Предположим, вы хотите узнать номер столбца «чернила"И вы уже знаете, что он находится в строке 4, вы можете использовать эту формулу = ПОИСКПОЗ ("чернила"; 4: 4,0) в пустой ячейке, чтобы получить номер строки. После ввода формулы и нажатия клавиши Enter отобразится номер строки ячейки, содержащей "чернила".

Выберите всю строку / столбец, если значения ячеек соответствуют определенному значению в Excel

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

Сравнение, чтобы вернуть номер строки значения столбца, если значение ячейки соответствует определенному значению, Kutools for Excel's Выбрать определенные ячейки Утилита предоставляет пользователям Excel другой выбор: выбрать всю строку или весь столбец, если значения ячеек соответствуют определенному значению в Excel. И номер строки в крайнем левом углу или буква столбца вверху будут выделены, как показано на скриншоте ниже. Легче и понятнее в работе! Полнофункциональная бесплатная 30-дневная пробная версия!

Kutools for Excel - Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 30-дневная пробная версия, кредитная карта не требуется! Get It Now

адрес документа функция 1

Описание

Освободи Себя ADDRESS Функция возвращает ссылку на адрес ячейки в виде текста на основе заданного номера столбца и номера строки. Например, формула =ADDRESS(1,1) возвращает $ A $ 1. В ADDRESS Функция может возвращать относительный или абсолютный адрес, а также возвращать в стиле A1 или R1C1, имя листа также может быть включено в результат.

синтаксис и аргументы

Синтаксис формулы

ADDRESS( row_num , column_num , [abs_num] , [a1] , [sheet_text] )

аргументы

  • Array: Обязательно, диапазон ячеек или массив констант, из которых вы извлекаете. Если аргумент массива является столбцом ячеек, требуется row_num, если array - строка ячеек, col_num требуется.
  • Row_num: Необходимые. Значение, указывающее номер строки для использования в ссылке на ячейку.
  • Col_num: Необходимые. Значение, указывающее номер столбца для использования в ссылке на ячейку.
  • Abs_num: Необязательный. Числовое значение, определяющее тип возвращаемой ссылки.
  • A1: Необязательный. Логическое значение, определяющее стиль ссылки в A1 или R1C1.
  • Sheet_text: Необязательный. Имя используемого рабочего листа; если оно не указано, оно будет относиться к текущему листу. Например, ADDRESS(1,1. ”Sheet2”) , возвращает Sheet2! $ A $ 1.

Примечания:

Возвращаемое значение:

ADDRESS функция возвращает ссылку на ячейку в виде текста.

Использование и примеры

Здесь приведены несколько примеров, объясняющих, как использовать функцию ИНДЕКС.

Пример 1. Базовое использование: получение адреса ячейки из заданного столбца и строки

адрес документа функция 2

1) Если вы просто введете аргументы строки и столбца в ADDRESS Функция,
=ADDRESS(A2,B2)
A2 и B2 - числовые значения строки и столбца, и он возвращает
1 австралийских доллара

адрес документа функция 3

2) Если вы вводите аргументы строки, столбца и абс в ADDRESS Функция,
=ADDRESS(A3,B3,C3)
C3 - аргументы abs, 2 указывает на отображение ссылки в виде относительной строки и абсолютного столбца, и он возвращает
A $ 1

адрес документа функция 4

3) Если четвертый аргумент введен в ADDRESS Функция,
=ADDRESS(A4,B4,C4,D4))
D4 контролирует стиль ссылки, A1 или R1C1, 0 или False будет отображать результат в стиле A1, 1 или True отобразит результат в стиле R1C1, здесь он вернет
R1C1

адрес документа функция 5

4) Если все аргументы введены в ADDRESS Функция,
=ADDRESS(A6,B6,C6,D6,E6)
E6 - пятый аргумент, указывающий на ссылку на лист, он возвращает
Базовое использование! $ A1

Пример 2 - Значение ячейки из номера строки и столбца

Освободи Себя ADDRESS функция возвращает адрес ячейки в виде текста, если вы хотите показать значение ячейки в адресе ячейки, вы можете объединить ADDRESS функция и INDIRECT функция для достижения этой цели.

Вот формула в B4, которая будет получать значение ячейки в B1.

адрес документа функция 6

=INDIRECT(ADDRESS(B2,B3))

Пример 3 - Получить адрес максимального значения

В этом случае я расскажу, как использовать ADDRESS функция для получения адреса ячейки с максимальным значением.

адрес документа функция 7

Во-первых, вам нужно получить максимальное значение по этой формуле =MAX(B2:B6) .

Затем используйте формулу

=ADDRESS(MATCH(E1,B1:B6,0),COLUMN(B1))

MATCH(E1,B1:B6,0) найдет номер строки, E1 - максимальное значение, B1: B6 - столбец, из которого вы найдете максимальное значение;

адрес документа функция 8

COLUMN(B1) найдет номер столбца, B1 - это столбец, из которого вы найдете значение.

Примечание: Эта формула может найти максимальное значение только в одном столбце.

Пример 4 - Возврат буквы столбца на основе номера столбца

В этом примере я расскажу, как использовать ADDRESS функция для возврата буквы столбца на основе заданного номера столбца.

Например, вы хотите получить букву столбца для 29-го столбца, используйте следующую формулу:

=SUBSTITUTE(ADDRESS(1,A3,4),"1","")

Что означают аргументы:

ADDRESS функция: 1 - строка 1, A3 - номер столбца, относительную букву столбца которого вы хотите получить, 4 - аргумент abs, возвращающий ссылку в относительной, в этой части ADDRESS функция получает результат AC1;

адрес документа функция 9

SUBSTITUTE функция: замените 1 пустой строкой, чтобы окончательный результат
AC

Если вы хотите получить букву столбца текущей ячейки, вы можете использовать эту формулу

адрес документа функция 10

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

Лучшие инструменты для работы в офисе

Kutools for Excel - поможет вам выделиться из толпы

Хотите быстро и безупречно выполнять свою повседневную работу? Kutools for Excel предлагает мощные расширенные функции 300 (объединение книг, сумма по цвету, разделение содержимого ячеек, дата преобразования и так далее . ) и экономия 80% времени для вас.

Читайте также: