Excel выбрать ненулевые значения

Вытащить ненулевые значения из таблицы в столбец

tuls

Дата: Четверг, 03.08.2017, 16:05 |
Сообщение № 1

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

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

Сообщений: 13


Репутация:

0

±

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


Excel 2003

Товарищи, добрый день!
Барахтаюсь уже много дней, пытаясь составить регистр для расчета НДФЛ. Многие вопросы уже смог решить, но еще больше не получается.
Вот один из них. Вроде простой, но никак не срастается.
Есть простая таблица. В столбце месяцы, в строках коды дохода. Естественно не в каждом месяце. Так вот значения больше нуля нужно вытянуть в один столбец, в котором каждый месяц повторяется столько раз, сколько в нем вычетов.
Дополнительные наглые требования: не использовать макросы (слишком сложно для меня) и не использовать динамические диапазоны (так как лист будет копироваться по числу сотрудников и не хочу проблем на сводном листе).

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

4562113.xls
(21.0 Kb)


Использую только Excel 2003. Так сложились звезды.

 

Ответить

_Boroda_

Дата: Четверг, 03.08.2017, 16:21 |
Сообщение № 2

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Так нужно? Для 2003

Код

=ЕСЛИ(СЧЁТ(E$24:E24)+1>СЧЁТ(1/C$8:G$19);»»;ИНДЕКС(A$8:A$19;НАИМЕНЬШИЙ(ЕСЛИ(C$8:G$19;A$8:A$19+СТОЛБЕЦ(C25:G25)%);СТРОКА(E1))))

Код

=ЕСЛИ(E25=»»;»»;ИНДЕКС(A$6:G$6;ОСТАТ(НАИМЕНЬШИЙ(ЕСЛИ(C$8:G$19;A$8:A$19+СТОЛБЕЦ(C25:G25)%);СТРОКА(E1));1)/1%+0,1))

Код

=ЕСЛИ(E25=»»;»»;ИНДЕКС(C$8:G$19;E25;ПОИСКПОЗ(F25;C$6:G$6;)))

Первые две — формулы массива, вводятся одновременным нажатием Контрл Шифт Енетр


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

 

Ответить

tuls

Дата: Четверг, 03.08.2017, 16:32 |
Сообщение № 3

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

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

Сообщений: 13


Репутация:

0

±

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


Excel 2003

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


Использую только Excel 2003. Так сложились звезды.

 

Ответить

tuls

Дата: Понедельник, 07.08.2017, 11:59 |
Сообщение № 4

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

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

Сообщений: 13


Репутация:

0

±

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


Excel 2003

Я проторопился отчитаться, что все работает.
Во-первых формула работает почему-то очень медленно. Намного дольше, чем от нее можно ожидать, даже несмотря на «массивность». Но это даже не главное.
Во-вторых работает только в сделанном вами примере.
У меня же при любом смещении результирующего диапазона начинает выдавать ошибку #ССЫЛКА. Даже, когда я полностью копирую оба диапазона на другой лист или перетаскиваю чуть в сторону.
Проблема еще в том, что я не могу понять ее логику. Пошаговая проверка «Вычислить формулу» крушит Excel. Как я понял на «+СТОЛБЕЦ(C25:G25)%». Все попытки разобраться самому через F9, Ctrl+Z ясности не добавили.
Если не трудно, просветите доступно. Я не программист, но кроме меня никто не сделает.


Использую только Excel 2003. Так сложились звезды.

 

Ответить

vikttur

Дата: Понедельник, 07.08.2017, 12:05 |
Сообщение № 5

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2941

дольше, чем от нее можно ожидать, даже несмотря на «массивность»

Не «не смотря», а «благодаря» :)
Формулы массива зачастую выполняют много «лишних» вычислений, отсюда и тормоза.
преобразование № столбца в процентный вид (деление на 100). А деление — самое медленное из четырех математических операций (+, *, -, /)
Возможно, при применении оператора % происходит не деление, а какие-то другие преобразования…

