Доброго времени суток форумчане. Помогите с решением проблемы. Какую формулу применить для определения первой заполненной ячейки (столбец F). Ни чего не нашел подходящего. Попытался обойти поиск первой заполненной ячейки так: в голубой ячейки вписал такую формулу =ПОИСКПОЗ(E1+307;E:E) и думал сделать СМЕЩ на соседнюю ячейку, но не могу получить ссылку на последнюю заполненную ячейку. |
|
vikttur Пользователь Сообщений: 47199 |
Без формул массива, попроще: Формула массива: |
JayBhagavan Пользователь Сообщений: 11833 ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64 |
rumpelshtitchen, здравия. Не совсем понятно, что значит первая заполненная? IMHO, первая заполненная в зел. столб. — яч. F7. <#0> |
Catboyun Пользователь Сообщений: 1631 |
формула массива:
не обратил внимания — правильно у vikttur Изменено: Catboyun — 23.01.2016 15:06:57 |
vikttur Пользователь Сообщений: 47199 |
Еще, если по примеру: начало вторых измерений=конец первых — искать последнее значение столбца Е |
rumpelshtitchen Пользователь Сообщений: 136 |
#6 23.01.2016 15:10:25
нет, нет…. это моя недоработка, мне необходима формула которая определит первую заполненную ячейку (число) |
||
gling Пользователь Сообщений: 4024 |
#7 23.01.2016 15:17:25 Для первого в Е
Для последнего в F если нет пустых ячеек в столбце между числами
или формула массива
Прикрепленные файлы
|
||||||
Благодарю всех за ответы, но к сожалению это не совсем то что нужно, ну или я рукожоп))))), все выше предложенные варианты выдают ссылку на 14 строку столбца F, а как получить ссылку на ячейку F14 (первая заполненная ячейка для данного варианта), с учетом возможности изменения данной ячейкb (первой заполненной) в диапазоне F1;F100, то есть в диапазоне F1;F100 первой заполненной ячейкой может стать любая… Изменено: rumpelshtitchen — 23.01.2016 15:35:24 |
|
vikttur Пользователь Сообщений: 47199 |
#9 23.01.2016 15:53:25
А кто писал номер в ячейке? Так и поняли, что нужно положение значения. |
||
gling Пользователь Сообщений: 4024 |
А Вы пробовали формулу массива из сообщения #4 только для столбца F, или третью формулу из сообщения #7 изменив 25 на 100? Если да, то что в них не так? |
да, и в том и в том случае выдает «Н/Д» |
|
vikttur Пользователь Сообщений: 47199 |
#12 23.01.2016 17:47:06
Это когда вводить формулу Ctrl+Shift+Enter и она обрамится фигурными скобками. |
||
vikttur,и в том и в том случае выдает цифру 14, я так понимаю это номер строки…. |
|
vikttur Пользователь Сообщений: 47199 |
Кто мешает искать в диапазоне по номеру строки? Посмотрите время размещения сообщений с ответами. Разница между сообщениями с ответами по первому вопросу (секунды, минуты) и ответы после уточнения. Заметно, да? |
дорогие друзья, применил вот такую формулу =ИНДЕКС(E1:E25;ПОИСКПОЗ(9^9;E1:E25))….в принципе то же самое, что и такая ПРОСМОТР(9E+307;E:E) выбирает в желтом столбце последнее значение это «6».. а возможно такое, что бы данный элемент формулы.ПОИСКПОЗ(9^9;E1:E25) был заменен номером ячейки которая нам нужна, ну что то вроде такого:=ИНДЕКС(E1:E25;СМЕЩ(Е14;1;0)) где Е14 является данным куском формулы ПОИСКПОЗ(9^9;E1:E25)???? Изменено: rumpelshtitchen — 23.01.2016 23:33:40 |
|
Catboyun Пользователь Сообщений: 1631 |
#16 24.01.2016 07:50:11
Вам нравятся летучие формулы? |
||
rumpelshtitchen Пользователь Сообщений: 136 |
#17 24.01.2016 11:36:14
нет, нет, мне они не нравятся, но другого варианта в данной ситуации я просто не нашел, спасибо за формулу, формула работает, показывает значение в первой заполненной ячейке, при условии что в данном столбике нет пустых ячеек. |
||
Catboyun Пользователь Сообщений: 1631 |
#18 25.01.2016 07:37:51
=ИНДЕКС(E:E;ПОИСКПОЗ(9^9;E:E)-СЧЁТ(E:E)+1)
если есть пустые, не массивная:
|
||||||
Хитрости »
6 Май 2011 34856 просмотров
Как определить первую заполненную ячейку на листе?
Иногда помимо определения последней заполненной ячейки на листе необходимо определять и первую. Обычно это необходимо для поиска заголовка таблицы, если таблица «плавающая». Т.е. таблица может менять свое положение на листе, а найти где эта таблица начинается все же необходимо, чтобы производить действия исключительно внутри нужных данных. Чтобы найти первую заполненную ячейку с просмотром на всем листе можно применить такой код:
Sub Get_First_Cell() Dim lFirstRow As Long, lFirstCol As Long, rFndRng As Range 'проверяем, есть ли данные в первой ячейке диапазона данных If ActiveSheet.UsedRange.Cells(1, 1) <> "" Then lFirstRow = ActiveSheet.UsedRange.Row lFirstCol = ActiveSheet.UsedRange.Column Else 'ищем ячейку с любым значением(так же с формулой) Set rFndRng = ActiveSheet.UsedRange.Find("*", , xlFormulas, xlWhole) If rFndRng Is Nothing Then MsgBox "Лист не содержит данных", vbInformation, "Информация": Exit Sub End If lFirstRow = rFndRng.Row: lFirstCol = rFndRng.Column End If MsgBox "Номер строки первой заполненной ячейки: " & lFirstRow & vbNewLine & _ "Номер столбца первой заполненной ячейки: " & lFirstCol End Sub
Как видите — все довольно просто. Никаких особых заморочек и трудностей.
Если необходимо определить первую заполненную ячейку в определенном столбце:
Sub Get_First_Cell_InColumn() Dim lFirstRow As Long, rFndRng As Range 'проверяем, есть ли данные в первой ячейке столбца B (2) If ActiveSheet.Columns(2).Rows(1) <> "" Then lFirstRow = 1 Else 'ищем ячейку с любым значением(так же с формулой) Set rFndRng = ActiveSheet.Columns(2).Find("*", , xlFormulas, xlWhole) If rFndRng Is Nothing Then MsgBox "Лист не содержит данных", vbInformation, "Информация": Exit Sub End If lFirstRow = rFndRng.Row End If MsgBox "Номер строки первой заполненной ячейки столбца B: " & lFirstRow End Sub
Если найти нужно первую ячейку, но не учитывая скрытые(т.е. игнорировать при этом скрытые строки и столбцы), то можно попробовать применить такой код:
Sub Get_First_Cell_IgnoreHiddenCells() Dim lFirstRow As Long, lFirstCol As Long, rFndRng As Range 'делаем пропуск ошибок на случай, если на листе нет данных On Error Resume Next 'ищем ячейку с любым значением(так же с формулой) Set rFndRng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Find("*", , xlFormulas, xlWhole) 'не нашли ячейку - завершаем процедуру If rFndRng Is Nothing Then MsgBox "Лист не содержит данных", vbInformation, "Информация" Exit Sub Else'нашли ячейку - получаем данные по номеру строки и столбца lFirstRow = rFndRng.Row: lFirstCol = rFndRng.Column MsgBox "Номер строки первой заполненной ячейки: " & lFirstRow & vbNewLine & _ "Номер столбца первой заполненной ячейки: " & lFirstCol End If End Sub
Если искать первую ячейку необходимо не по наличию данных(коды выше определят ячейку, если в ней есть формула или значение), а исключительно по видимому значению(т.е. чтобы даже если в ячейке есть формула, но она не возвращает никакого значения, то такая ячейка не учитывалась), то в любом приведенном выше коде надо в строке:
.Find(«*», , xlFormulas, xlWhole)
заменить xlFormulas на xlValues
Так же см.:
Как определить последнюю ячейку на листе через VBA?
Статья помогла? Поделись ссылкой с друзьями!
Видеоуроки
Поиск по меткам
Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика
Найти первую ячейку с ненулевым значением в столбце |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
faust21 1 / 1 / 0 Регистрация: 21.01.2020 Сообщений: 151 |
||||
1 |
||||
Excel Первая заполненная ячейка в колонке10.06.2022, 12:53. Показов 694. Ответов 5 Метки vba (Все метки)
Подскажете как определить первую заполненную ячейку в столбце. (номер строки) С последней заполненной ячейкой в колонке все, просто :
. Хотелось бы по аналогии определить первую. Спасибо
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
10.06.2022, 12:53 |
Ответы с готовыми решениями: Взять 6ть знаков, делать пока есть заполненная ячейка в столбце Хочуха… Запрет ввода данных в строке, если первая ячейка пустая Если ячейка содержит ТЕКСТ и Вторая ячейка равна ТЕСКТУ то вернуть значение Х Ввести имя-фамилию в 1 колонке, з/п во 2 колонке, в третьей указать премию Равномерно распределить данные в колонке с учетом повтора в другой колонке 5 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,928 |
||||
10.06.2022, 13:09 |
2 |
|||
вариант
1 |
faust21 1 / 1 / 0 Регистрация: 21.01.2020 Сообщений: 151 |
||||||||
10.06.2022, 13:19 [ТС] |
3 |
|||||||
Vlad999,
Это отлично подходит. Спасибо.
0 |
Angry Old Man 1518 / 396 / 173 Регистрация: 26.03.2022 Сообщений: 737 |
||||
10.06.2022, 13:33 |
4 |
|||
Еще один вариант. Поиск от ячейки в произвольной строке
Вопрос: а что, если столбец пуст, что в ответе должно получиться?
0 |
1 / 1 / 0 Регистрация: 21.01.2020 Сообщений: 151 |
|
10.06.2022, 13:39 [ТС] |
5 |
Angry Old Man,
0 |
Vlad999 3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,928 |
||||
10.06.2022, 15:14 |
6 |
|||
а зачем нужно то что ниже? если заполнена только ячейка А1 то End(xlDown) выдаст последнюю строку листа, (у меня например это будет 65536). А должно быть 1. Добавлено через 2 минуты
Мне для обозначения границ массива может быть другой способ.
может подойти.
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
10.06.2022, 15:14 |
Помогаю со студенческими работами здесь DataGrid + DateTimePicker: когда ячейка теряет фокус, выбранная дата не запоминается, ячейка остается пустой В каждой колонке под таблицей прописать сколько раз в этой колонке встречаются определенные колонки Объединить ячейки в колонке В, так же как в колонке А Интересует решение, хотя бы с логической стороны (код сам… Как на изображение наложить сетку, чтобы одна ячейка имела размеры 64*32, и чтобы каждая ячейка нумеровалась Первая ли книга как первая для JavaScript? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 6 |
Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.
Задача: требуется формула, которая позволяла найти первое непустое значение в строке, т.е., возвращала бы номер первой непустой ячейки в строке. Предположим, что данные представлены в столбцах С:K (рис. 1).
Рис. 1. Формула находит первую непустую ячейку в каждой строке и возвращает ее номер в массиве
Скачать заметку в формате Word или pdf, примеры в формате Excel
Решение: формула в А2: =ПОИСКПОЗ(1;ИНДЕКС(1-ЕПУСТО(C2:K2);1;0);0). Хотя эта формула имеет дело с массивом ячеек, она в конечном счете возвращает одно значение, так что использовать при вводе нажатие Ctrl+Shift+Enter не требуется (о формулах массива см. Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel).
Рассмотрим работу формулы подробнее. Функция ЕПУСТО возвращает ИСТИНА, если ячейка является пустой, и ЛОЖЬ, если ячейка – не пустая. Посмотрите на строку данных в С2:К2. ЕПУСТО(С2:К2) возвратит массив: {ИСТИНА;ИСТИНА;ЛОЖЬ;ИСТИНА;ИСТИНА;ИСТИНА;ИСТИНА;ИСТИНА;ИСТИНА}.
Обратите внимание, что далее этот массив вычитается из 1. При попытке использовать значения ИСТИНА и ЛОЖЬ в математической формуле, значение ИСТИНА интерпретируется как 1, а значение ЛОЖЬ – как 0. Задавая 1-ЕПУСТО(С2:К2), вы преобразуете массив логических значений ИСТИНА/ЛОЖЬ в числовую последовательность нулей и единиц: {0;0;1;0;0;0;0;0;0}.
Итак, фрагмент формулы 1-ЕПУСТО(С2:К2) возвращает массив {0;0;1;0;0;0;0;0;0}. Это немного странно, так как от такого фрагмента Excel ожидает, что вернется одно значение. Странно, но не смертельно. Функция ИНДЕКС также обычно возвращает одно значение. Но вот, что написано в Справке Excel: Если указать в качестве аргумента номер_строки или номер_столбца значение 0 (ноль), функция ИНДЕКС возвратит массив значений для целого столбца или целой строки соответственно. Чтобы использовать значения, возвращенные как массив, введите функцию ИНДЕКС как формулу массива в горизонтальный диапазон ячеек для строки и в вертикальный — для столбца.
Если функция ИНДЕКС возвращает массив, ее можно использовать внутри других функций, ожидающих, что аргумент является массивом.
Итак, указав в качестве третьего аргумента функции ИНДЕКС(1-ЕПУСТО(C2:K2);1;0) значение ноль, мы получим массив {0;0;1;0;0;0;0;0;0}.
Функция ПОИСКПОЗ выполняет поиск искомого значения в одномерном массиве и возвращает относительную позицию первого найденного совпадения. Формула =ПОИСКПОЗ(1,МАССИВ,0) просит Excel найти номер ячейки в МАССИВЕ, которая содержит первую встретившуюся единицу. Функция ПОИСКПОЗ определяет в каком столбце содержится первая непустая ячейка. Когда вы просите ПОИСКПОЗ найти первую 1 в массиве {0;0;1;0;0;0;0;0;0}, она возвращает 3.
Итак =ПОИСКПОЗ(1;ИНДЕКС(1-ЕПУСТО(C2:K2);1;0);0) превращается в =ПОИСКПОЗ(1;{0;0;1;0;0;0;0;0;0};0) и возвращает результат 3.
В этот момент, вы знаете, что третий столбец строки С2:К2 содержит первое непустое значение. Отсюда довольно просто, используя функцию ИНДЕКС, узнать само это первое непустое значение: =ИНДЕКС(МАССИВ;1;3) или =ИНДЕКС(C2:K2;1;ПОИСКПОЗ(1;ИНДЕКС(1-ЕПУСТО(C2:K2);1;0);0)).
Результат: 3
Рис. 2. Формула находит первую непустую ячейку в каждой строке и возвращает значение этой ячейки
Дополнительные сведения: если все ячейки пустые, то формула возвращает ошибку #Н/Д.
Альтернативные стратегии: когда вы из единицы вычитаете значение ЕПУСТО, вы преобразуете логические значения ИСТИНА/ЛОЖЬ в числовые 1/0. Вы могли бы пропустить этот шаг, но тогда вам придется искать ЛОЖЬ в качестве первого аргумента функция ПОИСКПОЗ: =ИНДЕКС(C2:K2;1;ПОИСКПОЗ(ЛОЖЬ;ИНДЕКС(ЕПУСТО(C2:K2);1;0);0)).
Источник.