Перемещение по ячейкам в Excel стрелками
Данный раздел уроков мы начинали с обучения перемещения курсора по пустому листу. Сейчас рассмотрим другие возможности Excel в области управления курсора стрелками для быстрого и удобного перемещения по большим объемам данных.
Первая ситуация напоминает движение по пустой дороге, а вторая – по переполненной. Выполним несколько простых но эффективных упражнений для быстрой работы при управлении данными рабочего листа.
Перемещение стрелками в Excel
Заполните строки данными, так как показано на этом рисунке:
Задания в данном уроке – не стандартные, но и не сложные, хотя очень полезные.
Примечание! При записи комбинаций горячих клавиш знак «+» означает, что клавиши следует нажимать одновременно, а слово «потом» – означает последовательное нажатие.
Перейдите на ячейку А1. Наилучший способ это сделать, нажать комбинацию горячих клавиш CTRL+HOME. Нажмите на клавишу END потом «стрелка вправо». В предыдущих уроках, когда листы были еще пустыми, данная комбинация просто смещала курсор на самый последний столбец листа. Если в данной строке есть запись, то эта комбинация позволяет нам моментально найти конец заполненного отрывка строки. Но строка может быть разбита на несколько отрезков записей. Тогда данная комбинация перемещает курсор по концам отрезков строки. Для более наглядного примера обратите внимание на рисунок:

Клавиша END потом «стрелка влево» выполняет выше описанное перемещение курсора в обратном порядке – соответственно. Каждый раз, когда мы нажимаем на клавишу END, в строке состояния окна программы высвечивается сообщение: «Режим перехода в конец».

Все выше описанные действия для перемещения по ячейкам в Excel стрелками так же выполняет нажатие на клавиатуре компьютера CTRL + «стрелка вправо (стрелка влево, вверх и вниз)»
Выберите любую ячейку на листе и нажмите комбинацию клавиш CTRL+END. В результате курсор переместится на перекресток самой последней записи в строке и самой последней записи в столбце. Обратите внимание на рисунок.

Примечание. Если удалить содержимое нескольких ячеек, чтобы изменить адрес перекрестка после нажатия CTRL+END. Но после удаления нужно обязательно сохранить файл. Иначе CTRL+END будет возвращать курсор по старому адресу.
Таблица действий для перемещения курсором Excel:
| Горячие клавиши | Действие |
| Enter | Стандартное смещение курсора на ячейку вниз. При необходимости в настройках можно изменить в любое направление. |
| Щелчок мышкой | Перемещение на любую ячейку. |
| Стрелки: вверх, вправо, вниз, влево. | Смещение на одну ячейку в соответствующем направлении к конкретной стрелки. |
| CTRL+G или просто F5 | Вызов диалогового окна «перейти до:» для ввода адреса ячейки на который нужно сместить курсор. |
| CTRL+HOME | Переход на первую ячейку А1 с любого места листа. |
| CTRL+END | Переход на перекресток между последней записью строки и последней записью столбца. |
| CTRL+ «любая стрелка» или END потом «любая стрелка» | До первой / последней отрезка записи в строке или столбце. Перемещение происходит в направлении соответствующей стрелки. |
| PageUp и PageDown | Прокрутка одного экрана вверх или вниз. |
| Alt+PageUp и Alt+PageDown | Прокрутка одного экрана вправо или влево. |
| CTRL+PageUp и CTRL+PageDown | Переход на следующий / предыдущий лист. |
- Excel Formula Examples
- Создать таблицу
- Форматирование
- Функции Excel
- Формулы и диапазоны
- Фильтр и сортировка
- Диаграммы и графики
- Сводные таблицы
- Печать документов
- Базы данных и XML
- Возможности Excel
- Настройки параметры
- Уроки Excel
- Макросы VBA
- Скачать примеры
Перейти к последней не пустой ячейке в столбце
нужен макрос при вызове которого, происходит переход на последнюю, имеющую текст ячейку столбца С
в нём есть пустые ячейки, то есть данные не однородные. что и затрудняет написание самостоятельно.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Переход к следующей пустой ячейке в столбце
Всем привет. Знающие, подскажите пож-та каким кодом можно задать условие перехода к следующей.

Осуществить протягивание значений в одном столбце до строки последней заполненной ячейки в другом столбце
Доброго времени суток! Нужна помощь. Есть такая не тривиальная задача которую я даже не.

0 в пустой ячейке
Добрый день уважаемые форумчане, есть база которая содержит поля: , , , и вычисляемое поле . Во.
Пустой текст в ячейке
Отчет выводится с помощью построителя, установил отбор по складу, также добавил группировку строк.
1844 / 1159 / 354
Регистрация: 11.07.2014
Сообщений: 4,102