Сообщение отредактировал viktturПонедельник, 07.08.2017, 12:09

 

Ответить

tuls

Дата: Понедельник, 07.08.2017, 12:43 |
Сообщение № 6

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

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

Сообщений: 13


Репутация:

0

±

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


Excel 2003

Это я понял, хотя не понял, зачем. Вероятно, что из-за изменения номера столбца и не работает формула при перемещении. Но я не понимаю какой результат это деление дает.
С куском СЧЁТ(E$24:E24)+1>СЧЁТ(1/C$8:G$19) более менее понятно, а с процентом нет.


Использую только Excel 2003. Так сложились звезды.

 

Ответить

_Boroda_

Дата: Понедельник, 07.08.2017, 13:23 |
Сообщение № 7

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

На самом деле в первой формуле СТОЛБЕЦ не нужно, мы ж там строки выковыриваем

Код

=ЕСЛИ(СЧЁТ(E$24:E24)+1>СЧЁТ(1/C$8:G$19);»»;ИНДЕКС(A$8:A$19;НАИМЕНЬШИЙ(ЕСЛИ(C$8:G$19;A$8:A$19);СТРОКА(E1))))

А вот во второй нужен
кусок

Код

ЕСЛИ(C$8:G$19;A$8:A$19+СТОЛБЕЦ(C25:G25)%)

