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

Получить первое непустое значение в столбце или строке

Чтобы получить первое значение (первая ячейка, которая не пуста, без учета ошибок) из диапазона из одного столбца или одной строки, вы можете использовать формулу, основанную на ИНДЕКС и МАТЧ функции. Однако, если вы не хотите игнорировать ошибки из вашего диапазона, вы можете добавить функцию ISBLANK к приведенной выше формуле.

получить первое непустое значение в строке столбца 1

Получить первое непустое значение в столбце или строке, игнорируя ошибки
Получить первое непустое значение в столбце или строке, включая ошибки


Получить первое непустое значение в столбце или строке, игнорируя ошибки

Чтобы получить первое непустое значение в списке как показано выше игнорирование ошибок, вы можете использовать функцию ИНДЕКС, чтобы найти непустые ячейки. Затем вы можете использовать ПОИСКПОЗ, чтобы найти его положение, и которое будет передано в другой ИНДЕКС, чтобы получить значение в этой позиции.

Общий синтаксис

=INDEX(range,MATCH(TRUE,INDEX((range<>0),0),0))

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

Чтобы получить первое непустое значение в списке без учета ошибок, скопируйте или введите формулу ниже в ячейку E4 и нажмите Enter чтобы получить результат:

= ИНДЕКС (B4: B15, ПОИСКПОЗ (ИСТИНА; ИНДЕКС ((B4: B15<> 0), 0), 0))

получить первое непустое значение в строке столбца 2

Пояснение формулы

