Каждый пользователь Excel без проблем может найти наименьшее или наибольшее значение в диапазоне чисел, используя для этого функции: =МИН(), =МАКС() или =НАИМЕНЬШИЙ() и =НАИБОЛЬШИЙ(). Так же легко найти номер позиции исходного значения в диапазоне ячеек с помощью функции =ПОИСКПОЗ(). Но в данном примере будет более интересное решение, которое позволяет выполнить поиск ближайшего значения в Excel. Создадим формулу, которая способна находить наиболее приближенное значение к соответствию запроса пользователя. Например, несли диапазон данных не содержит значений для точного совпадения с запросом пользователя то функция ПОИСКПОЗ возвращает ошибку #Н/Д. Но пользователя вполне устроил бы и приближенный результат, не зависимо от того будет ли он немного меньше или немного больше соответствовать запросу. Важным преимуществом такой формулы заключается в том, что нет необходимости использовать условную сортировку для решения такого рода задач.
Как найти ближайшее значение в Excel?
Возьмем для примера, конкретную ситуацию. Фирма переводит склад на новое место, и чтобы полностью заполнить фуру товарами с одинаковым объемом упаковок (например, офисная бумага для принтера формат A4 по 500 листов) нужно вложить еще 220 пачке. Но желательно не перемешивать ассортимент продукции. То есть нужно постараться избежать пересорта товаров при переезде на новый склад. Заполним оставшееся пустое место в фуре пачками офисной бумаги одного и того же типа стандарта качества. У нас есть остатки по товарам всех ассортиментов:
Нам нужно выполнить поиск ближайшего меньшего значения Excel. Чтобы найти ассортимент с наиболее подходящим количеством по остаткам (не более 220 шт.) создаем формулу:
- В ячейке E2 введите значение 220 – это количество пачек офисной бумаги, которое соответствует для заполнения свободного объема в фуре.
- В ячейке E3 вводим формулу:
Подобную формулу можно использовать для поиска ближайшего значения в диапазоне Excel, а не только в одном столбце. - Для подтверждения ввода формулы нажимаем комбинацию клавиш CTRL+SHIFT+Enter, так как формула должна выполняться в массиве. Если вы сделали все правильно, то в строке формул вы должны заметить фигурные скобки.
Результат вычисления формулы для поиска наиболее приближенного значения:
В результате поедет комплект одного ассортимента бумаги тип-9 (195шт.). Так как его количество на остатках наиболее приближенно соответствует к объему в 220 пачек. Фура будет максимально возможно заполнена, а на складе будет меньше пересорта по ассортиментам товаров.
Принцип поиска ближайшего значения по формуле:
Из каждого числа остатков в диапазоне ячеек B3:B12 вычитается исходное значение в ячейке E2. Таким образом создается условная таблица значений равных этой разницы, с размером соответствующему числу ячеек в диапазоне B3:B12. Функция ABS возвращает абсолютную величину числа по модулю и в этой же условной таблице заменяет все значения отрицательных чисел на положительные (без знака минус). Из полученных данных находим наименьшее значение с помощью функции =МИН(). А функция =ПОИСКПОЗ() возвращает нам позицию в условной таблице для наименьшего значения найденного функций МИН. Полученный результат вычисления функцией ПОИСКПОЗ является аргументом для функции =ИНДЕКС(), которая возвращает нам значение ячейки находящиеся под номером позиции в диапазоне B3:B12.
Другие возможности Excel для поиска значений
Очень часто работникам офиса приходится задерживаться на работе при подготовки сложных отчетов в Excel. Но некоторые сотрудники умудряются подготовить быстрее отчеты подобные по сложности. Мастерство – это получение больших результатов при приложении меньших усилий. В чем же секрет мастерства Excel? Ответ скрывается в готовых решениях, которые позволяют решать одни и те же задачи в Excel, но значительно быстрее.
Поиск ячеек, содержащих определенные значения в таблице с тысячами строк может быть весьма трудозатратным процессом. Однако если применять соответствующие формулы Excel, то это займет пару минут времени или менее. Далее мы будем рассматривать на готовы примерах практические формулы для поиска данных по таблицам Excel с примерами их использования. В следующих статьях будет описано десятки поисковых формул. Принцип действия каждой из них будет детально разобран и схематически проиллюстрировано в картинках. Такими формулами можно определить где в таблице находятся нужные нам значения, а также получить возвращаемый результат со значением, определенным условиями в критериях запроса пользователя.
Кроме того, будут представлены вспомогательные инструменты Excel касающиеся поиска информации. Например, выделение интересующих нас значений с помощью условного форматирования. Рассмотрим также возможности автофильтра, с помощью которого можно быстро отобразить на экране только нужные нам данные. Вы узнаете, как в несколько кликов мышки открывать необходимые на данный момент диапазоны данных без использования многократно повторяемых тех же самых действий, связанных со сложным фильтрованием.
Скачать пример поиска ближайшего значения в Excel
Выясним так же как быстро сортировать данные для создания комфортного визуального анализа. Правильная сортировка позволяет повысить читабельность и восприятие информации. А также организовать структуру для быстрого визуального поиска значений, что позволит принимать более эффективные решения при визуальном анализе. Excel обладает большими возможностями в этой области. Можно сортировать данные относительно многих критериев и столбцов, а также относительно формата ячеек. В следующих статьях будет представлен целый ряд эффективных способов сортировки, которые мало известные большинству пользователям Excel.
Содержание
- Поиск ЧИСЛА ближайшего к заданному. Сортированный список в EXCEL
- Список с пустыми ячейками
- Приближенное и точное совпадение с несколькими критериями
- Базовый ИНДЕКС ПОИСКПОЗ с приближенным сопоставлением
- Базовый ИНДЕКС ПОИСКПОЗ, точное совпадение
- Чувствительное к регистру совпадение
- Точный поиск соответствия с ИНДЕКС и ПОИСКПОЗ
- Макрос для поиска ближайшего значения заданному на всех листах книги Excel
- Как найти ближайшее значение заданному на листах книги макросом VBA
- Логика работы макроса для поиска ближайшего значения заданному на всех листах
- Поиск ближайшего значения в массиве и всех дубликатов в Excel
- Как найти ближайшее большее значение по формуле в Excel
- Поиск ближайшего значения без массива в Excel
- Поиск ближайшего значения в массиве Excel
- Повторяющиеся ближайшие значения в Excel
- Без использования формул массива
- Поиск дублирующийся ближайших значений в массиве Excel
Поиск ЧИСЛА ближайшего к заданному. Сортированный список в EXCEL
history 3 апреля 2013 г.
Для поиска ЧИСЛА ближайшего к заданному, в EXCEL существуют специальные функции, например, ВПР() , но они работают только если исходный список сортирован по возрастанию или убыванию.
Пусть имеется сортированный по возрастанию список чисел (в диапазоне A4:A15 ) (см. Файл примера ).
В качестве критерия для поиска используем любое число (не обязательно из списка), введем его в ячейку С4 . Найдем значение из диапазона, ближайшее к критерию.
Для решения этой задачи в EXCEL существует функция ВПР() : = ВПР(C4;A4:A15;1;ИСТИНА)
Тот же результат можно получить с помощью функции ПРОСМОТР() и ПОИСКПОЗ() с типом сопоставления =1: = ПРОСМОТР(C4;A4:A15;A4:A12) = ИНДЕКС(A4:A15;ПОИСКПОЗ(C4;A4:A15;1))
Эти формулы работают, только если исходный список сортирован по возрастанию (наш случай).
При использовании этих формул следует помнить следующее:
- в результате поиска будет найдено наибольшее значение, которое меньше или равно, чем искомое значение (ближайшее снизу);
- как следствие предыдущего пункта: если заданное значение меньше минимального в списке поиска, то выдается ошибка;
- если столбец не отсортирован по возрастанию, то результат непредсказуем.
Чтобы найти наименьшее значение, которое больше или равно, чем искомое значение (ближайшее сверху) можно использовать функцию ПОИСКПОЗ() с типом сопоставления =-1, но для этого требуется чтобы список был отсортирован по убыванию.
Также для поиска ближайшего числа к заданному можно использовать формулы массива , которые не требуют предварительной сортировки списка. Пример приведен в статье Поиск ЧИСЛА ближайшего к заданному. Несортированный список .
Список с пустыми ячейками
Если список сортирован и содержит пустые ячейки, то ВПР() будет работать без проблем и найдет ближайшее значение, которое МЕНЬШЕ или равно заданному (4-й критерий равен ИСТИНА или опущен).
В файле примера также приведена формула, которая ищет ближайшее значение, которое БОЛЬШЕ или равно заданному.
Источник
Приближенное и точное совпадение с несколькими критериями
Для того, чтобы найти приближенное соответствие на основе более одного критерия, вы можете использовать формулу массива, основанную на ИНДЕКС и ПОИСКПОЗ, с помощью функции ЕСЛИ.
Пример формулы в G7:
Целью данной формулы является найти размер кошки, если известен ее вес.
По сути, это просто формула ИНДЕКС/ПОИСКПОЗ. Проблемой в данном случае является то, что нам нужно «отсеивать» посторонние записи в таблице.
Это делается с помощью простой функции ЕСЛИ:
Она входит в функцию ПОИСКПОЗ как массив. Значение поиска для совпадений происходит от G6, который содержит вес (7 кг в примере).
Обратите внимание, что совпадение настроено для приблизительного совпадения, установив тип_сопоставления = 1, это нужно сортировки С5:С10.
ПОИСКПОЗ возвращает позицию веса в массиве, и передается ИНДЕКСУ как номер строки. Поисковый_массив для ИНДЕКСА размеры в D5:D10, так ИНДЕКС получает размер, соответствующий положению генерируемого совпадением (номер 6 в показанном примере).
Базовый ИНДЕКС ПОИСКПОЗ с приближенным сопоставлением
Этот пример показывает, как использовать ИНДЕКС и ПОИСКПОЗ для получения класса из таблицы на основе заданного балла. Для этого требуется «приближенное соответствие», так как маловероятно , что реальная оценка существует в таблице.
Обратите внимание , что последний аргумент 1 (эквивалент ИСТИНЫ), что позволяет ПОИСКПОЗ выполнить приблизительное совпадение на значения , перечисленные в порядке возрастания. В этой конфигурации, ПОИСКПОЗ возвращает позицию первого значения, которое меньше или равно значению перекодировки.
Базовый ИНДЕКС ПОИСКПОЗ, точное совпадение
= ИНДЕКС( данные; ПОИСКПОЗ( значение; поиск_столбца ; ЛОЖЬ); столбец )
Эта формула использует ПОИСКПОЗ, чтобы получить позицию строки «Истории Игрушек» в таблице, и ИНДЕКС для извлечения значения в этой строке в колонке 2.
Обратите внимание, что последний аргумент имеет значение 0, что заставляет ПОИСКПОЗ найти точное совпадение.
ИНДЕКС с одним столбцом
В приведенном выше примере, ИНДЕКС получает массив, который содержит все данные в таблице. Тем не менее, вы можете легко переписать формулы для работы только с одним столбцом, что избавляет от необходимости указывать номер столбца:
= ИНДЕКС (E5:E9; ПОИСКПОЗ (H4; B5:B9;0)) // продажи
В каждом случае ИНДЕКС принимает массив одного столбца, который соответствует данным его извлечений, и ПОИСКПОЗ поставляет номер строки.
Чувствительное к регистру совпадение
Для выполнения чувствительного к регистру совпадения, вы можете использовать функцию СОВПАД вместе с ПОИСКПОЗ в формуле массива.
Сама по себе функция ПОИСКПОЗ не чувствительна к регистру, поэтому следующая формула получает 1:
Чтобы добавить чувствительность к регистру, мы используем функцию СОВПАД:
Которая получает массив истина/ложь значения:
Этот массив переходит в функции ПОИСКПОЗ как массив. Для поиска, мы используем значение ИСТИНА с ПОИСКПОЗ, установленным в режим точного соответствия путем установки тип_сопоставления к нулю.
ПОИСКПОЗ затем получает позицию первого найденного истинного значения: 4.
Точный поиск соответствия с ИНДЕКС и ПОИСКПОЗ
Если вам нужно сделать, чувствительный к регистру поиск, вы можете сделать это с помощью формулы массива, которая использует ИНДЕКС, ПОИСКПОЗ и СОВПАД функции.
В примере, мы используем следующую формулу
Эта формула будет извлекать текст и числовые значения. Если вы хотите получить только числа, вы можете использовать формулу, основанную на СУММПРОИЗВ.
Источник
Макрос для поиска ближайшего значения заданному на всех листах книги Excel
В данном примере предоставлен код VBA-макроса с пояснениями для поиска ближайшего значения указанному на всех листах книги в Excel.
Как найти ближайшее значение заданному на листах книги макросом VBA
Допустим, у нас есть книга Excel, которая содержит некоторое количество листов с таблицами, хранящими различные денные:
В документах, используемых экономистами или бухгалтерами больших предприятий могут храниться огромные таблицы с множеством различных числовых значений. Визуальный просмотр каждой таблицы на каждом листе для поиска ближайшего значения заданному может занять много времени. Чтобы значительно упростить задачу поиска, лучше создать собственный макрос.
Для открытия редактора используйте Alt+F11. В открывшемся окне нажмите правой кнопкой мыши на «Modules», выберите пункт «Insert» и в раскрывшемся списке – пункт «Module»:
Введите код макроса в открывшемся окне для ввода кода:
Sub Module1()
Dim strFindData As String
Dim tempArr() As Integer
Dim rgFound As Range
Dim i As Integer
Dim indexTempArr As Integer
strFindData = InputBox( «Введите данные для поиска» )
‘проверка введенных данных
If IsNumeric(strFindData) = False Then
MsgBox ( «Вы ввели не число» )
Exit Sub
Else :
strFindData = strFindData * 1
End If
For i = 1 To Worksheets.Count
With Worksheets(i).UsedRange.Cells
Set rgFound = .Find(strFindData, LookIn:=xlValues, LookAt:=xlWhole)
If Not rgFound Is Nothing Then
MsgBox ( «Найдено точное совпадение — » & rgFound & » на » & Worksheets(i).Name)
Exit Sub
‘поиск ячеек с числовыми значениями и запись этих значений в массив
Else :
For Each cl In Worksheets(i).UsedRange.Cells
If cl <> «» And IsNumeric(cl) Then
ReDim Preserve tempArr(indexTempArr)
tempArr(indexTempArr) = cl.Value * 1
indexTempArr = indexTempArr + 1
End If
Next
End If
End With
Next
‘сортировка массива по возрастанию
Dim k As Integer
Dim sortedArr As Variant
sortedArr = SortingArr(tempArr)
Worksheets.Add.Name = «Result»
For l = LBound(sortedArr) To UBound(sortedArr)
Worksheets( «Result» ).Range( «B» & l + 1) = sortedArr(l)
Next l
Worksheets( «Result» ).Range( «C1» ).FormulaLocal = _
«=ЕСЛИ(B1 & strFindData & «;СУММПРОИЗВ(МАКС((B1:B» & UBound(sortedArr) + 1 & _
» & strFindData & «)*(B1:B» & UBound(sortedArr) + 1 & «)));B1)»
Dim resultValue As Integer
resultValue = Worksheets( «Result» ).Range( «C1» ).Value
Sheets( «Result» ).Application.DisplayAlerts = False
Worksheets( «Result» ).Delete
MsgBox ( «Найдено приближенное значение — » & resultValue)
‘MsgBox («Поиск не дал результатов»)
End Sub
Function SortingArr(myTempArr, Optional First As Long = -1, Optional Last As Long = -1) As Variant
Dim i As Long , j As Long , MidEl As Variant , t As Variant
On Error Resume Next
First = IIf(First = -1, LBound(myTempArr), First)
Last = IIf(Last = -1, UBound(myTempArr), Last)
i = First
j = Last
MidEl = myTempArr((First + Last) 2)
Do While i If myTempArr(i) Then
i = i + 1
Else
If myTempArr(j) > MidEl Then
j = j — 1
Else
t = myTempArr(i)
myTempArr(i) = myTempArr(j)
myTempArr(j) = t
i = i + 1
j = j — 1
End If
End If
Loop
If First Then Call SortingArr(myTempArr, First, j)
If i Then Call SortingArr(myTempArr, i, Last)
SortingArr = myTempArr
End Function
Теперь для поиска ближайшего значения заданному на всех листах можно воспользоваться макросом, для вызова которого необходимо выбрать вкладку «Вид», нажать на кнопку «Макросы» (ALT+F8), в открывшемся окне выбрать название требуемого модуля и нажать «Выполнить»:
В окне нашего пользовательского VBA-макроса введите значение 78 для поиска на всех листах книги. И нажмите ОК:
В результате макрос нас информирует о том, что найдено значение 78 на Лист2:
Теперь введите значение 35 которого нет на листах. Но наш VBA макрос не растерялся. В место традиционного «Значения не найдено :(» он выполнил поиск и нашел нам максимально приблизительное значение к исходному (35):
Теперь чтобы узнать на каком листе находится найденное максимально приближенное значение нам всего лишь нужно еще раз в форму поиска ввести его (29) для повторного поиска.
Логика работы макроса для поиска ближайшего значения заданному на всех листах
В первую очередь организуем ввод данных через InputBox и проверку типа данных, полученных на вход (IsNumeric). Если введено не число, макрос прекратит свою работу с соответствующим сообщением.
Последующий код макроса можно условно разделить на две части: поиск точного совпадения числа и нахождение ближайшего ему значения.
В диапазоне имеющихся значений может находиться число, равное критерию поиска – введенному числовому значению. В этом случае результатом выполнения макроса будет данное число с надписью: «Найдено точное совпадение».
Примечание: поскольку поиск ведется по всем листам книги, используем выражение «For i = 1 To Worksheets.Count» для перебора листов в цикле. Поскольку ячеек на листе может быть огромное множество, с помощью свойства UsedRange организовываем поиск только в используемой области ячеек.
Если точное совпадение не найдено, выполняется участок кода, который выбирает все числовые значения из ячеек всех листов и заполняет ими массив данных tempArr с последующей сортировкой с использованием функции Function QuickSort (реализована отдельно для удобства).
Для упрощения кода, данные из отсортированного массива передаются в ячейки нового листа (Worksheets.Add.Name = «Result») с названием «Result». Затем в соседней ячейке используется формула Excel для поиска ближайшего числа в диапазоне:
Поскольку новый лист необходим только для промежуточных расчетов, полученное максимально приближенное значение передаем в переменную resultValue, а лист «Result» удаляем. Для вывода искомого значения используем метод MsgBox («Найдено приближенное — » & resultValue).
Полезный совет! Чтобы выполнить макросом поиск по всех листах книги Excel не только числовые значение, а и текстовые измените параметры функции .Find(), которая находится на 29-ой строке кода. Так же не забудьте отключить проверку типа данных IsNumeric(strFindData) закомментировав строки 16-18.
Примечание: при выполнении данного макроса могут возникать некоторые ошибки, так как во избежание нагромождения кода в нем были упущены проверки типов данных и некоторые другие условия. Также можно добавить новую функцию, выполняющую поиск ближайшего значения путем перебора элементов массива вместо использования временного листа «Result».
Источник
Поиск ближайшего значения в массиве и всех дубликатов в Excel
В данном примере Excel будем искать ячейки с наиболее близкими значениями к какому-то числу, выбранному пользователем (меньшими, большими, равными — без разницы. Важно, чтобы они были как можно ближе к искомому значению).
Как найти ближайшее большее значение по формуле в Excel
Начнем с простой таблицы, в которой имеется список имен и соответствующие им баллы.
Сразу стоит отметить что для некоторых имен число баллов повторяются.
Хотелось бы, чтобы Excel вернул значения баллов, которые являются наиболее близкими к числу, введенному в исходной ячейке G2 рабочего листа, а также и имена, соответствующие тем значениям.
По одному запросу нужно получить ближайшее значение числа баллов и соответствующее ему имя.
Поиск ближайшего значения без массива в Excel
Одним из простых способов решения проблемы является использование вспомогательного столбца. В ячейках этого столбца будут находиться абсолютные значения разности исходного числа и баллов из списка.
Разумеется, решение нашей проблемы будет найдено в строке, в которой это значение является наименьшим.
Чтобы выбрать соответствующее значение и соответствующее ему имя, достаточно использовать следующие формулы с использованием функций ИНДЕКС и ПОИСКПОЗ. Для ближайшего значения:
Для имени соответствующему ближайшему значению:
Где столбец «D» — наш вспомогательный столбец, а столбец «B» — столбец с именами. Сразу же добавлю (для ясности), что столбец «C» является столбцом со значениями баллов.
Поиск ближайшего значения в массиве Excel
Решение «хардкор» с использованием формул массива (для любителей и тех, кто просто хочет потренироваться в создании формул массива).
Поиск ближайшего значения в массиве (CTRL+SHIFT+ENTER):
Поиск соответствующего ему имени в массиве (CTRL+SHIFT+ENTER):
Повторяющиеся ближайшие значения в Excel
Два способа, которые показаны выше, возвращают только одно значение. Поэтому, когда нескольким именам соответствуют равные значения баллов, формула возвращает только первое имя из списка.
Итак, каким же образом можно заставить Excel вернуть список всех имен с интересующими нас значениями баллов при наличии дубликатов ближайших значений?
Есть два решения с использованием вспомогательного столбца. Первое без, а второе с использованием формул массива.
Сначала подготовим для себя вспомогательный столбец. Первая ячейка будет содержать формулу:
которую затем перетягиваем (копируем) в другие ячейки вспомогательного столбца.
Формула должна возвращать номер строки, в которой находится значение, наиболее близкое к искомому. В противном случае возвращает пробел.
Без использования формул массива
Вспомогательный столбец уже готов, мы можем вернуться к нашему поиску.
В первой ячейке диапазона, в котором вы хотите иметь список всех имен, введите следующую формулу:
а в ячейку ниже, которая будет возвращать следующее имя, введите формулу:
=»&» «))))’ >
которую затем скопируйте еще ниже. В результате все выглядит более или менее так, как показано на рисунке ниже. Как видите, в результате работы указанных формул вы получаете список всех имен, которые соответствуют искомому критерию.
Поиск дублирующийся ближайших значений в массиве Excel
В завершении то же самое, но с использованием формул массива (мы используем вспомогательный столбец, описанный ранее).
Выбираем диапазон ячеек, в которых мы хотим иметь список имен (например, G15:G19) и используем формулу массива:
0″)))))’ >
Формула точно вернет то, что вы ожидаете. Во всех «не соответствующих результатам» ячейках формула вернет код ошибки. При необходимости их легко удалить или поместить в аргументы функции ЕСЛИОШИБКА.
Источник
IrrrrrroK Пользователь Сообщений: 2 |
Добрый день. Помогите пожалуйста разобраться. Есть список товаров. Для каждого из них — есть объём места хранения текущий и тот который должен быть. Нужно переопределить места хранения товаров. Например для 1го товара — нужно найти такой товар у которого вместимость места хранения (текущая) максимально приближена к нужной для первого товара вместимости (16800). Т.е. ищем в столбце вместимость места хранения максимально приближенное значение к 16800. ВПР не помогает, т.к. ищет совпадения символов а не численных. Можно ли использовать поиск решения в данном случае? |
IrrrrrroK Пользователь Сообщений: 2 |
Всё разобралась. Вот формула для поиска максимально приближенного числа к заданному — так сказать аналог ВПР, только сортировать ничего не нужно =ИНДЕКС(B2:B1888;ПОИСКПОЗ( МИН(ABS(B2:B1888-C2));ABS(B2:B1888-C2);0)) В C2 находится то число, приближение к которому ищем. Диапазон ячеек столбца B — столбец в котором ищем приближение. Формула вводится как формула для массива ctrl shift enter |
vikttur Пользователь Сообщений: 47199 |
#3 16.07.2012 11:45:30 Тоже формула массива: |
Для поиска ЧИСЛА ближайшего к заданному, в EXCEL существует специальные функции, например,
ВПР()
,
ПРОСМОТР()
,
ПОИСКПОЗ()
, но они работают только если исходный список сортирован по возрастанию или убыванию. Используя
формулы массива
создадим аналогичные формулы, но работающие и в случае несортированного списка.
Решение задачи поиска ближайшего числового значения в случае
сортированного
списка приведена в статье
Поиск ЧИСЛА ближайшего к заданному. Сортированный список
.
Рассмотрим задачу в более общем виде. Пусть имеется несортированный список чисел (в диапазоне
A4:A15
). (см.
Файл примера
).
В качестве критерия для поиска используем любое число, введем его в ячейку
С4
. Найдем значение из диапазона, ближайшее к критерию с помощью
формул массива
:
|
|
|
= |
ищется |
Если заданное значение меньше минимального, то выдается ошибка #Н/Д |
= |
ищется |
Если заданное значение больше максимального, то выдается ошибка #Н/Д |
= |
ищется |
если ближайшее снизу и ближайшее сверху отстоят на одинаковое расстояние от критерия, то берется ближайшее число, расположенное первым в списке (например, ближайшее к 5 в списке 2; |
= |
ищется |
если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое больше |
= |
ищется |
если обнаружено 2 ближайших числа (одно больше, другое меньше критерия), то выводится то, которое меньше |
СОВЕТ:
Для пошагового просмотра хода вычислений формул используйте клавишу
F9
.
При поиске ближайшего с дополнительным условием см. статью
Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в MS EXCEL. Несортированный список
.
Поиск приближенного числа в массиве
Автор Яна Варзова, 08.09.2015, 17:54
« назад — далее »
Доброго всем дня.
Вопрос:
1) в таблице даны значения чисел по возрастанию и, есть число, например 46:56:30.
Так вот, нужно найти в этой таблице приближенное в большую сторону (или такое же число) к 46:56:30 . В формуле можно прописать номер столбца. Ответом будет 47:33:00 (во втором столбце).
2) далее, напротив найденного уже 47:33:00, нужно записать число напротив, из последнего (правого) столбца.
Может, кто подскажет как. (Пожалуйста не VBA).
Здравствуйте.
Так подойдёт?
Предлагаю вариант формулы немного попроще.
=AGGREGATE(15;6;A$1:M$31/(A$1:M$31>Q3);1)
И вторая формула
=IFERROR(INDEX(A$1:M$31;AGGREGATE(15;6;ROW($1:$31)/(A$1:M$31=R3);1);COLUMNS($A:$M));"")
Ну, и вторую формулу немного изменить:
=ЕСЛИОШИБКА(ИНДЕКС(M$1:M$31;АГРЕГАТ(15;6;СТРОКА($1:$31)/(A$1:M$31=R3);1));"")
Невозможно передать здесь столько моей радости.
Глядя на формулы, которые вы мне щедро и любезно предоставили, поняла, что знания мои по Excel узки.
Всем моим помощникам по решению вопроса Благодарность и низкий поклон.
Дай вам Бог всех Благ!
Яна здравствуйте!
Забыл предупредить Вас, что представленные Вами данные необходимо через специальную вставку умножить на единицу и потом преобразовать в формат времени и только тогда мои формулы будут работать нормально.
На всякий случай прицепляю переделанный пример Вашего файла.
Здравствуйте.
Хорошо! Посмотрю.
Czeslaw, здравствуйте. Зачем искать по всей таблице: ИНДЕКС(A$1:M$31… и затем указывать номер столбца: ЧИСЛСТОЛБ($A:$M)? Можно же сразу искать по столбцу М: ИНДЕКС(M$1:M$31…, тогда номер столбца не нужен.
И Ваша формула:
=ЕСЛИОШИБКА(ИНДЕКС(A$1:M$31;АГРЕГАТ(15;6;СТРОКА($1:$31)/(A$1:M$31=R3);1);ЧИСЛСТОЛБ($A:$M));"")
превращается в:
=ЕСЛИОШИБКА(ИНДЕКС(M$1:M$31;АГРЕГАТ(15;6;СТРОКА($1:$31)/(A$1:M$31=R3);1));"")
PS: Извиняюсь за русские формулы. Надеюсь, разберетесь.
PS:PS: Да, забыл про «плюс», ловите.
Всем доброго дня.
У меня есть формула, которая выдает ошибку.
Задача, сейчас, наоборот, нужно, чтобы, Excel нашел число 142:57:00 по правому столбцу, в котором число 0:00:00.
Есть формула, которая всегда действовала, но сейчас же выдает #н/д.
Может, подскажете в чем причина, разобраться не могу.
Приведите данные к единому формату, как указано в моем предыдущем посте.
Помогите, пожалуйста, вот еще в чем.
Сделала как вы сказали. Получилось. Но. При копировании таблицы с формулами на другой Лист выдает ошибку в ячейках #знач. И я не в силах, как быть.
Ошибочные данные в ячейке К2.
В теме несколько вопросов. какой из них решает формула, не разбирался.
=СУММПРОИЗВ(--(--(--($A$1:$L$31)>=Q3)=0))
безболезненно заменяется на
=СУММПРОИЗВ(1-(--$A$1:$L$31>=Q3))
А может, всю формулу заменить?
=НАИБОЛЬШИЙ((--A1:L31>Q3)*A1:L31;СЧЁТ(1/(--A1:L31>Q3)))
Опять данные у Вас в текстовом формате, поэтому проделайте ту же процедуру и представляю пример с моими формулами.
Czeslaw, очень прошу, объяснить мне, чтобы не ошибаться в дальнейшем, и извиняюсь, знания мои скудны в Excel, может, для вас, я спрашиваю слишком элементарные вещи:
1. Вы умножаете данные на единицу через специальную вставку. Это поняла, в интернете смотрела как это делать и так было сделано.
2. Установить формат времени. Где вы посмотрели, что у меня текстовый формат, ведь, точно вижу «все форматы —> ч:мм:сс или это и есть текстовый.
Может, вас растрою — я бы очень хотела применить ваши формулы, но не могу, потому что у меня excel 2007, а в нем Агрегата нет. Когда, поставлю 2010, то ваши формулы, и формулы других здесь, помощников — участников, будут задействованы.
Vikttur — Благодарю вас за ваше подключение к вопросу.
Цитироватьточно вижу «все форматы —> ч:мм:сс или это и есть текстовый
Если кошке прицепить хобот, она слоном не станет
Введите ячейку «ааа», назначьте ячейке формат даты — станет строка датой?
ЦитироватьОшибочные данные в ячейке К2
Это нашли?
Да, нашла ошибку. Ведь, точно.
Ввела «ааа», установила, если правильно установила, формат Дата, ничего не изменилось, если, что-то должно было измениться.
Да ничего не должно было измениться! слон — это число, кот — это «ааа»
Формат ячейки не изменяет тип данных, изменяется только визуальное представление данных. Если в ячейке число на самом деле не число, а текст, то оно не станет числом при изменении формата на числовой. И визуально не поменяется, т.к. задан формат, который неприемлем для текста.
Цитата: Яна Варзова от 11.09.2015, 09:46
ничего не изменилось, если, что-то должно было измениться.
и не должно было, vikttur хотел показать этим что если стоит некий формат ячейки, то это не значит что в ячейке значение соответствует формату.
при переносе значений из 1С в эксель бывает что в ячейке видишь число и формат ячейки общий но на самом деле там текст. вот и приходится переводить в число умножением на 1 или прибавить 0.
vikttur и cheshiki1. Поняла так, правильно?:
1. чтобы перевести ячейку в формат числа, нужно содержимое этой ячейки умножить на 1 или прибавить 0 через специальную вставку, если так не сделать, то excel будет думать что в ячейке текст, в независимости буква или цифра в ячейке этой.
2. Поставить формат Дата или Время, или еще какой-нибудь числовой формат.
Точно так. Формат не обязательно, это только внешний вид.
________________БЛАГОДАРЮ!________________
- Профессиональные приемы работы в Microsoft Excel
-
►
Обмен опытом -
►
Microsoft Excel -
►
Поиск приближенного числа в массиве
На чтение 4 мин. Просмотров 2.4k.
Для того, чтобы найти приближенное соответствие на основе более одного критерия, вы можете использовать формулу массива, основанную на ИНДЕКС и ПОИСКПОЗ, с помощью функции ЕСЛИ.
Пример формулы в G7:
{ = ИНДЕКС (D5:D10; ПОИСКПОЗ (G6; ЕСЛИ( B5:B10 = G5; С5:С10);1))}
Целью данной формулы является найти размер кошки, если известен ее вес.
По сути, это просто формула ИНДЕКС/ПОИСКПОЗ. Проблемой в данном случае является то, что нам нужно «отсеивать» посторонние записи в таблице.
Это делается с помощью простой функции ЕСЛИ:
ЕСЛИ( B5:B10 = G5; С5:С10 )
Она входит в функцию ПОИСКПОЗ как массив. Значение поиска для совпадений происходит от G6, который содержит вес (7 кг в примере).
Обратите внимание, что совпадение настроено для приблизительного совпадения, установив тип_сопоставления = 1, это нужно сортировки С5:С10.
ПОИСКПОЗ возвращает позицию веса в массиве, и передается ИНДЕКСУ как номер строки. Поисковый_массив для ИНДЕКСА размеры в D5:D10, так ИНДЕКС получает размер, соответствующий положению генерируемого совпадением (номер 6 в показанном примере).
Содержание
- Базовый ИНДЕКС ПОИСКПОЗ с приближенным сопоставлением
- Базовый ИНДЕКС ПОИСКПОЗ, точное совпадение
- Чувствительное к регистру совпадение
- Точный поиск соответствия с ИНДЕКС и ПОИСКПОЗ
Базовый ИНДЕКС ПОИСКПОЗ с приближенным сопоставлением
= ИНДЕКС( класс; ПОИСКПОЗ( балл; баллы; 1))
Этот пример показывает, как использовать ИНДЕКС и ПОИСКПОЗ для получения класса из таблицы на основе заданного балла. Для этого требуется «приближенное соответствие», так как маловероятно , что реальная оценка существует в таблице.
Обратите внимание , что последний аргумент 1 (эквивалент ИСТИНЫ), что позволяет ПОИСКПОЗ выполнить приблизительное совпадение на значения , перечисленные в порядке возрастания. В этой конфигурации, ПОИСКПОЗ возвращает позицию первого значения, которое меньше или равно значению перекодировки.
Базовый ИНДЕКС ПОИСКПОЗ, точное совпадение
= ИНДЕКС( данные; ПОИСКПОЗ( значение; поиск_столбца ; ЛОЖЬ); столбец )
Эта формула использует ПОИСКПОЗ, чтобы получить позицию строки «Истории Игрушек» в таблице, и ИНДЕКС для извлечения значения в этой строке в колонке 2.
Обратите внимание, что последний аргумент имеет значение 0, что заставляет ПОИСКПОЗ найти точное совпадение.
ИНДЕКС с одним столбцом
В приведенном выше примере, ИНДЕКС получает массив, который содержит все данные в таблице. Тем не менее, вы можете легко переписать формулы для работы только с одним столбцом, что избавляет от необходимости указывать номер столбца:
= ИНДЕКС (С5:C9; ПОИСКПОЗ (H4; B5:B9;0)) // год
= ИНДЕКС (D5:D9; ПОИСКПОЗ (H4; B5:B9;0)) // ранг
= ИНДЕКС (E5:E9; ПОИСКПОЗ (H4; B5:B9;0)) // продажи
В каждом случае ИНДЕКС принимает массив одного столбца, который соответствует данным его извлечений, и ПОИСКПОЗ поставляет номер строки.
Чувствительное к регистру совпадение
{ = ПОИСКПОЗ (ИСТИНА; СОВПАД (диапазон; значение); 0)}
Для выполнения чувствительного к регистру совпадения, вы можете использовать функцию СОВПАД вместе с ПОИСКПОЗ в формуле массива.
Сама по себе функция ПОИСКПОЗ не чувствительна к регистру, поэтому следующая формула получает 1:
= ПОИСКПОЗ («ИВАН»; B5:B11; 0 )
Чтобы добавить чувствительность к регистру, мы используем функцию СОВПАД:
СОВПАД ( B5:B11; E4 )
Которая получает массив истина/ложь значения:
{ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}
Этот массив переходит в функции ПОИСКПОЗ как массив. Для поиска, мы используем значение ИСТИНА с ПОИСКПОЗ, установленным в режим точного соответствия путем установки тип_сопоставления к нулю.
= ПОИСКПОЗ (ИСТИНА; { ЛОЖЬ; ЛОЖЬ; ЛОЖЬ; ИСТИНА; ЛОЖЬ; ЛОЖЬ; ЛОЖЬ}; 0 )
ПОИСКПОЗ затем получает позицию первого найденного истинного значения: 4.
Точный поиск соответствия с ИНДЕКС и ПОИСКПОЗ
{= ИНДЕКС (данные;ПОИСКПОЗ (ИСТИНА; СОВПАД(текст1; текст2 );0 ); номер_столбца )}
Если вам нужно сделать, чувствительный к регистру поиск, вы можете сделать это с помощью формулы массива, которая использует ИНДЕКС, ПОИСКПОЗ и СОВПАД функции.
В примере, мы используем следующую формулу
={ИНДЕКС (B5:D12; ПОИСКПОЗ (ИСТИНА; СОВПАД (F5;B5:B12);0);3)}
Эта формула будет извлекать текст и числовые значения. Если вы хотите получить только числа, вы можете использовать формулу, основанную на СУММПРОИЗВ.
Предположим, у вас есть список чисел в столбце, и теперь вам нужно найти ближайшее или ближайшее значение к заданному значению из списка чисел. Как вы с этим справляетесь? На самом деле, вы можете найти ближайшее значение или ближайшее значение в Excel, выполнив следующие действия.
- Найдите ближайшее или ближайшее число с помощью формулы массива
- Легко выбрать все ближайшие числа в диапазоне отклонения заданного значения
- Найдите ближайшую или ближайшую текстовую строку с помощью удобного инструмента
Найдите ближайшее или ближайшее число с помощью формулы массива
Например, у вас есть список чисел в столбце A, и теперь вы найдете ближайшее значение или ближайшее значение 18 из столбца A. Вы можете сделать это следующим образом:
Выберите пустую ячейку, введите формулу ниже и нажмите Shift + Ctrl + Enter ключи вместе.
=INDEX(B3:B22,MATCH(MIN(ABS(B3:B22-E2)),ABS(B3:B22-E2),0))
Примечание: В этой формуле массива {=INDEX(B3:B22,MATCH(MIN(ABS(B3:B22-E2)),ABS(B3:B22-E2),0))},
- B3: B22 это диапазон, в котором вы хотите найти конкретное значение
- E2 это значение поиска, с которым вы хотите сравнивать.
Легко выберите все ближайшие числа в диапазоне отклонения заданного значения с помощью Kutools for Excel
Иногда вам может понадобиться узнать и выбрать все близкие значения к заданному значению в диапазоне. На самом деле, мы можем определить значение отклонения, а затем применить Kutools for ExcelАвтора Выберите специальные ячейки утилита, позволяющая легко находить и выбирать все ближайшие значения в диапазоне деления заданного значения.
Kutools for Excel— Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 60-дневная пробная версия, кредитная карта не требуется! Get It Now
Например, в нашем примере мы определяем значение отклонения как 2, а данное значение равно 18. Следовательно, нам нужно найти и выбрать значения между 16 (= 18-2) и расширение 20 (= 18 + 2). Пожалуйста, просмотрите следующие шаги:
1. Выберите диапазон, в котором вы будете искать значения, наиболее близкие к заданному значению, а затем щелкните Кутулс > Выберите > Выбрать определенные ячейки.
2. В открывшемся диалоговом окне Select Specific Cells,
(1) Проверьте Ячейка вариант в Тип выбора раздел;
(2) В Конкретный тип раздел, щелкните первый раскрывающийся список и выберите Больше или равно от него и введите 16 в следующее поле, а затем выберите Меньше или равно из второго раскрывающегося списка и введите 20 в следующее поле. Смотрите левый снимок экрана:
3, Нажмите Ok кнопку, чтобы применить эту утилиту. Затем появляется диалоговое окно, в котором показано, сколько ячеек было выбрано. И вы увидите, что все ближайшие значения в диапазоне отклонения данного значения выбраны, как показано ниже:
Найдите ближайшую или ближайшую текстовую строку с помощью удобного инструмента
Если у вас есть Kutools for Excel установлен, вы можете применить его функцию нечеткого поиска, чтобы легко найти ближайшие текстовые строки из заданного диапазона в Excel. Пожалуйста, сделайте следующее:
Kutools for Excel— Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная 60-дневная пробная версия, кредитная карта не требуется! Get It Now
1. Нажмите Кутулс > Найти > Нечеткий поиск , чтобы включить панель нечеткого поиска в вашей книге.
2. На панели нечеткого поиска настройте следующим образом ;
(1) Проверьте Указанный вариант и выберите диапазон, в котором вы будете искать ближайшие текстовые строки;
(2) Проверьте Найти по указанному тексту вариант;
(3) Перейдите к Текст поле и введите указанный текст, ближайшие текстовые строки которого вы найдете;
(4) В Максимальное количество разных символов поле, пожалуйста, введите номер. В моем случае я набираю 1;
(5) В Длина строки ячеек не менее поле, пожалуйста, введите номер. В моем случае я набираю 5;
3, Нажмите Найти кнопку.
Теперь разверните результаты поиска, и вы увидите, что все ближайшие текстовые строки перечислены в большом количестве. Смотрите скриншот:
Демо: выберите все ближайшие значения в диапазоне отклонения от заданного значения
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Комментарии (42)
Оценок пока нет. Оцените первым!
Поиск наиболее приближенного из таблицы |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
0 / 0 / 0 Регистрация: 21.07.2016 Сообщений: 119 |
||
1 |
||
Найти число которое приближено к заданному числу, но меньшне его21.10.2016, 13:52. Показов 2363. Ответов 4
А1 200 Вложения
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
21.10.2016, 13:52 |
4 |
866 / 510 / 162 Регистрация: 30.03.2013 Сообщений: 1,048 |
|
21.10.2016, 14:02 |
2 |
Сообщение было отмечено tankwar121 как решение РешениеПредлагаю такую формулу Код =AGGREGATE(14;6;A1:A500/(A1:A500<=D2);1) Код =АГРЕГАТ(14;6;A1:A500/(A1:A500<=D2);1)
1 |
0 / 0 / 0 Регистрация: 21.07.2016 Сообщений: 119 |
|
21.10.2016, 14:20 [ТС] |
3 |
Czeslav, Спасибо! все работает!
0 |
2640 / 1697 / 694 Регистрация: 04.09.2015 Сообщений: 3,367 |
|
21.10.2016, 21:35 |
4 |
Сообщение было отмечено tankwar121 как решение РешениеФормулы массива Код =МАКС(ЕСЛИ(A1:A500<=D2;A1:A500)) или Код =МАКС((A1:A500<=D2)*A1:A500)
1 |
0 / 0 / 0 Регистрация: 21.07.2016 Сообщений: 119 |
|
21.10.2016, 22:35 [ТС] |
5 |
AlexM, спасибо
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
21.10.2016, 22:35 |
5 |