дает массив {1,03;ЛОЖЬ;ЛОЖЬ;1,06;ЛОЖЬ:2,03;ЛОЖЬ;…, откуда мы вынимаем n-й наименьший (например, 3-й — 2,03), берем от него остаток от деления на 1 — 0,03, делим на 1%, получаем 3 — это и есть искомый столбец, который мы потом вынимаем ИНДЕКСом из массива A$6:G$6

А если в своем файле что-то не получается, то просто приложите его кусок. Словами сложно


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

 

Ответить

vikttur

Дата: Понедельник, 07.08.2017, 13:23 |
Сообщение № 8

Группа: Друзья

Ранг: Участник клуба

Сообщений: 2941

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

Вариант с облегченными формулами. Номера счетов обязательно в возрастающем порядке.
Отображение нулевых значений скрыто (галка в параметрах листа).

Используется доп. столбец для определения граничного числа:

Код

=СЧЁТЕСЛИ(C8:G8;»>0″)+H8

Месяц:

Код

=ЕСЛИ(СТРОКА(A1)>$H$5;;ИНДЕКС($A$8:$A$19;ПОИСКПОЗ(СТРОКА(A1);$H$8:$H$19)))

Счет (формула массива):

Код

=ЕСЛИ(B25;НАИМЕНЬШИЙ(ЕСЛИ(ИНДЕКС($C$8:$G$19;B25;)>0;$C$6:$G$6);СЧЁТЕСЛИ($B$25:B25;B25));)

Сумма:

Код

=ЕСЛИ(B25;ИНДЕКС($C$8:$G$19;B25;ПОИСКПОЗ(C25;$C$6:$G$6;));)

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

9957956.xls
(34.0 Kb)

 

Ответить

tuls

Дата: Понедельник, 07.08.2017, 14:09 |
Сообщение № 9

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

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

Сообщений: 13


Репутация:

0

±

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


Excel 2003

Я не знаю, можно ли так делать, но вложу слегка подчищенную полную страницу расчета по сотруднику. Там много связей, и я ее пол-дня чистить буду от ошибок.
Не работает у меня «ваша» формула вставленная на красном поле — серая на том же месте, где в первом файле (пытался сохранить ссылки), и коричневая справа — куда я хотел переместить ее.
Тяжесть формулы меня смущает, так как таких листов будет около десятка плюс сводный лист, на который планирую всех вывести.
Заранее спасибо за помощь. Буду думать дальше.

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

1271542.xls
(99.0 Kb)


Использую только Excel 2003. Так сложились звезды.

 

Ответить

_Boroda_

Дата: Понедельник, 07.08.2017, 14:23 |
Сообщение № 10

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

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

Сообщений: 16618


Репутация:

6465

±

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


2003; 2007; 2010; 2013 RUS

Или так

Код

=ЕСЛИ(Q24=»»;»»;ИНДЕКС(A$5:S$5;ОСТАТ(НАИМЕНЬШИЙ(ЕСЛИ(O$7:S$18;M$7:M$18+СТОЛБЕЦ(O24:S24)%);СТРОКА(AD1));1)/1%+0,1))

или так

Код

=ЕСЛИ(Q24=»»;»»;ИНДЕКС(O$5:S$5;ОСТАТ(НАИМЕНЬШИЙ(ЕСЛИ(O$7:S$18;M$7:M$18+СТОЛБЕЦ(O24:S24)%-СТОЛБЕЦ($N24)%);СТРОКА(AD1));1)/1%+0,1))

Если диапазоны реально большие, а не как в файле — 12*5, то конечно будет тормозить. Виктор об этом выше уже писал


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

 

Ответить

Содержание

  1. Найти первое непустое значение в строке
  2. Выбрать ненулевые значения excel
  3. Как найти первое ненулевое значение и вернуть соответствующий заголовок столбца в Excel?
  4. Найдите первое ненулевое значение и верните соответствующий заголовок столбца с формулой
  5. Выбрать ненулевые значения excel
  6. Получить первое, последнее или определенное значение или совпадение по определенному критерию
  7. Получить первое не пустое значение в списке
  8. Получить первое текстовое значение в списке
  9. Получить первое текстовое значение с ГПР
  10. Получить позицию последнего совпадения
  11. Получить последнее совпадение содержимого ячейки
  12. Получить n-е совпадение
  13. Получить n-ое совпадение с ИНДЕКС/ПОИСКПОЗ
  14. Получить n-ое совпадение с ВПР
  15. Если ячейка содержит одну из многих вещей
  16. Поиск первой ошибки
  17. Поиск следующего наибольшего значения
  18. Несколько совпадений в списке, разделенных запятой
  19. Частичное совпадение чисел с шаблоном
  20. Частичное совпадение с ВПР
  21. Положение первого частичного совпадения

Найти первое непустое значение в строке

Задача: требуется формула, которая позволяла найти первое непустое значение в строке, т.е., возвращала бы номер первой непустой ячейки в строке. Предположим, что данные представлены в столбцах С: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)).

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

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

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

Источник

Выбрать ненулевые значения excel

Как найти первое ненулевое значение и вернуть соответствующий заголовок столбца в Excel?

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

Найдите первое ненулевое значение и верните соответствующий заголовок столбца с формулой

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

Введите эту формулу: =INDEX($B$1:$I$1,MATCH(TRUE,INDEX(B2:I2<>0,),0)) в пустую ячейку, где вы хотите найти результат, K2, например, а затем перетащите дескриптор заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, и все соответствующие заголовки столбцов первого ненулевого значения будут возвращены, как показано на следующем снимке экрана:

Внимание: В приведенной выше формуле B1: I1 заголовки столбцов, которые вы хотите вернуть, B2: I2 это данные строки, в которых вы хотите найти первое ненулевое значение.

Источник

Выбрать ненулевые значения excel

Здравствуйте.
Помогите решить вопрос.

Есть простой столбец, который в редких местах заполнен текстом.
Напротив — стоят два других столбца, с датами.
Как должна выглядеть формула, которая находила бы последнее в столбце — ненулевое и непустое значение и сопоставляла бы его по строке — со столбцами с датами — и помещала найденную дату в ячейку над столбцом?
(значение на которое реагирует формула — либо текст, либо число отличное от нуля)
Причем желательно сделать это формулой, без использования макросов и диспетчера имен.

Здравствуйте.
Помогите решить вопрос.