=INDEX(B4:B15,MATCH(TRUE,INDEX((B4:B15<>0),0),0))

  • ИНДЕКС ((B4: B15 <> 0), 0): Фрагмент оценивает каждое значение в диапазоне B4: B15. Если ячейка пуста, она вернет FLASE; Если ячейка содержит ошибку, сниппет сам вернет ошибку; И если ячейка содержит число или текст, будет возвращено ИСТИНА. Поскольку row_num аргумент этой формулы ИНДЕКС: 0, поэтому фрагмент вернет массив значений для всего столбца следующим образом: {ЛОЖЬ; # ССЫЛКА!; ИСТИНА; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ИСТИНА; ИСТИНА; ЛОЖЬ; ИСТИНА}.
  • МАТЧ (ИСТИНА;ИНДЕКС ((B4: B15 <> 0), 0), 0) = МАТЧ (ИСТИНА;{ЛОЖЬ; # ССЫЛКА!; ИСТИНА; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ИСТИНА; ИСТИНА; ЛОЖЬ; ИСТИНА}, 0): Наблюдения и советы этой статьи мы подготовили на основании опыта команды match_type 0 заставляет функцию ПОИСКПОЗ возвращать позицию первого точного ИСТИНА в массиве. Итак, функция вернет 3.
  • ИНДЕКС (B4: B15,МАТЧ (ИСТИНА;ИНДЕКС ((B4: B15 <> 0), 0), 0)) = ИНДЕКС (B4: B15;3): Затем функция ИНДЕКС возвращает 3rd значение в диапазоне B4: B15, Которая является extendoffice.

Получить первое непустое значение в столбце или строке, включая ошибки

Чтобы получить первое непустое значение в списке, включая ошибки, вы можете просто использовать функцию ISBLANK, чтобы проверить ячейки в списке, являются ли они пустыми или нет. Затем ИНДЕКС вернет первое непустое значение в соответствии с позицией, предоставленной ПОИСКПОЗ.

Общий синтаксис

=INDEX(range,MATCH(FALSE,ISBLANK(range),0))

√ Примечание. Это формула массива, требующая ввода с помощью Ctrl + Shift + Enter.

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

Чтобы получить первое непустое значение в списке, включая ошибки, скопируйте или введите формулу ниже в ячейку E7 и нажмите Ctrl + Shift + Enter чтобы получить результат:

= ИНДЕКС (B4: B15, ПОИСКПОЗ (ЛОЖЬ; ЕСТЬ ПУСТО (B4: B15), 0))

получить первое непустое значение в строке столбца 3

Пояснение формулы

=INDEX(B4:B15,MATCH(FALSE,ISBLANK(B4:B15),0))

  • ISBLANK (B4: B15): Функция ISBLANK проверяет, находятся ли ячейки в диапазоне B4: B15 пустые или нет. Если да, будет возвращено ИСТИНА; В противном случае будет возвращено ЛОЖЬ. Итак, функция сгенерирует такой массив: {ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ИСТИНА; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ}.
  • МАТЧ (ЛОЖЬ;ISBLANK (B4: B15), 0) = МАТЧ (ЛОЖЬ;{ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ИСТИНА; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ}, 0): Наблюдения и советы этой статьи мы подготовили на основании опыта команды match_type 0 заставляет функцию ПОИСКПОЗ возвращать позицию первого точного НЕПРАВДА в массиве. Итак, функция вернет 2.
  • ИНДЕКС (B4: B15,МАТЧ (ЛОЖЬ;ISBLANK (B4: B15), 0)) = ИНДЕКС (B4: B15;2): Затем функция ИНДЕКС возвращает 2ое значение в диапазоне B4: B15, Которая является #REF!.

Связанные функции

Функция ИНДЕКС в Excel

Функция ИНДЕКС Excel возвращает отображаемое значение на основе заданной позиции из диапазона или массива.

Функция ПОИСКПОЗ в Excel

Функция ПОИСКПОЗ в Excel ищет определенное значение в диапазоне ячеек и возвращает относительное положение значения.


Связанные формулы

Точное совпадение с ИНДЕКСОМ и ПОИСКПОЗ

Если вам нужно найти информацию, указанную в Excel, о конкретном продукте, фильме или человеке и т. Д., Вы должны хорошо использовать комбинацию функций ИНДЕКС и ПОИСКПОЗ.

Получить первое текстовое значение в столбце

Чтобы получить первое текстовое значение из диапазона с одним столбцом, вы можете использовать формулу, основанную на функциях ИНДЕКС и ПОИСКПОЗ, а также формулу, основанную на функции ВПР.

Найдите первое частичное совпадение с помощью подстановочных знаков

Есть случаи, когда вам нужно получить позицию первого частичного совпадения, которое содержит определенное число в диапазоне числовых значений в Excel. В этом случае формула ПОИСКПОЗ и ТЕКСТ, содержащая звездочку (*), подстановочный знак, который соответствует любому количеству символов, окажет вам услугу. И если вам также нужно знать точное значение в этой позиции, вы можете добавить в формулу функцию ИНДЕКС.

Найдите первое частичное совпадение

Есть случаи, когда вам нужно получить позицию первого частичного совпадения, которое содержит определенное число в диапазоне числовых значений в Excel. В этом случае формула ПОИСКПОЗ и ТЕКСТ, содержащая звездочку (*), подстановочный знак, который соответствует любому количеству символов, окажет вам услугу. И если вам также нужно знать точное значение в этой позиции, вы можете добавить в формулу функцию ИНДЕКС.


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

Kutools for Excel — Помогает вам выделиться из толпы

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

  • Разработан для 1500 рабочих сценариев, помогает решить 80% проблем с Excel.
  • Уменьшите количество нажатий на клавиатуру и мышь каждый день, избавьтесь от усталости глаз и рук.
  • Станьте экспертом по Excel за 3 минуты. Больше не нужно запоминать какие-либо болезненные формулы и коды VBA.
  • 30-дневная неограниченная бесплатная пробная версия. 60-дневная гарантия возврата денег. Бесплатное обновление и поддержка 2 года.

Лента Excel (с Kutools for Excel установлены)


Вкладка Office — включение чтения и редактирования с вкладками в Microsoft Office (включая Excel)

  • Одна секунда для переключения между десятками открытых документов!
  • Уменьшите количество щелчков мышью на сотни каждый день, попрощайтесь с рукой мыши.
  • Повышает вашу продуктивность на 50% при просмотре и редактировании нескольких документов.
  • Добавляет эффективные вкладки в Office (включая Excel), точно так же, как Chrome, Firefox и новый Internet Explorer.

Снимок экрана Excel (с установленной вкладкой Office)

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

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);))

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

 

