Excel первая заполненная ячейка в столбце

 

Доброго времени суток форумчане. Помогите с решением проблемы. Какую формулу применить для определения первой заполненной ячейки (столбец F). Ни чего не нашел подходящего. Попытался обойти поиск первой заполненной ячейки так: в голубой ячейки вписал такую формулу =ПОИСКПОЗ(E1+307;E:E) и думал сделать СМЕЩ на соседнюю ячейку, но не могу получить ссылку на последнюю заполненную ячейку.
Подскажите мне формулу первой заполненной ячейки для зеленого столбца, либо формулу последней заполненной ячейки со смещением, для желтого столбца.
Прикрепил скрин и фаил, на всякий случай.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Без формул массива, попроще:
=ПОИСКПОЗ(9E+307;F1:F24)-СЧЁТ(F1:F24)+1
Но с условием, что диапазон чисел не разбит пустыми ячейками

Формула массива:
=МИН(ЕСЛИ(F8:F24;СТРОКА(F8:F24)))
Если нужно, отнять количесто строк до начала диапазона

 

JayBhagavan

Пользователь

Сообщений: 11833
Регистрация: 17.01.2014

ПОЛ: МУЖСКОЙ | Win10x64, MSO2019x64

rumpelshtitchen, здравия. Не совсем понятно, что значит первая заполненная? IMHO, первая заполненная в зел. столб. — яч. F7.

<#0>
Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori

 

Catboyun

Пользователь

Сообщений: 1631
Регистрация: 09.05.2015

формула массива:
=ПОИСКПОЗ(1=1;ЕЧИСЛО(E:E);)
обычная, строго по примеру:
=ПОИСКПОЗ(МИН(F:F);F:F;)
Ваша +

=ПОИСКПОЗ(E1+307;E:E)-СЧЁТ(E:E)+1

не обратил внимания — правильно у vikttur

Изменено: Catboyun23.01.2016 15:06:57

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Еще, если по примеру: начало вторых измерений=конец первых — искать последнее значение столбца Е

 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#6

23.01.2016 15:10:25

Цитата
JayBhagavan написал:

нет, нет…. это моя недоработка, мне необходима формула которая определит первую заполненную ячейку (число)

 

gling

Пользователь

Сообщений: 4024
Регистрация: 01.01.1970

#7

23.01.2016 15:17:25

Для первого в Е

Код
=ПОИСКПОЗ(9^9;E1:E25)

Для последнего в F если нет пустых ячеек в столбце между числами

Код
=ПОИСКПОЗ(9^9;F1:F25)-СЧЁТ(F1:F25)+1

или формула массива

Код
=ПОИСКПОЗ(1=1;ЕЧИСЛО(F1:F25);0)

Прикрепленные файлы

  • разработка2.xlsx (9.56 КБ)

 

Благодарю всех за ответы, но к сожалению это не совсем то что нужно, ну или я рукожоп))))), все выше предложенные варианты выдают ссылку на 14 строку столбца F, а как получить ссылку на ячейку F14 (первая заполненная ячейка для данного варианта), с учетом возможности изменения данной ячейкb (первой заполненной) в диапазоне F1;F100, то есть в диапазоне F1;F100 первой заполненной ячейкой может стать любая…

Изменено: rumpelshtitchen23.01.2016 15:35:24

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#9

23.01.2016 15:53:25

Цитата
не совсем то что нужно

А кто писал номер в ячейке? Так и поняли, что нужно положение значения.

 

gling

Пользователь

Сообщений: 4024
Регистрация: 01.01.1970

А Вы пробовали формулу массива из сообщения #4 только для столбца F, или третью формулу из сообщения #7 изменив 25 на 100? Если да, то что в них не так?

 

да, и в том и в том случае выдает «Н/Д»

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#12

23.01.2016 17:47:06

Цитата
…формулу массива…

Это когда вводить формулу Ctrl+Shift+Enter и она обрамится фигурными скобками.

 

vikttur,и в том и в том случае выдает цифру 14, я так понимаю это номер строки….

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Кто мешает искать в  диапазоне по номеру строки?
=ИНДЕКС(диапазон; номер_строки)

Посмотрите время размещения сообщений с ответами. Разница между сообщениями с ответами по первому вопросу (секунды, минуты) и ответы после уточнения. Заметно, да?
Неинтересно стало. Формулировать задачу нужно сразу, иначе рискуете остаться без решения.

 

дорогие друзья, применил вот такую формулу =ИНДЕКС(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)????

Изменено: rumpelshtitchen23.01.2016 23:33:40

 

Catboyun

Пользователь