Есть простой столбец, который в редких местах заполнен текстом.
Напротив — стоят два других столбца, с датами.
Как должна выглядеть формула, которая находила бы последнее в столбце — ненулевое и непустое значение и сопоставляла бы его по строке — со столбцами с датами — и помещала найденную дату в ячейку над столбцом?
(значение на которое реагирует формула — либо текст, либо число отличное от нуля)
Причем желательно сделать это формулой, без использования макросов и диспетчера имен. cerber412

Сообщение Здравствуйте.
Помогите решить вопрос.

Есть простой столбец, который в редких местах заполнен текстом.
Напротив — стоят два других столбца, с датами.
Как должна выглядеть формула, которая находила бы последнее в столбце — ненулевое и непустое значение и сопоставляла бы его по строке — со столбцами с датами — и помещала найденную дату в ячейку над столбцом?
(значение на которое реагирует формула — либо текст, либо число отличное от нуля)
Причем желательно сделать это формулой, без использования макросов и диспетчера имен. Автор — cerber412
Дата добавления — 24.01.2017 в 06:50

Источник

Получить первое, последнее или определенное значение или совпадение по определенному критерию

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

Если вам нужно получить первое не пустое значение (текст или число) в диапазоне в одной колонке вы можете использовать формулу массива на основе функций ИНДЕКС, ПОИСКПОЗ и ЕПУСТО.

В данном примере мы используем эту формулу:

Таким образом, суть проблемы заключается в следующем: мы хотим получить первую не пустую ячейку, но для этого нет конкретной формулы в Excel. Мы могли бы использовать ВПР с шаблоном *, но это будет работать только для текста, а не для чисел.

Таким образом, нам нужно строить функциональные возможности для нужных нам формул. Способ сделать это состоит в использовании функции массива, которая «тестирует» ячейки и возвращает массив истина/ложь значения, которые мы можем сопрягать с ПОИСКПОЗ.

Работая изнутри, ЕПУСТО оценивает ячейки в диапазоне В3: В11 и возвращает результат и массив, который выглядит следующим образом:

Каждая ЛОЖЬ представляет собой ячейку в диапазоне, который не является пустой.

Далее, ПОИСКПОЗ ищет ЛОЖЬ внутри массива и возвращает позицию первого наденного совпадения, в этом случае 2. На данный момент, формула в примере теперь выглядит следующим образом:

И, наконец, функция ИНДЕКС выводит значение в положении 2 в массиве, в этом случае число 10.

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

Если вам нужно получить первое текстовое значение в списке (диапазон один столбец), вы можете использовать функцию ВПР, чтобы установить точное соответствие, с шаблонным символом для поиска.

В данном примере формула в D7 является:

Групповой символ звездочка (*) соответствует любому текстовому значению.

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

Для поиска и получения первого текстового значения во всем диапазоне столбцов, вы можете использовать функцию ГПР с групповым символом. В примере формула в F5 является:

Значение поиска является «*», групповым символом, который соответствует одному или более текстовому значению.

Получить позицию последнего совпадения

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

В примере формула в G6:

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

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

= ПРОСМОТР( 2 ; 1 / ПОИСК ( вещи ; А1 ); вещи )

Чтобы проверить ячейку для одной из нескольких вещей, и вернуть последнее совпадение, найденное в списке, вы можете использовать формулу, основанную на ПРОСМОТР и ПОИСК функций. В случае нескольких найденных совпадений, формула вернет последнее совпадение из списка «вещей».

В примере формула в С5:

Получить n-е совпадение

= НАИМЕНЬШИЙ( ЕСЛИ( логический тест; СТРОКА( список ) — МИН( СТРОКА( список )) + 1 ); n )

Для того, чтобы получить позицию n-го совпадения (например, второе значение соответствия заданному, третье значение соответствия и т.д.), вы можете использовать формулу, основанную на функции НАИМЕНЬШИЙ.