Ответить

Здравствуйте, форумчане! В Excel-e не новичок, пользуюсь давно, но вот перемкнуло: :-[ не получается построить формулу, выбирающую значение из первой непустой ячейки столбца. До сих пор использовал макросы или обходные пути, но чувствую, что должно быть более простое и быстрое решение. Устроит любая форма адресации — ссылка, смещение, номер строки. Заранее спасибо! :)


Позицию первой непустой ячейки можно вернуть так:
=ПОИСКПОЗ(«?»;A1:A10&»»;) — формула массива (текст и числа)
или:
=ПОИСКПОЗ(«*»;A1:A10 ;) — обычная формула (только текст)

Ну и соответственно возврат самих значений:
=ВПР(«?»;A1:A10&»»;1;) — формула массива (текст и числа) — возвращает числа также в виде текста.
и
=ВПР(«*»;A1:A10;1;) — обычная формула (только текст)

Webmoney: E350157549801 Z116603216205 R268084006579


Не «массивная» формула для поиска номера строки:
=СУММПРОИЗВ(ПОИСКПОЗ(«*?*»;(«»&A1:A23);0))

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453


Ну раз такое дело, во еще  ;)
=ПРОСМОТР(«»;A1:A10&»»;A2:A11)

Webmoney: E350157549801 Z116603216205 R268084006579



Цитата: Axacal от 27.06.2011, 13:40
Формула =ПРОСМОТР(«»;A1:A10&»»;A2:A11) на столбце со смещанным содержимым (пустые клетки, текст, числа) вообще ведет себя некорректно.

У меня работает, см. вложение.
Заодно добавил ещё свой вариантик формулы, который не предлагали ранее.

Цитата: Axacal от 27.06.2011, 13:40
Что означает приклеивание амперсандом пробела к адресу массива (A1:A10&»»)?

Замена пустых строк строками нулевой длинны.


Еще вариант немассивной:

=ПОИСКПОЗ("*?";ИНДЕКС(""&A1:A23;);)

ЦитироватьКстати, что означает приклеивание амперсандом пробела к адресу массива (A1:A10&»»)?

цифры в массиве становятся текстовыми данными


Хочется добавить:
Сцепляется не с пробелом, а со строкой нулевой длины.
Для корректной работы формулы: =ПРОСМОТР(«»;A1:A10&»»;A2:A11) требуется хотябы одна пустая верхняя ячейка.

Webmoney: E350157549801 Z116603216205 R268084006579


Возникла похожая, но «обратная» задача: найти первую пустую строку.
В принципе, мне удались решения с доп. столбцом и с формулой массива, но хочется упростить задачу.
Есть ли у кого-нибудь идеи?


пока придумалась такая формула массива:
=СУММ(C4:ИНДЕКС(C4:$C$13;ПОИСКПОЗ(» «;» «&B4:$B$13;0))*D4:ИНДЕКС(D4:$D$13;ПОИСКПОЗ(» «;» «&B4:$B$13;0)))

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453


 

caustic

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

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

Собственно,  
Как найти позицию первого сверху непустого значения в списке?  

  Функция поискпоз — находит всегда последнюю-нижнюю позицию.

 

caustic

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

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

Спасибо  
Интересно… а что означает звездочка?  

  Но, я имел в виду поиск по числам (правый столбец).  
Я эту формулу попробовал применить к числам — не получилось?  
почему?

 

Формула массива  
=МИН(ЕСЛИ($D$1:$D$20<>»»;СТРОКА($D$1:$D$20)))  
Попробуйте так, для ввода формулы нажать CTRL+SHIFT+ENTER

 

caustic

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

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