Сообщений: 1631
Регистрация: 09.05.2015

#16

24.01.2016 07:50:11

Цитата
rumpelshtitchen написал:СМЕЩ

Вам нравятся летучие формулы?
Или это учебное задание?
=СМЕЩ(ИНДЕКС(E:E;ПОИСКПОЗ(9^9;E:E));-СЧЁТ(E:E)+1;)

 

rumpelshtitchen

Пользователь

Сообщений: 136
Регистрация: 15.05.2015

#17

24.01.2016 11:36:14

Цитата
Catboyun написал: Вам нравятся летучие формулы?

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

 

Catboyun

Пользователь

Сообщений: 1631
Регистрация: 09.05.2015

#18

25.01.2016 07:37:51

Цитата
rumpelshtitchen написал:но другого варианта

=ИНДЕКС(E:E;ПОИСКПОЗ(9^9;E:E)-СЧЁТ(E:E)+1)

Цитата
rumpelshtitchen написал:при условии

если есть пустые, не массивная:
=ИНДЕКС(E:E;СУММПРОИЗВ(НАИБОЛЬШИЙ((E:E<>»»)*СТРОКА(E:E);СЧЁТ(E:E))))

Цитата
vikttur написал:
Кто мешает искать в  диапазоне по номеру строки?
=ИНДЕКС(диапазон; номер_строки)

Хитрости »

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
ссылки
статистика

Найти первую ячейку с ненулевым значением в столбце

The3rdStreet

Дата: Вторник, 31.03.2015, 16:25 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Уважаемые знатоки Excel!
Помогите составить формулу для возврата значения первой (верхней) непустой (ненулевой) текстовой ячейки в определённом столбце ячейке итогов, с условием, что ячейки таблицы заполняются не в ручную, а данными из другой таблицы с помощью формулы вида:
еслиошибка(впр(наименование;таблица;номер столбца;);»»).
Уточню, что искомое значение должно быть либо текстом первой ненулевой ячейки, либо «» (пустота) в случае отсутствия данных в столбце. Значение «0» (ноль, как число) не подходит, так как далее данные из ячейки, которой вернётся значение первой ненулевой ячейки столбца, будут источником для другого листа Excel, где должно быть либо конкретное текстовое значение, либо ничего.
Прочитал массу подобных тем на форумах, но все предложенные решения не помогли: в лучшем случае ячейке итогов возвращалось значение первой (верхней) ячейки столбца, если ей присвоено значение, если значение отсутствует, то есть по сути дела имеем значение «», то даже при заполненных следующих (находящихся ниже) ячейках столбца, ячейке итогов возвращается значение «» (пустота).
Подробнее в приложенном файле.
Спасибо!

К сообщению приложен файл:

8641423.xlsx
(13.1 Kb)

Сообщение отредактировал The3rdStreetВторник, 31.03.2015, 16:33

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:26 |
Сообщение № 2

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Извиняюсь, вот файл-пример.

К сообщению приложен файл:

3410905.xlsx
(13.1 Kb)

 

Ответить

Rustem

Дата: Вторник, 31.03.2015, 16:26 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 281


Репутация:

48

±

Замечаний:
0% ±


Excel 2013

Нет файла


WMR: R183220163895

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:29 |
Сообщение № 4

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Во втором сообщении

 

Ответить

Rustem

Дата: Вторник, 31.03.2015, 16:36 |
Сообщение № 5

Группа: Проверенные

Ранг: Обитатель

Сообщений: 281


Репутация:

48

±

Замечаний:
0% ±


Excel 2013

Оно?

Код

=ИНДЕКС(C2:C6;ПОИСКПОЗ(«»;C2:C6;0)+1)


WMR: R183220163895

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:42 |
Сообщение № 6

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