= НАИМЕНЬШИЙ( ЕСЛИ( список = E5 ; СТРОКА( список ) — МИН( СТРОКА( список )) + 1 ); F5 )

Эта формула возвращает позицию второго появления «красных» в списке.

Сутью этой формулы является функция НАИМЕНЬШИЙ, которая просто возвращает n-е наименьшее значение в списке значений, которое соответствует номеру строки. Номера строк были «отфильтрованы» функцией ЕСЛИ, которая применяет логику для совпадения.

Получить n-ое совпадение с ИНДЕКС/ПОИСКПОЗ

Чтобы получить n-ое совпадение, используя ИНДЕКС и ПОИСКПОЗ, вы можете использовать формулу массива с функциями ЕСЛИ и НАИМЕНЬШИЙ, чтобы выяснить номер строки совпадения.

Получить n-ое совпадение с ВПР

Чтобы получить n-ое совпадение с ВПР, вам необходимо добавить вспомогательный столбец в таблицу , которая строит уникальный идентификатор , который включает счетчик.

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

В примере, формула ячейки J6 вспомогательного столбца выглядит следующим образом:

Если ячейка содержит одну из многих вещей

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

Эта формула использует два названных диапазона: E5: E8 называется «вещи» и F5: F8 называется «Результаты». Убедитесь, что вы используете диапазоны имен с одинаковыми именами (на основе ваших данных). Если вы не хотите использовать именованные диапазоны, используйте абсолютные ссылки вместо этого.

Поиск первой ошибки

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

В приведенном примере формула:

Работая изнутри, функция ЕОШИБКА возвращает значение ИСТИНА, если значение является признанной ошибкой, и ЛОЖЬ, если нет.

Когда дается диапазон ячеек (массив ячеек) функция ЕОШИБКА будет возвращать массив истина/ложь значений. В примере, это результирующий массив выглядит следующим образом:

Обратите внимание, что 6-е значение (что соответствует 6-й ячейке в диапазоне) истинно, так как ячейка В9 содержит #Н/A.

Поиск следующего наибольшего значения

=ИНДЕКС ( данные; ПОИСКПОЗ( поиск ; значения ) + 1 )

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

Несколько совпадений в списке, разделенных запятой

Для поиска и извлечения нескольких совпадений, разделенных запятыми (в одной ячейке), вы можете использовать функцию ЕСЛИ с функцией ОБЪЕДИНИТЬ.

Эта формула использует «имя» — именованный диапазон (B5: B11) и «группа» — (C5: C11).

Частичное совпадение чисел с шаблоном

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

Excel поддерживает символы подстановки «*» и «?». Тем не менее, если вы используете специальные символы с номером, вы будете преобразовывать числовое значение в текстовое значение. Другими словами, «*» & 99 & «*» = «* 99 *» (текстовая строка).

Если попытаться найти текстовое значение в диапазоне чисел, совпадение завершится неудачно.

Решение

Одно из решений заключается в преобразовании чисел в диапазоне поиска для текстовых значений, а затем сделать нормальный поиск с ПОИСКПОЗ, ВПР и т.д.

Другой вариант

Другой способ, чтобы преобразовать числа в текст, чтобы сцепить пустую строку. Эта формула работает так же, как выше формуле:

Частичное совпадение с ВПР

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

В примере формула ВПР выглядит следующим образом:

В этой формуле, значение представляет собой именованный диапазон, который относится к Н2, а также данные , представляет собой именованный диапазон , который относится к B3: E102. Без названных диапазонов, формула может быть записана следующим образом:

Положение первого частичного совпадения

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

В примере формула в Е7:

Функция ПОИСКПОЗ возвращает позицию или «индекс» в первом совпадении на основании значения поиска в диапазоне.

ПОИСКПОЗ поддерживает подстановочное согласование со звездочкой «*» (один или несколько символов) или знаком вопроса «?» (один символ), но только тогда, когда третий аргумент, тип_сопоставления, установлен в ЛОЖЬ или ноль.