{quote}{login=}{date=31.07.2009 10:42}{thema=}{post}Формула массива  
=МИН(ЕСЛИ($D$1:$D$20<>»»;СТРОКА($D$1:$D$20)))  
Попробуйте так, для ввода формулы нажать CTRL+SHIFT+ENTER{/post}{/quote}  

  Спасибо — но не подойдет, т.к. мне нужна позиция в диапазоне а не номер строки.

 

А не то чтобы позиция первого сверху непустого значения в списке всегда будет первой, т.е. равной 1?

 

caustic

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

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

{quote}{login=KL}{date=31.07.2009 11:42}{thema=}{post}А не то чтобы позиция первого сверху непустого значения в списке всегда будет первой, т.е. равной 1?{/post}{/quote}  

  Ну в списке она будет первой, если непустая.  
Мне это нужно для того чтобы потом сложить все значения в новый список,  
а формироваться он будет путем изменения диапазона поиска отталкиваясь от уже найденных значений, т.е. используя СМЕЩ.  

  для решения вот этой задачи:  

http://www.planetaexcel.ru/forum.php?thread_id=8944

 

{quote}{login=CaustiC}{date=31.07.2009 09:55}{thema=Как найти позицию первого сверху непустого значения в списке?}{post}Функция поискпоз — находит всегда последнюю-нижнюю позицию.{/post}{/quote}  

  Это — неправда. ПОИСКПОЗ находит последнюю позицию только в случае поиска с приблизительным совпадением, а так первую. Посмотрел файл с примером, оказывается речь о позиции в диапазоне. Как насчет этого?  

  =СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;D6:D12>0;0))

 

{quote}{login=KL}{date=31.07.2009 11:49}{thema=Re: Как найти позицию первого сверху непустого значения в списке?}{post}{quote}{login=CaustiC}{date=31.07.2009 09:55}{thema=Как найти позицию первого сверху непустого значения в списке?}{post}Функция поискпоз — находит всегда последнюю-нижнюю позицию.{/post}{/quote}  

  Это — неправда. ПОИСКПОЗ находит последнюю позицию только в случае поиска с приблизительным совпадением, а так первую. Посмотрел файл с примером, оказывается речь о позиции в диапазоне. Как насчет этого?  

  =СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;D6:D12>0;0)){/post}{/quote}  

  Блин! Ну вы монстры какие то!  
Спасибо!  
Вопрос нашел свой ответ!!

 

KL  

  Подскажи — ка сделать так чтобы не по одному столбцу а по нескольким расчитывалось?  
т.е.

 

Например вот так, но это крайне ресурсоемкая формула массива (ввод с помощью {Ctrl+Shift+Enter}), если диапазон большой, то пересчет может сильно замедлиться:  

  =МИН(ЕСЛИ(D6:F12>0;СТРОКА(D6:F12)))-СТРОКА(D6)+1

 

=СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;ДЛСТР(D6:D12&E6:E12&F6:F12)>0;0))  
тоже массив.  

  вопрос-оффтоп: этот вариант наверное быстрее, т к поиски заканчиваются при нахождении непустого значения, так?

 

А, собственно, там суммпроизв не нужен.  
Он в любом случае требует ctrl+shift+enter  
=ПОИСКПОЗ(ИСТИНА;ДЛСТР(D6:D12&E6:E12&F6:F12)>0;0)

 

слэн

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

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

разница между  
=СУММПРОИЗВ(ПОИСКПОЗ(ИСТИНА;D6:D12>0;0))  
и  
{=ПОИСКПОЗ(ИСТИНА;D6:D12>0;0)}  

  менее 1%, но есть..

 

Не, меня интересует разница между =ПОИСКПОЗ(ИСТИНА;ДЛСТР(D6:D12&E6:E12&F6:F12)>0;0) и =МИН(ЕСЛИ(D6:F12>0;СТРОКА(D6:F12)))-СТРОКА(D6)+1  

  Можешь глянуть пожалуйста? кстати, а каким макросом(или чем?) вы засекаете время пересчёта?

 

