Excel первая непустая ячейка строки

Это глава из книги Билла Джелена Гуру 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)).

Источник.

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

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

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.

As indicated in your comment on your question, you have 500 rows interspersed with blank cells. You want to fill blank cells with the value of the last non blank cell.

I’d write some VBA code that’d work as follows: select the range of cells you want to back fill and run this VBA:

Sub fillBlanks()
  For Each c In Selection.Cells
    If c.Value <> "" Then
      lastVal = c.Value
    Else
      c.Value = lastVal
    End If
  Next c
End Sub

basically, if the cell is empty, use the value of the last non blank cell (if there were no blank cells above, it will remain blank). Else, if the cell is not empty, save this as the last non blank cell. Repeat for every cell in the selected range.

Step by Step instructions on using this vba code — for this sample worksheet:

sample worksheet

Make sure the range is selected, press ALT+F11.

This should open the Visual Basic Editor:

Visual Basic Editor

Press F7, This should bring up the code for the activesheet. Paste the VB code from above:

add Code

Press F5 (or use the menu to run the code).

run Code

The end result should be as follows:

result

 

Подскажите пожалуйста, как сделать, чтоб в заданной ячейке возвращало значение первой/последней не пустой ячейки определенной строки таблицы???

 

{quote}{login=Антон}{date=07.08.2008 11:55}{thema=Как сделать, чтоб бралось значение первой не пустой ячейки определеннной строки таблицы?}{post}Подскажите пожалуйста, как сделать, чтоб в заданной ячейке возвращало значение первой/последней не пустой ячейки определенной строки таблицы???{/post}{/quote}  

  таблицы в смысле листа целиком? списка? построенной вами таблицы? именнованого диапазона?  

  пустые значения в строке расположены хаотически? и Вам абсолютно неизвестно каким образом значения попадают в непустые ячейки строки?

 

…построенной мною таблицы, которая имеет определенные размеры. значения в ее строках расположены не хаотически, но могут постоянно меняться, в том числе быть пустыми. Кроме того значения в строках идут в возрастающем порядке слева направо, отсюда еще одна мысль решения этой проблемы: возможно брать не первое/последнее не пустое значание, а минимальное /максимальное в этой определенной строке!

 

поска первого последнего не пустого значения в строке листа целиком    

  эксель 2003  
первое не пустое в 41 строке    
=ИНДЕКС(41:41;1;МИН(ЕСЛИ(41:41=»»;1000;СТОЛБЕЦ(41:41))))  
последнее не пустое в 41 строке  
=ИНДЕКС(41:41;1;МАКС(ЕСЛИ(41:41=»»;0;СТОЛБЕЦ(41:41))))  
формулы массива ввод через ctrl-shift-enter

 

ИНДЕКС(1:1;1;ПОИСКПОЗ(3E+307;1:1))  

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

 

{quote}{login=Антон}{date=07.08.2008 12:51}{thema=Re: Re: Как сделать, чтоб бралось значение первой не пустой ячейки определеннной строки таблицы?}{post}…построенной мною таблицы, которая имеет определенные размеры. значения в ее строках расположены не хаотически, но могут постоянно меняться, в том числе быть пустыми. Кроме того значения в строках идут в возрастающем порядке слева направо, отсюда еще одна мысль решения этой проблемы: возможно брать не первое/последнее не пустое значание, а минимальное /максимальное в этой определенной строке!{/post}{/quote}  

  тоесть вопрос о том как передать в формулу определённые номер строки таблицы?  

  для вас найти мин/макс для заданного номера строки?  

  если да то изучаем функцию смещ…..

 

{quote}{login=слэн}{date=07.08.2008 01:00}{thema=последняя непустая ячейка в строке может быть найдена так:}{post}ИНДЕКС(1:1;1;ПОИСКПОЗ(3E+307;1:1))  

  но если захотите использовать эту формулу для столбца, то в поискпоз все же лучше указать не весь столбец целиком, а его урезанную версию, с необходимым запасом, конечно..{/post}{/quote}  

  3E+307 это кто????????!!!!!!!

 