Источник

=IF(ROWS(AA$38:AA38)>COUNTIF(U$38:U$1000,"<>0"),"",INDEX(U$38:U$1000,SMALL(IF(U$38:U$1000>0,ROW(U$38:U$1000)-ROW(U$38)+1),ROWS(AA$38:AA38))))

Я пытаюсь использовать эту формулу для поиска и возврата всех ненулевых значений в столбце данных (начиная со строки 38), но я не знаю, сколько строк будет до того, как я импортирую данные. Я хотел бы иметь возможность просто автоматизировать сортировку, но если я использую (U:U) или выберу гораздо большее число, чем фактическое количество заполненных строк (например, U$38:U$20000), я получу ошибка.

Есть ли способ:

А) получить excel для автоматического изменения (U$38:U$####) на количество строк, заполненных данными? (то есть, если есть 400 строк, это изменится на (U$38:U$400).)

ИЛИ

Б) найти альтернативную формулу, которая может выбрать все ненулевые значения, не зная количества строк?

РЕДАКТИРОВАТЬ:

Как видно из изображения ниже, я настроил свою электронную таблицу так, чтобы она возвращала не только ненулевые значения (из столбца U), но также время (из столбца AG), которому оно соответствует. Проблема в том, когда я пытаюсь увеличить диапазон.

Я буду рассматривать множество разных файлов данных с разным объемом данных, поэтому я хотел бы иметь возможность автоматизировать это — и мне не приходилось возиться со всеми U$38:U$1000 каждый раз, когда мне нужно изменить диапазон. Имеет ли это смысл?

Возможно ли это с VBA?

Пример данных

2 ответа

Лучший ответ

Попробуйте это в каком-нибудь столбце:

=IFERROR(INDEX($U:$U,SMALL(ROW(myRange)*(myRange<>0),SUMPRODUCT(N(myRange=0))+ROWS($1:1))),"")

Это формула массива, и ее необходимо подтвердить, удерживая ctrl + shift при одновременном нажатии enter

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

myRange — произвольный диапазон, превышающий размер самой большой строки. Я использовал u38:u20000

enter image description here

ИЗМЕНИТЬ : чтобы вернуть значения из соответствующей строки в столбце, отличном от U, просто измените аргумент array в функции INDEX с $U:$U в нужный столбец, например: $AG:$AG

РЕДАКТИРОВАТЬ2: Если вам нужно игнорировать значения ошибок в столбце U, попробуйте эту формулу, введенную в CSE :

=IFERROR(INDEX(U:U,SMALL(ROW(myRange)*(IFERROR(--myRange,0)<>0),SUMPRODUCT(N(IFERROR(--myRange,0)=0))+ROWS($1:1))),"")


0

Ron Rosenfeld
23 Сен 2016 в 17:38

Это всего лишь исправление существующей формулы, чтобы заставить ее работать в более широком диапазоне, разрешать отрицательные значения и игнорировать пустые ячейки, но (как я подозревал) другие могут предложить более эффективные решения!

=IF(ROWS(AA$38:AA38)>COUNTIFS(U$38:U$10000,"<>0",U$38:U$10000,"<>"),"",INDEX(U$38:U$10000,SMALL(IF(U$38:U$10000<>0,ROW(U$38:U$10000)-ROW(U$38)+1),ROWS(AA$38:AA38))))

Это можно сделать более эффективным, объявив динамический диапазон с помощью диспетчера имен примерно так:

=Sheet1!$U$38:INDEX(Sheet1!$U$38:$U$10000,COUNT(Sheet1!$U$38:$U$10000))

И назвав его (скажем) DynamicRange.

Тогда формула становится: —

=IFERROR(INDEX(DynamicRange,SMALL(IF(DynamicRange<>0,ROW(DynamicRange )-ROW(INDEX( DynamicRange,1 ))+1 ),ROWS($1:1))),  "")