Сейчас снова вдалеке от компа, но…  
1) 2-я формула предложенная мной — первое, что пришло в голову на бегу. Мне кажется есть более быстрый способ. Проверю — отпишу  
2) конкатенация может обойтись дороже, чем перебор, но надо проверить

 

Как я и предполагал, в MSO2007 (на моей машине), для полностью заполненного числами диапазона 1000 х 3, формула «=МИН(ЕСЛИ(D6:F12>0;СТРОКА(D6:F12)))-СТРОКА(D6)+1» на 35% быстрее, чем «=ПОИСКПОЗ(ИСТИНА;ДЛСТР(D6:D12&E6:E12&F6:F12)>0;0)» :-) Разница сокращается по мере опустения диапазона, при пустом диапазоне с данными в последней строке скорости практически одинаковые.

 

{quote}{login=}{date=31.07.2009 01:52}{thema=}{post}кстати, а каким макросом(или чем?) вы засекаете время пересчёта?{/post}{/quote}  

  см. надстройку RangeCalc.zip здесь:

http://www.decisionmodels.com/downloads.htm  

Очень важно: перед проведением замеров, обязательно менять режим пересчета на ручной, иначе данные будут искаженными!

 

слэн

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

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

 

{quote}{login=CaustiC}{date=31.07.2009 11:03}{thema=Re: }{post}{quote}{login=}{date=31.07.2009 10:42}{thema=}{post}Формула массива  
=МИН(ЕСЛИ($D$1:$D$20<>»»;СТРОКА($D$1:$D$20)))  
Попробуйте так, для ввода формулы нажать CTRL+SHIFT+ENTER{/post}{/quote}  

  Спасибо — но не подойдет, т.к. мне нужна позиция в диапазоне а не номер строки.{/post}{/quote}  
ИМХО, но ведь зная начальную строку диапазона достаточно ввести в формулу минус константу номер строки не входящий в диапазон. Или я не уловил глубинной сути?  
Игорь67

 

caustic

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

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

#20

03.08.2009 08:47:05

Начал пристраивать  
=МИН(ЕСЛИ(D6:F12>0;СТРОКА(D6:F12)))-СТРОКА(D6)+1  

  но заметил что если значений в таблице нет, то. показывает (-5)  
Можно обойти ф-цией Если но не красиво как то…

caustic

If you frequently analyze data in Excel, you may come across empty cells before the actual values. Instead of removing these cells, you can get the position or even the value of the first non-blank cell with formulas. In this article, we are going to show you how to find the first non-blank cell in a range in Excel.

Download Workbook

Formula

Finding the position:      {=MATCH(FALSE,ISBLANK(range),0)}

Get the value:                    {=INDEX(range,MATCH(FALSE,ISBLANK(range),0))}

* range is the reference from the work range

How it works

Excel doesn’t have a built-in formula to find the first non-blank cell in a range. However, there is ISBLANK function which checks a cell and returns a Boolean value according to its content. The function returns TRUE if cell is blank, FALSE otherwise. Thus, finding the first FALSE value means to find the first non-blank cell.

MATCH function can help to locate FALSE value. Once the position is in hand, you can use it with INDEX function to get the result.

Although VLOOKUP function can be used with a wild card “*” character, it can return only text values. If you are not familiar with INDEX & MATCH functions, please visit our guide: INDEX & MATCH: A Better Way to Look Up Data

The problem is ISBLANK function only works with a single cell. You need to use a helper column to populate TRUE and FALSE values which doesn’t sound practical. Instead, you can use an array function and not need the helper column.

Use the reference of your range of values in the ISBLANK function. This action will return an array of Boolean values. The first FALSE value indicates the position of the first non-blank cell in the range. Wrap the function with either MATCH or INDEX-MATCH combo to get the position or the value respectively.

Use Ctrl + Shift + Enter key combination instead of regular Enter key to evaluate the formula as an array formula.

Like this post? Please share to your friends:
  • Excel найти ошибка знач
  • Excel найти определенный символ
  • Excel найти одну строку в другой
  • Excel найти одинаковые ячейки на всех листах
  • Excel найти один текст в другом