Сообщение было отмечено mihmann как решение
Решение
mihmann, про это тысячи раз написано, лень набрать в поиске Найти последнюю ячейку столбца или посмотреть в темах форума
ActiveSheet.Cells(Rows.Count,"C").End(xlUp).Select
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Условие отбора по пустой ячейке
Подскажите как в запросе реализовать выборку данных по пустым ячейкам в поле. Ставлю условие.
Sqlite UPDATE в пустой ячейке
Почему не получается записать в базу функцией UPDATE ? $update = $db->exec("UPDATE table SET.
Определение последней пустой ячейки
Ранее пользовался методом поиска последней заполненой и после нее вставлял , то что было до этого.

Поиск последней пустой ячейки
Доброго времени суток. Необходим макрос для excel следующего функционала: есть выпадающий список в.
Dbgrid отбор по пустой ячейке с датой
Привет, в строке dbgrid есть ячейка в которой хранится дата , иногда она пустая . Как сделать отбор.
Фильтр по таблице DataGridView по пустой ячейке
Добрый день! Есть DataGrid и три radioButton. Мой план такой: radioButton1 должен показывать.
VBA Excel. Номер последней заполненной строки
Номер последней заполненной строки в таблице Excel обычно используется в коде VBA для определения следующей за ней первой пустой строки для добавления новой записи. А также для задания интервала для поиска и обработки информации с помощью цикла For… Next (указание границ обрабатываемого диапазона).
Переменную, которой присваивается номер последней строки, следует объявлять как Long или Variant, например: Dim PosStr As Long . В современных версиях Excel количество строк на рабочем листе превышает максимальное значение типа данных Integer.
Таблица в верхнем левом углу
В первую очередь рассмотрим все доступные варианты поиска номера последней заполненной строки для таблиц, расположенных в верхнем левом углу рабочего листа. Такие таблицы обычно представляют собой простые базы данных в Excel, или, как их еще называют, наборы записей.

Пример таблицы с набором данных в Excel
Вариант 1
Основная формула для поиска последней строки в такой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(1, 1).CurrentRegion.Rows.Count
Вариант 2
Ниже таблицы не должно быть никаких записей, в том числе ранее удаленных:
PosStr = ActiveSheet.UsedRange.Rows.Count
Вариант 3
В первом столбце таблицы не должно быть пропусков, а также в таблице должно быть не менее двух заполненных строк, включая строку заголовков:
PosStr = Cells(1, 1).End(xlDown).Row
Вариант 4
В первой колонке рабочего листа внутри таблицы не должно быть пропусков, а ниже таблицы в первой колонке не должно быть других заполненных ячеек:
PosStr = WorksheetFunction.CountA(Range(«A:A»))
Вариант 5
Ниже таблицы не должно быть никаких записей:
PosStr = Cells.SpecialCells(xlLastCell).Row
Последняя строка любой таблицы
Последнюю заполненную строку для любой таблицы будем искать, отталкиваясь от ее верхней левой ячейки: Cells(a, b) .
Вариант 1
Основная формула для поиска последней строки в любой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(a, b).CurrentRegion.Cells(Cells(a, b).CurrentRegion.Cells.Count).Row
Вариант 2
Дополнительная формула с условием, что в первом столбце таблицы нет пустых ячеек:
PosStr = Cells(a, b).End(xlDown).Row
Если у вас на рабочем листе Excel есть записи вне таблиц, следите за тем, чтобы таблицы были окружены пустыми ячейками или пустыми ячейками и границами листа. Тогда не будет случайно внесенных заметок, примыкающих к таблицам, которые могут отрицательно повлиять на точность вычисления номера последней строки из кода VBA.
Как перейти на последнюю заполненную строку в excel
Здравствуйте.
Скажите пожалуйста, как узнать последнюю строку и последний столбец в xls таблице? Т.е. строку и столбец, за которыми однозначно нет никаких данных.
И ещё вопрос: как узнать, является ли ячейка объеденённой и какие ячейки объеденены?
Может быть когда-нибудь я кому-нибудь в чём-нибудь и помогу.
| Аццкий прогер |
| Посмотреть профиль |
| Найти ещё сообщения от Аццкий прогер |
Пользователь
Регистрация: 23.07.2008
Сообщений: 69
Ну вот быстрый ответ на то как узнать последний столбец/строку:
Просто проверять в цикле пустоты, скажем так нашли строку, за ней проверяем есть ли что то в ячейках, а если ситуация такая что могут встретится пустые строки (разрывы), то и проверить скажем еще 100 строк на пустоту, со столбцами так же..
I like beer.. more beer..
Участник клуба
Регистрация: 11.01.2009
Сообщений: 1,916
Пробуй так .
WorkBk := XLApp.WorkBooks.Item[1];// первая книга в сервере WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; // первый лист в первой книге WorkSheet.Cells.SpecialCells($0000000B, EmptyParam).Activate;// . активируем последнюю непустую ячейку X := XLApp.ActiveCell.Row; // Получаем значение последней заполненной строки Y := XLApp.ActiveCell.Column; // Получаем значение последней заполненной колонки
здесь :
X, Y : Integer;
WorkBk : _WorkBook;
WorkSheet : _WorkSheet;
P.S. Это все актуально если пользоваться компонентом TExcelApplication из палитры Servers
«Заряженному танку в дуло не смотрят» @Dekmer in WoT
Последний раз редактировалось Kotofff; 26.02.2009 в 08:17 .
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
Можно и без активации последней ячейки:
WorkBk := XLApp.WorkBooks.Item[1];// первая книга в сервере WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; // первый лист в первой книге LastRowNumber := WorkSheet.Cells.SpecialCells(11, EmptyParam).Row;// . номер последней используемой строки LastColumnNumber := WorkSheet.Cells.SpecialCells(11, EmptyParam).Column;// . номер последнего используемого столбца
| как узнать, является ли ячейка объеденённой и какие ячейки объеденены? |
Тут только один способ — в цикле перебирать на нужном листе все ячейки (или ячейки определённого диапазона), и у каждой из ячеек проверять свойство .MergeArea.Cells.Count
Если значение этого свойства больше 1, значит, ячейка объединённая.
На Delphi написать пример не могу, но на VBA будет так:
Sub ПоискОбъединённыхЯчеек() Dim cell As Excel.Range For Each cell In Worksheets(1).UsedRange.Cells If cell.MergeArea.Cells.Count > 1 Then Debug.Print "Ячейка " & cell.Address & " входит в состав объединённой ячейки" Next End Sub
Не забывайте, что перебирать надо не все ячейки на листе (Worksheets(1).Cells) — цикл займёт очень много времени, а только ячейки используемой области листа — Worksheets(1). UsedRange .Cells (так будет намного быстрее)

__ Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов
| EducatedFool |
| Посмотреть профиль |
| Найти ещё сообщения от EducatedFool |
Пользователь
Регистрация: 26.02.2009
Сообщений: 24
Сообщение от EducatedFool
Можно и без активации последней ячейки:
WorkBk := XLApp.WorkBooks.Item[1];// первая книга в сервере WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet; // первый лист в первой книге LastRowNumber := WorkSheet.Cells.SpecialCells(11, EmptyParam).Row;// . номер последней используемой строки LastColumnNumber := WorkSheet.Cells.SpecialCells(11, EmptyParam).Column;// . номер последнего используемого столбца
Большое спасибо! Для моей задачи это подойдёт.
Но у этого метода есть один недостаток:
Допустим если в таблице заполнены ячейки А1:В5, а ячейка С10 без данных, но имеет форматирование, то этот метод найдёт именно ячейку С10.
Может быть когда-нибудь я кому-нибудь в чём-нибудь и помогу.
| Аццкий прогер |
| Посмотреть профиль |
| Найти ещё сообщения от Аццкий прогер |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
| Допустим если в таблице заполнены ячейки А1:В5, а ячейка С10 без данных, но имеет форматирование, то этот метод найдёт именно ячейку С10. |
С этим будет чуть сложнее.
Во-первых, если в таблице заполненные строки идут подряд, можно попробовать получить адрес заполненного диапазона так:
CurrentRegionAddress = Worksheets(1).Cells(1, 1).CurrentRegion.Address LastRow = Worksheets(1).Cells(1, 1).CurrentRegion.Rows.Count LastColumn = Worksheets(1).Cells(1, 1).CurrentRegion.Columns.Count Debug.Print LastRow, LastColumn
Но для этого надо точно знать, что все строки после ячейки (1, 1) на этом листе заполнены.
(если 3-я строка, к примеру, пустая, данный метод даст неверный ответ)
Корректно определить последнюю строку и столбец можно только так:
(пример опять на VBA, но перевести его, думаю, проблем не составит)
Sub test() Dim ra As Excel.Range, Item as Excel.Range Set ra = Worksheets(1).Cells.SpecialCells(2) ' возвращает все ячейки со значениями LastRow = 0: LastColumn = 0 For Each Item In ra.EntireRow.Rows If Item.Row > LastRow Then LastRow = Item.Row Next Item For Each Item In ra.EntireColumn.Columns If Item.Column > LastColumn Then LastColumn = Item.Column Next Item Debug.Print LastRow, LastColumn End Sub

__ Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов
Последний раз редактировалось EducatedFool; 26.02.2009 в 15:32 .
| EducatedFool |
| Посмотреть профиль |
| Найти ещё сообщения от EducatedFool |