Это формулы массива, которые необходимо вводить с помощью CtrlShift Enter

enter image description here


0

Tom Sharpe
23 Сен 2016 в 16:41

=IF(ROWS(AA$38:AA38)>COUNTIF(U$38:U$1000,"<>0"),"",INDEX(U$38:U$1000,SMALL(IF(U$38:U$1000>0,ROW(U$38:U$1000)-ROW(U$38)+1),ROWS(AA$38:AA38))))

I’m trying to use this formula to find and return all the non-zero values in a column of data (starting from row 38), but I don’t know how many rows there will be before I import the data. I’d like to be able to just automate the sorting, but if I use (U:U) or pick a much larger number than the actual number of filled rows (eg. U$38:U$20000), I get an error.

Is there a way of either:

a) getting excel to automatically change the (U$38:U$####) to the number of rows filled with data? (ie, if there are 400 rows, it would change to (U$38:U$400).)

OR

b) finding an alternative formula that can pick out all the non-zero values, without knowing the number of rows?

EDIT:

As you can see from the image below, I’ve set up my spreadsheet so that it not only returns the non-zero values (from column U), but also the time (from column AG) that it corresponds to. The problem is when I try to increase the range.

I’ll be looking at lots of different data files with varying amounts of data, so I would like to be able to automate it — and not have to fiddle about with the all the U$38:U$1000‘s every time I need to change the range. Does that make sense?

Is it possible with VBA instead?

Example Data

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

doc lookup first ненулевой 1

Найдите первое ненулевое значение и верните соответствующий заголовок столбца с формулой


стрелка синий правый пузырь Найдите первое ненулевое значение и верните соответствующий заголовок столбца с формулой

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

Введите эту формулу: =INDEX($B$1:$I$1,MATCH(TRUE,INDEX(B2:I2<>0,),0)) в пустую ячейку, где вы хотите найти результат, K2, например, а затем перетащите дескриптор заполнения вниз к ячейкам, к которым вы хотите применить эту формулу, и все соответствующие заголовки столбцов первого ненулевого значения будут возвращены, как показано на следующем снимке экрана:

doc lookup first ненулевой 2

Внимание: В приведенной выше формуле B1: I1 заголовки столбцов, которые вы хотите вернуть, B2: I2 это данные строки, в которых вы хотите найти первое ненулевое значение.


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

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (13)


Оценок пока нет. Оцените первым!

eq

В EXCEL ранее 2016 версии нет функции, объединяющей в себе МИН и ЕСЛИ.

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

Найдем в примере наименьшие ненулевые продажи в наших минимаркетах.

Нулевые значения будем отбрасывать, т.к. это означает, что магазины закрывались на ремонт.

Будем работать с окнами аргументов (fx), чтобы разобраться в порядке и в скобках.

Для этого:

  1. В ячейку с будущим результатом вводим функцию =МИН(
    1

    2

  2. Далее после открытия аргументов с помощью кнопки fx, вводим в первый аргумент вручную с скобками — ЕСЛИ()

    3

  3. Выделяем слово ЕСЛИ два раза левой кнопкой и также нажимаем на fx 2 раза с задержкой, чтобы открыть окно аргументов.
    4
  4. В аргумент Лог_выражение выделяем весь диапазон наших продаж и прописываем условие >0
  5. В аргумент Значение_если_истина заново выделяем тот же наш диапазон и нажимаем ОК.
    5
  6. Выражение выдаст ошибку #ЗНАЧ! т.к. такая запись подразумевает использование выражений в виде массива.

    6

Поэтому ставим курсор на наше выражение и нажимаем сочетание клавиш Ctrl+Shift+Enter.

7

Если материал Вам понравился или даже пригодился, Вы можете поблагодарить автора, переведя определенную сумму по кнопке ниже:
(для перевода по карте нажмите на VISA и далее «перевести»)

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