{quote}{login=DL}{date=07.08.2008 01:05}{thema=Re: последняя непустая ячейка в строке может быть найдена так:}{post}{quote}{login=слэн}{date=07.08.2008 01:00}{thema=последняя непустая ячейка в строке может быть найдена так:}{post}ИНДЕКС(1:1;1;ПОИСКПОЗ(3E+307;1:1))  

  но если захотите использовать эту формулу для столбца, то в поискпоз все же лучше указать не весь столбец целиком, а его урезанную версию, с необходимым запасом, конечно..{/post}{/quote}  

  3E+307 это кто????????!!!!!!!{/post}{/quote}  

    это такое большое число, которого заведомо не может быть в таблице :)  

  впрочем, если не нравится это, можете взять, допустим, 1E309 ..

 

просто если его нет то как оно найдётся через поискпоз?

 

{quote}{login=DL}{date=07.08.2008 01:23}{thema=про е+3000}{post}просто если его нет то как оно найдётся через поискпоз?{/post}{/quote}  

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

  кстати, индекс-то дает ссылку(т.е. само значение этой ячейки), а ее номер дает просто поискпоз

 

{quote}{login=}{date=07.08.2008 01:34}{thema=Re: про е+3000}{post}{quote}{login=DL}{date=07.08.2008 01:23}{thema=про е+3000}{post}просто если его нет то как оно найдётся через поискпоз?{/post}{/quote}  

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

  кстати, индекс-то дает ссылку(т.е. само значение этой ячейки), а ее номер дает просто поискпоз{/post}{/quote}  

  всё догнал это при условии что числа в строке расположены по возрастанию, а если есть текст или числа в беспорядке, то н/д.

 

{quote}{login=}{date=07.08.2008 01:48}{thema=Re: Re: про е+3000}{post}{quote}{login=}{date=07.08.2008 01:34}{thema=Re: про е+3000}{post}{quote}{login=DL}{date=07.08.2008 01:23}{thema=про е+3000}{post}просто если его нет то как оно найдётся через поискпоз?{/post}{/quote}  

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

  кстати, индекс-то дает ссылку(т.е. само значение этой ячейки), а ее номер дает просто поискпоз{/post}{/quote}  

  всё догнал это при условии что числа в строке расположены по возрастанию, а если есть текст или числа в беспорядке, то н/д.{/post}{/quote}  

  почему же.. не обязательно. вернее совсем и не так.

 

=ИНДЕКС(1:1;1;МАКС(ПОИСКПОЗ(3E+307;1:1);ПОИСКПОЗ(«яяяяя»;1:1)))  
получается F1, как девушка, говорит нет, а оказывается может быть…

 

«=ИНДЕКС(1:1;1;ПОИСКПОЗ(3E+307;1:1))» Эта формула работает, и находит последнюю не пустую ячейку и выводит ее значение в строке 1:1, а как найти первую не пустую ячейку?

 

Антон, а макросом не хотите?

 

Первую непустую? Это смотря откуда считать…

 

Все оказалось гораздо проще, использовал функции МАКС/МИН;)) но как найти первую не пустую ячейку все же интересно!

 

Может все же имеется ввиду последняя заполненная? Как то странно звучит «первая непустая»

 

последнюю заполненную я нашел (см. предыдущее мое сообщение), а вот первую заполненную (не пустую) — нет((

 

{quote}{login=}{date=08.08.2008 02:03}{thema=Re: }{post}последнюю заполненную я нашел (см. предыдущее мое сообщение), а вот первую заполненную (не пустую) — нет(({/post}{/quote}Вы хотя бы читайте, что в теме пишут.  
dl  
Сообщение добавлено 07.08.2008, 12:59  
поска первого последнего не пустого значения в строке листа целиком    

  эксель 2003  
первое не пустое в 41 строке    
=ИНДЕКС(41:41;1;МИН(ЕСЛИ(41:41=»»;1000;СТОЛБЕЦ(41:41))))  
последнее не пустое в 41 строке  
=ИНДЕКС(41:41;1;МАКС(ЕСЛИ(41:41=»»;0;СТОЛБЕЦ(41:41))))  
формулы массива ввод через ctrl-shift-enter  

  «первую заполненную» это разве не то же самое, что «первое не пустое»?

 

{=ИНДЕКС(1:1;1;ПОИСКПОЗ(0;-ЕПУСТО(1:1);0))}

 

Igor

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

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

Все попробовал ниче не получается , может руки не оттуда растут … поможите :)  есть столбец в нем данные (числовые).Необходимо в любую ячейку возвращать значение последней непустой ячейки в этом столбце. Заранее спасибо.

 

Михаил С.

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

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

#23

22.09.2010 16:43:22

Давайте пример — поможем.

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