#ССЫЛКА!
:(

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:45 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

=ИНДЕКС(C2:C6;ПОИСКПОЗ(«»;C2:C6;0)+1)

работает, если первое (верхнее) значение пустое. Если во второй таблице добавить «Запад» и присвоить показателю 5 любое значение, #ССЫЛКА!

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:47 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Понял принцип формулы: ищется пустое значение, и возвращается следующее за ним. Теоретически смогу использовать, просто придётся добавить пустую строку сверху.

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:52 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

И, кстати, если две или более верхних ячейки пустые, то ячейке итогов возвращается значение «», даже если в столбце ниже есть значение. Не пойдёт.

Сообщение отредактировал The3rdStreetВторник, 31.03.2015, 16:53

 

Ответить

Rustem

Дата: Вторник, 31.03.2015, 16:52 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 281


Репутация:

48

±

Замечаний:
0% ±


Excel 2013

Цитата

Если во второй таблице добавить «Запад» и присвоить показателю 5 любое значение, #ССЫЛКА!

Что должно показать в этом случае?


WMR: R183220163895

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:55 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Что должно показать в этом случае?

Значение Показатель 5, которое пользователь введёт во вторую таблицу для Запада, так как Запад будет первым иметь ненулевое значение в столбце 2 таблицы 1.

 

Ответить

The3rdStreet

Дата: Вторник, 31.03.2015, 16:57 |
Сообщение № 12

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

Все ячейки столбца Стороны света во второй таблице имеют выпадающий список. Выберете из него Запад и присвойте любое значение в столбец Показатель 5 таблицы 2. Результат ячейки с формулой #ССЫЛКА!, а должно быть то значение, которое вы ввели в Показатель 5 второй таблицы, либо, если Запада во второй таблице нет — значение Север, если нет Севера, то Восток и так далее.

Сообщение отредактировал The3rdStreetВторник, 31.03.2015, 16:59

 

Ответить

_Boroda_

Дата: Вторник, 31.03.2015, 17:22 |
Сообщение № 13

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так нужно? Формула массива. Вводится одновременным нажатием Контрл Шифт Ентер

Код

=ИНДЕКС(Таблица2[Показатель 5];ПОИСКПОЗ(1=1;ЕЧИСЛО(Таблица2[Показатель 5]);))


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

The3rdStreet

Дата: Среда, 01.04.2015, 00:39 |
Сообщение № 14

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

=ИНДЕКС(Таблица2[Показатель 5];ПОИСКПОЗ(1=1;ЕЧИСЛО(Таблица2[Показатель 5]);))

Не работает. Ищет именно Запад.
Ещё раз суть задачи: есть таблица 1, в которой в первом столбце неизменяемая группа показателей, в нашем случае Запад, Север, Восток, Юг. Второй столбец этой таблицы заполняется автоматом, если в таблице 2 выбран из списка один из неизменяемых показателей таблицы 1 и заполнены столбцы «Показатели», а точнее последний столбец таблицы 2 «Показатель 5» (в упрощённом варианте примера просто Показатель, так как остальные я удалил для упрощения понимания задачи). Таким образом, если в таблице 2 выбран один или несколько из «Запад, Север, Восток, Юг.» и ему присвоено значение «Показатель 5» (Показатель) в таблице 2, то автоматически в таблице 1 напротив этого/этих «Запад, Север, Восток, Юг.» появляется значение этого показателя. Это всё работает. Задача: ячейке «Итог» (последняя в столбце 2 таблицы 1) должно вернуться значение первого (верхнего) ненулевого (непустого) значения столбца 2 таблицы 1. Смотрим пример 2, упрощённый.

К сообщению приложен файл:

7777471.xlsx
(17.9 Kb)

Сообщение отредактировал The3rdStreetСреда, 01.04.2015, 00:41

 

Ответить

_Boroda_

Дата: Среда, 01.04.2015, 00:55 |
Сообщение № 15

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS


Показывайте. Вы, наверное, в формуле не переименовываете название таблицы. Они же все по-разному называются.
чтобы не морочить себе голову, напишите просто так:

Код

=ИНДЕКС(C26:C29;ПОИСКПОЗ(1=1;ЕЧИСЛО(C26:C29);))


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

The3rdStreet

Дата: Суббота, 04.04.2015, 08:43 |
Сообщение № 16

Группа: Пользователи

Ранг: Новичок

Сообщений: 11


Репутация:

0

±

Замечаний:
0% ±


Excel 2010

=ИНДЕКС(C26:C29;ПОИСКПОЗ(1=1;ЕЧИСЛО(C26:C29);))

Спасибо, разобрался! Вы мне очень помогли! Успехов!

 

Ответить

faust21

1 / 1 / 0

Регистрация: 21.01.2020

Сообщений: 151

1

Excel

Первая заполненная ячейка в колонке

10.06.2022, 12:53. Показов 694. Ответов 5

Метки vba (Все метки)


Студворк — интернет-сервис помощи студентам

Подскажете как определить первую заполненную ячейку в столбце. (номер строки)
Условно, есть колонка А, значения в которой могут начинаться с А1, а могут и с А20. Вот мне и нужно определить ее в VBA.

С последней заполненной ячейкой в колонке все, просто :

Visual Basic
1
Cells(Rows.count, 1).End(xlUp).Row

. Хотелось бы по аналогии определить первую.

Спасибо



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.06.2022, 12:53

Ответы с готовыми решениями:

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

Хочуха…

Запрет ввода данных в строке, если первая ячейка пустая
Доброго времени суток. Проблема такая: нужно запретить ввод данных (числа) в строку (например, в…

Если ячейка содержит ТЕКСТ и Вторая ячейка равна ТЕСКТУ то вернуть значение Х
Добрый день, уважаемое сообщество.
Не могу решить такую, казалось бы, простую задачу.
Есть…

Ввести имя-фамилию в 1 колонке, з/п во 2 колонке, в третьей указать премию
Добрый день,помогите решить задание
есть 5 работников
нужно ввести их имя-фамилию в 1 колонке
и…

Равномерно распределить данные в колонке с учетом повтора в другой колонке
Добрый день.
Подскажите, пожалуйста, как равномерно распределить колонку на несколько групп по…

5

Vlad999

3827 / 2254 / 751

Регистрация: 02.11.2012

Сообщений: 5,928

10.06.2022, 13:09

2

вариант

Visual Basic
1
2
3
4
5
If Range("A1") <> "" Then
    R = 1
Else
    R = Range("A1").End(xlDown).Row
End If



1



faust21

1 / 1 / 0

Регистрация: 21.01.2020

Сообщений: 151

10.06.2022, 13:19

 [ТС]

3

Vlad999,

Visual Basic
1
Range("A1").End(xlDown).Row

Это отлично подходит. Спасибо.
а зачем нужно то что ниже?

Visual Basic
1
2
If Range("A1") <> "" Then
    R = 1



0



Angry Old Man

1518 / 396 / 173

Регистрация: 26.03.2022

Сообщений: 737

10.06.2022, 13:33

4

Еще один вариант. Поиск от ячейки в произвольной строке

Visual Basic
1
2
3
Set R = Range("A1")
R1 = R.Row
If R = "" Then R1 = R.End(xlDown).Row

Вопрос: а что, если столбец пуст, что в ответе должно получиться?



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

Цитата
Сообщение от faust21
Посмотреть сообщение

а зачем нужно то что ниже?

если заполнена только ячейка А1 то End(xlDown) выдаст последнюю строку листа, (у меня например это будет 65536). А должно быть 1.

Добавлено через 2 минуты

Цитата
Сообщение от faust21
Посмотреть сообщение

Мне для обозначения границ массива

может быть другой способ.
например

Visual Basic
1
2
Dim J As Range
Set J = ActiveSheet.UsedRange

может подойти.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.06.2022, 15:14

Помогаю со студенческими работами здесь

DataGrid + DateTimePicker: когда ячейка теряет фокус, выбранная дата не запоминается, ячейка остается пустой
После выбора даты, когда ячейка теряет фокус, ячейка не запоминает выбранную дату и становиться…

В каждой колонке под таблицей прописать сколько раз в этой колонке встречаются определенные колонки
Внизу прикреплен рисунок с таблицей excel.
Цветами обозначены ячейки в которых в двух колонках…

Объединить ячейки в колонке В, так же как в колонке А
Добрый день. Столкнулся с проблемой.

Интересует решение, хотя бы с логической стороны (код сам…

Как на изображение наложить сетку, чтобы одна ячейка имела размеры 64*32, и чтобы каждая ячейка нумеровалась
Добрый день.
Подскажите пожалуйста.
Имеется изображение 320*640
Необходимо на это изображение…

Первая ли книга как первая для JavaScript?
]Здравствуйте, хотел бы изучить JavaScript. Мои знания на данный момент: HTML/CSS, основы С++.

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel.

Задача: требуется формула, которая позволяла найти первое непустое значение в строке, т.е., возвращала бы номер первой непустой ячейки в строке. Предположим, что данные представлены в столбцах С:K (рис. 1).

Рис. 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. Формула находит первую непустую ячейку в каждой строке и возвращает значение этой ячейки

Рис. 2. Формула находит первую непустую ячейку в каждой строке и возвращает значение этой ячейки

Дополнительные сведения: если все ячейки пустые, то формула возвращает ошибку #Н/Д.

Альтернативные стратегии: когда вы из единицы вычитаете значение ЕПУСТО, вы преобразуете логические значения ИСТИНА/ЛОЖЬ в числовые 1/0. Вы могли бы пропустить этот шаг, но тогда вам придется искать ЛОЖЬ в качестве первого аргумента функция ПОИСКПОЗ: =ИНДЕКС(C2:K2;1;ПОИСКПОЗ(ЛОЖЬ;ИНДЕКС(ЕПУСТО(C2:K2);1;0);0)).

Источник.

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