Макрос excel по выборке

 

Natali

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

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

Добрый день, нужен макрос для выборки данных и заполнению таблицы.    
Файл стаблицами и условиями прилагаю. Помогите с макросом.

 

По Вашему алгоритму:  
1. Ищем на исходной таблице значения с номером 76232 (строки с 29 по 58)  
2. Находим максимальное АБСОЛЮТНОЕ значение из колонки N в найденных строках (161,091) и соответствующие значения Му (-1,707) и Мz(-8,428)  
3. Суммируем значения =161,091+(-1,707)+(-8,428)=150,956  
4. Находим следующее максимальное абсолютное значение из колонки N в найденных строка (160,497), Му(-1,93), Mz(-8.437)  
5. Суммируем 160,497-1,93-8,437=150,13  
6. Сравниваем — наибольший результат дает 1 комбинация (150,956)  
7. Записываем в строку 3 таблицы на листе 1 значения -161,091  -1,707 -8,428  
Пока все правильно?  
«…дальше все тоже самое, но только по колонке Му» — не понял вообще. В туже строку таблицы результатов писать? Максимальное абсолютное значение складывать с N и Мz?  

  Как надо-то?  
Наверное, было бы лучше, если б Вы в примере хотя б 2 строчки заполнили в результирующей таблице руками с пояснениями — это так получилось, это сяк и т.д.  
Пока я не могу понять алгоритм заполнения.  

    ВАУ! 44288

 

Natali

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

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

Заполнила результирующую таблицу, разным цветом выделила выбранные значения по N и My

 

Natali

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

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

Уважаемые форумчане!  

  Помогите, очень надо решить данную задачку, а знаний в макрасах чуть-чуть….

 

Natali

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

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

Макрос выборки данных по колонке N написала:  

  Public Sub Заполнить максзначение по N()  
   Const rowStart = 8  
   Const colID = 1  
   Const colN = 4    
   Const colMy = 6    
   Const colMz = 7      
   Const rowResStart = 3    
   Const colResID = 7      
   Const colResN = 2    
   Const colResMy = 3    
   Const colResMz = 4    
   Const shtSource = «1. Усилия и напряжения комбин»  
   Const shtResult = «Лист1»  

         Dim lngRow As Long  
   Dim lngInd As Long  
   Dim strRead As String  
   Dim strFind As String  
   Dim varN As Variant  
   Dim varMy As Variant  
   Dim varMz As Variant  
   Dim varNewN As Variant  
   Dim varNewMy As Variant  
   Dim varNewMz As Variant  

               lngInd = rowResStart  
   strRead = Trim$(ActiveWorkbook.Sheets(shtResult).Cells(lngInd, colResID).Value)  
   Do While strRead <> «»  

                 If IsNumeric(strRead) Then  
           varN = 0  
           varMy = 0  
           varMz = 0  
           lngRow = rowStart  
           strFind = Trim$(ActiveWorkbook.Sheets(shtSource).Cells(lngRow, colID).Value)  
           Do While strFind <> «»  

                                 If CLng(strFind) > CLng(strRead) Then Exit Do  

                                 If CLng(strFind) = CLng(strRead) Then  
                   varNewN = ActiveWorkbook.Sheets(shtSource).Cells(lngRow, colN).Value  
                   varNewMy = ActiveWorkbook.Sheets(shtSource).Cells(lngRow, colMy).Value  
                   varNewMz = ActiveWorkbook.Sheets(shtSource).Cells(lngRow, colMz).Value  

                                         If Abs(varNewN) >= Abs(varN) Then  
                       varN = varNewN  
                       varMy = varNewMy  
                       varMz = varNewMz  
                   End If  

                                     End If  

                                                   lngRow = lngRow + 1  
               strFind = Trim$(ActiveWorkbook.Sheets(shtSource).Cells(lngRow, colID).Value)  
           Loop  

                                       ActiveWorkbook.Sheets(shtResult).Cells(lngInd, colResN).Value = varN  
           ActiveWorkbook.Sheets(shtResult).Cells(lngInd, colResMy).Value = varMy  
           ActiveWorkbook.Sheets(shtResult).Cells(lngInd, colResMz).Value = varMz  

                 End If  

                 lngInd = lngInd + 1  
       strRead = Trim$(ActiveWorkbook.Sheets(shtResult).Cells(lngInd, colResID).Value)  
   Loop  

      End Sub  

      а как и что дальше незнаю……  
Помогите, пожлуйста!

 

Hugo

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

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

Честно говоря, не разобрался… слишком как-то сложно.  
Я пошёл другим путём, пока не дошёл, но заготовку могу показать, может сами доделаете быстрее.  
Нужные значения уже нашёл, осталось их скопировать в таблицу.  
Доделать аналогичный поиск по второму столбцу номеров (пока не думал, как и куда лучше вставить) и динамически определить диапазоны ( и нединамически переменные :))  

  Sub tt()  
   Dim a, b  
   a = [g3:g10] ‘ массив номеров
   b = Sheets(1).[a2:f178] ‘ массив значений
   For i = 1 To UBound(a) ‘цикл по номерам  
       If a(i, 1) > 0 Then ‘только значения объединённых ячеек  
       maxb = 0: maxb2 = 0: maxbind = 0: maxb2ind = 0 ‘обнуляем максимальные и номера нужных индексов значений массива  
           For ii = 1 To UBound(b) ‘цикл по значениям  
               If b(ii, 1) = a(i, 1) Then ‘если совпадает  
                   If Abs(b(ii, 4)) > maxb Then ‘если максимальное  
                       maxb2 = maxb: maxb2ind = maxbind ‘запоминаем предыдущее максимальное и его положение в массиве  
                       maxb = Abs(b(ii, 4)): maxbind = ii ‘запоминаем  максимальное и его положение в массиве  
                   End If  
               End If  
           Next  
           ‘сравниваем суммы  
           If Abs(b(maxbind, 4)) + Abs(b(maxbind, 5)) + Abs(b(maxbind, 6)) >= Abs(b(maxb2ind, 4)) + Abs(b(maxb2ind, 5)) + Abs(b(maxb2ind, 6)) Then  
           MsgBox maxbind ‘озвучиваем индекс нужного значения массива  
           Else  
           MsgBox maxb2ind  
           End If  
       End If  
   Next  
End Sub

 

Hugo

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

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

эээ, не по по второму столбцу номеров, а определение максимальных по My…

 

Hugo

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

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

стоп, ошибка в алгоритме определения немаксимального… после максимума меньшее не определяется.

 

Hugo

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

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

 

Hugo

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

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

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

 

Natali

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

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

Большое спасибо! это почти то, что надо )  
вот если бы для позиции он делал бы проверку не по одному номеру(из колонки G) а по обоим номерам (G и H)  
и почему то когда я добавляю новые позиции (337, 338 итд) он отказыается считать дальше…  

  А в остальном все супер!

 

Hugo

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

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

{quote}{login=Natali}{date=08.10.2010 07:22}{thema=}{post}Большое спасибо! это почти то, что надо )  
вот если бы для позиции он делал бы проверку не по одному номеру(из колонки G) а по обоим номерам (G и H)  
и почему то когда я добавляю новые позиции (337, 338 итд) он отказыается считать дальше…  

  А в остальном все супер!{/post}{/quote}  

  Да, точно, забыл массив «c» сделать динамическим. Надо так изменить этот блок:  

     a = Range(«g3:g» & Range(«G» & Rows.Count).End(xlUp).Row)  ‘ массив номеров  
   b = Sheets(1).Range(«a2:f» & Sheets(1).Range(«F» & Rows.Count).End(xlUp).Row)    ‘ массив значений  
   ReDim c(1 To Range(«G» & Rows.Count).End(xlUp).Row, 1 To 3) ‘массив результатов  

  Но тут рассчитано, что в столбце G будут объединённые попарно ячейки — иначе может места для всех значений не хватить. А так берётся двойное количество объединённых -1  + 2(шапка) — как раз хватает с хвостиком :)  
А вот про «а по обоим номерам (G и H)» не понял — где номера из Н на первом листе, и куда писать полученные данные, если их получим?  
Но имхо это можно сделать вторым аналогичным кодом вторым заходом, если вставить в этот будет затруднительно — меняем в этом коде привязку к диапазонам и всё.

 

Natali

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

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

УРРРАААА )))) работает!!!    
В том файле приведена только маленькая часть таблицы, в которую элементы из столбца H не попали…реальная таблица имеет порядка 20000 строк )    

  Мы уже получили необходимый нам результат — 6 значений! которые относятся к позиции из первого столбца. Но эта позиция состоит из нескольких элементов. (К примеру Поз. 333 из элементов 76232 и 81984). Тоесть нам надо сделать ту же самую выборку, только в более широком диапазоне

 

Hugo

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

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

Ну так если в моём коде разберётесь (я думаю можно разобраться) — его легко масштабировать и переделывать.  
А скорость на массивах позволяет и несколько разных копий кода в цепочку ставить — будет вместо 3-х секунд 6 работать…

 

Natali

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

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

разберусь! огромное спасибо! )

 

Natali

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

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

Hugo, уделите еще минуточку пожалуйста…  
Мне кажется, что решение второго максимума должно немного по другому выглядеть…  

  If Abs(b(ii, 4)) > maxb2 Then      
   If Abs(b(ii, 4)) > maxb Then  
       maxb2 = maxb: maxb2ind = maxbind      
       maxb = Abs(b(ii, 4)): maxbind = ii      
   Else                              
       maxb2 = Abs(b(ii, 4)): maxbind = ii        
   End If  
End If  

  Я правильно думаю?

 

Hugo

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

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

Да, что-то там у меня неправильно… хотя результат от Вашего кода на примере не отличается.  
Но проверка условия в Вашем коде  
If Abs(b(ii, 4)) > maxb Then  
у Вас лишняя, т.к. это проверено уже выше по коду и там уже присвоено  
maxb = Abs(b(ii, 4))  
т.е. Abs(b(ii, 4)) > maxb уже никогда не будет.  
А только Ваш код без моей первой проверки результат дат совсем другой.  
Я ведь тоже такую задачу раньше не решал — так что решаю эту головоломку на равне с Вами, тут уже не знания ВБА нужны, а чисто логика…  
Подумаю попозже, что-то пока не складывается.

 

Hugo

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

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

Вроде так правильно (на оба столбца, N и My), взгляните со стороны:  

                     If Abs(b(ii, 4)) > maxb Then    ‘если максимальное  
                       maxb2 = maxb: maxb2ind = maxbind    ‘запоминаем предыдущее максимальное и его положение в массиве  
                       maxb = Abs(b(ii, 4)): maxbind = ii    ‘запоминаем  максимальное и его положение в массиве  
                   End If  

                     If Abs(b(ii, 4)) <> maxb Then    ‘ отсекаем обработку первого максимального  
                       If Abs(b(ii, 4)) > maxb2 Then    ‘если второе максимальное  
                           maxb2 = Abs(b(ii, 4)): maxb2ind = ii    ‘запоминаем  максимальное и его положение в массиве  
                       End If  
                   End If  

                     If Abs(b(ii, 5)) > maxbmy Then    ‘если максимальное  
                       maxbmy2 = maxbmy: maxbmy2ind = maxbmyind    ‘запоминаем предыдущее максимальное и его положение в массиве  
                       maxbmy = Abs(b(ii, 5)): maxbmyind = ii    ‘запоминаем  максимальное и его положение в массиве  
                   End If  
                   If Abs(b(ii, 5)) <> maxbmy Then    ‘ отсекаем обработку первого максимального  
                       If Abs(b(ii, 5)) > maxbmy2 Then    ‘если второе максимальное  
                           maxbmy2 = Abs(b(ii, 5)): maxbmy2ind = ii    ‘запоминаем  максимальное и его положение в массиве  
                       End If  
                   End If

 

Natali

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

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

Хм…мне кажется, что у нас одно и тоже написано, только мы по разному отсекаем maxb…а в моем коде просто ошибка была в 6ой строке:  
maxb2 = Abs(b(ii, 4)): maxbind = ii  
а должно быть:  
maxb2 = Abs(b(ii, 4)): maxb2ind = ii  
И тогда все получается…  

  Скажите еще пожалуйста, вот эта строка  
maxb2 = Abs(b(ii, 4)): maxb2ind = ii  
это тоже самое что две строки:  
maxb2 = Abs(b(ii, 4))  
maxb2ind = ii  
?  

  И еще вопросик…  
For ii = 1 To UBound(b)  
Здесь не должно быть случаем  
For ii = 1 To (UBound(b)-1)  
а то он мне иногда пишет subscript out of range или что-то такое… )

 

Hugo

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

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

Да, двоеточие объединяет строки, так бывает удобнее группировать связанные действия.  
По поводу For ii = 1 To UBound(b) — посмотрите в отлfдчике, какое значение в этот момент принимает ii. Я думаю, что ii не выходит за границы, а причина в другой переменной, может перепутано типа b(i,1) вместо b(ii,1).

 

Natali

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

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

Hugo! Спасите! )))    
Итак, все у меня готово, все фенечки сделаны…  
но есть какой-то внутренний косяк, и я понять совершенно не могу, почему он возникает…  
Точнее я понимаю почему он возникает, но с чем это может быть связано — понять совершенно не могу ((    
С заполнением желтых строк — все отлично. А вот заполнение зеленых строк зависит от положения искомой строки в базе данных. Почему-то получается, если требуемая строка является первой в рассматриваемом массиве, то скрипт выдает мне какую то чушь:  
Скрипт предполагает запоминание трех максимальных значений, и потом выборку из них оптимального, а в результатом почему то является четвертый максимум… (    

  Что поделать не знаю! Может примерно подскажите в каком направлении копаться?  
<EM><STRONG>Файл удален</STRONG> — велик размер — [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>

 

Hugo

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

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

Файл взять успел.  
Кода много.  
Смотрю…

 

ситуация кажется немного прояснилась )  
Ошибка кроется где то на этапе «сравниваем суммы»…  

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

 

Hugo

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

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

В 174 строке правильно? :)  
Вот это  
               If (0.1 * Abs(b(maxbind, 4)) + Abs(b(maxbind, 5)) + Abs(b(maxbind, 6))) > (0.1 * Abs(b(maxbm3ind, 4)) + Abs(b(maxbm3ind, 5)) + Abs(b(maxbm3ind, 6))) Then  

  там не надо maxbmind?

 

Natali

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

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

Жесть (((    
это было проверено на 20 раз…потрачен целый день… ((( чертова невнимательность!  

  Спасибо Вам огромное!

 

Hugo

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

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

Легко выявил в Notepad++ — там при клике на слове подсвечиваются все такие слова.  
Так легко увидеть сбой порядка переменных, если можно так сказать :)

 

Natali

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

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

Век живи век учись! хороший прием )    
у меня правда возникало желание заменить все эти «maxbm3ind…maxm3ind» на что-то более читаемое типа «x3…y3», но лень пересилила…видимо зря )    

  Сижу оцениваю результат, с тем что было выбрано раньше «ручным» методом! После проверки 100 значений ни одного сбоя, зато отлавливаются неучтенные опасные сочетания. Я в восторге! )

 

Hugo

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

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

Красивый код получился, аккуратный такой :)  
А переменные мне и самому не нравятся, но так сначала начал — думал не о переменных, а об алгоритме, наспех буквы добавлял, чтоб отличались :)  
Так теперь заменой поменяйте.

 

Natali

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

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

нет уж! )    
пускай остаётся! как «наследие автора», на память! )

 

Natali

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

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

#30

17.10.2010 08:54:50

А можно ли как нибудь огразиновать выборку по диаграмме? )  
В каждом конкретном случае у меня есть область, имеющая 6 нижних значений и 6 верхних.    
Надо что бы полученные нами N, My, Mz он сверял со значениями диаграммы, и если они попадают в эту область, он записывал идентификатор диаграммы, если не удовлетворяется, переходил к следующей.  

   Это вообще возможно? ) Диаграммы хитрые, как их вообще описать математически не понимаю…

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

  • post_164633.jpg (74.64 КБ)

Макрос для выборки данных из листа по условию

ska

Дата: Четверг, 10.03.2016, 17:02 |
Сообщение № 1

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

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

Сообщений: 22


Репутация:

0

±

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


Excel 2010

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

Например, при вводе вручную на листе «Выборка» значения ячейки «IDДанные» требуется вставить в определенные ячейки столбца 5, столбца 6 и столбца 7 данные из определенных ячеек листа «Данные» и соответствующей строки.

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

8533266.xlsx
(13.8 Kb)

 

Ответить

китин

Дата: Четверг, 10.03.2016, 17:07 |
Сообщение № 2

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

Ранг: Экселист

Сообщений: 6973


Репутация:

1063

±

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


Excel 2007;2010;2016

Именно макрос нужен?Здесь вполне формулами решаемо. Только поконкретнее из каких столбцов данные забирать


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852

 

Ответить

ska

Дата: Четверг, 10.03.2016, 17:12 |
Сообщение № 3

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

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

Сообщений: 22


Репутация:

0

±

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


Excel 2010

Суть в том, что для некоторых случаев не будет данных в листе «Данные» и придется их вносить руками, формулы полетят.
Столбцы могут быть разными, это не важно, интересен сам пример макроса. Важно выбрать данные из определенных ячеек определенной строки листа «Данные» и вставить их в определенные ячейки той строки, куда руками ввели значение «IDДанные»

 

Ответить

ska

Дата: Четверг, 10.03.2016, 17:20 |
Сообщение № 4

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

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

Сообщений: 22


Репутация:

0

±

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


Excel 2010

Может аналогичный пример кто подскажет?

 

Ответить

Manyasha

Дата: Четверг, 10.03.2016, 18:32 |
Сообщение № 5

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

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

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


Excel 2010, 2016

ska, конкретно по Вашему примеру:
[vba]

Код

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim idData As Range
    Set idData = Intersect(Target, Columns(«b:b»))
    If Not idData Is Nothing Then
        Set shData = Sheets(«Данные»)
        For Each cell In idData
            If cell <> «» Then
                With shData
                    r = .Columns(1).Find(cell, , xlValues, xlWhole).Row
                    c = .Rows(1).Find(«Столбец5», , xlValues, xlWhole).Column
                    Cells(cell.Row, «e»).Resize(, 3) = .Cells(r, c + 1).Resize(, 3).Value
                End With
            Else
                Cells(cell.Row, «e»).Resize(, 3).ClearContents ‘если не надо, убрать
            End If
        Next cell
    End If
End Sub

[/vba]


ЯД: 410013299366744 WM: R193491431804

 

Ответить

ska

Дата: Четверг, 10.03.2016, 18:44 |
Сообщение № 6

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

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

Сообщений: 22


Репутация:

0

±

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


Excel 2010

Manyasha, огромное СПАСИБО!!!

 

Ответить

ska

Дата: Четверг, 10.03.2016, 19:48 |
Сообщение № 7

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

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

Сообщений: 22


Репутация:

0

±

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


Excel 2010

Manyasha, а при таком алгоритме есть ограничения на тип данных / объем данных и прочие моменты?

 

Ответить

Содержание

  • Выполнение выборки
    • Способ 1: применение расширенного автофильтра
    • Способ 2: применение формулы массива
    • Способ 3: выборка по нескольким условиям с помощью формулы
    • Способ 4: случайная выборка
  • Вопросы и ответы

Выборка в Microsoft Excel

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

Выполнение выборки

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

Способ 1: применение расширенного автофильтра

Наиболее простым способом произвести отбор является применение расширенного автофильтра. Рассмотрим, как это сделать на конкретном примере.

  1. Выделяем область на листе, среди данных которой нужно произвести выборку. Во вкладке «Главная» щелкаем по кнопке «Сортировка и фильтр». Она размещается в блоке настроек «Редактирование». В открывшемся после этого списка выполняем щелчок по кнопке «Фильтр».
    Включение фильтра в Microsoft Excel

    Есть возможность поступить и по-другому. Для этого после выделения области на листе перемещаемся во вкладку «Данные». Щелкаем по кнопке «Фильтр», которая размещена на ленте в группе «Сортировка и фильтр».

  2. Включение фильтра через вкладку Данные в Microsoft Excel

  3. После этого действия в шапке таблицы появляются пиктограммы для запуска фильтрования в виде перевернутых острием вниз небольших треугольников на правом краю ячеек. Кликаем по данному значку в заглавии того столбца, по которому желаем произвести выборку. В запустившемся меню переходим по пункту «Текстовые фильтры». Далее выбираем позицию «Настраиваемый фильтр…».
  4. Переход в настраиваемый фильтр в Microsoft Excel

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

    Давайте в качестве примера зададим условие так, чтобы отобрать только значения, по которым сумма выручки превышает 10000 рублей. Устанавливаем переключатель в позицию «Больше». В правое поле вписываем значение «10000». Чтобы произвести выполнение действия, щелкаем по кнопке «OK».

  6. Пользвательский фильтр в Microsoft Excel

  7. Как видим, после фильтрации остались только строчки, в которых сумма выручки превышает 10000 рублей.
  8. Результаты фильтрации в Microsoft Excel

  9. Но в этом же столбце мы можем добавить и второе условие. Для этого опять возвращаемся в окно пользовательской фильтрации. Как видим, в его нижней части есть ещё один переключатель условия и соответствующее ему поле для ввода. Давайте установим теперь верхнюю границу отбора в 15000 рублей. Для этого выставляем переключатель в позицию «Меньше», а в поле справа вписываем значение «15000».

    Кроме того, существует ещё переключатель условий. У него два положения «И» и «ИЛИ». По умолчанию он установлен в первом положении. Это означает, что в выборке останутся только строчки, которые удовлетворяют обоим ограничениям. Если он будет выставлен в положение «ИЛИ», то тогда останутся значения, которые подходят под любое из двух условий. В нашем случае нужно выставить переключатель в положение «И», то есть, оставить данную настройку по умолчанию. После того, как все значения введены, щелкаем по кнопке «OK».

  10. Установка верхней границы в пользовательском фильтре в Microsoft Excel

  11. Теперь в таблице остались только строчки, в которых сумма выручки не меньше 10000 рублей, но не превышает 15000 рублей.
  12. Результаты фильтрации по нижней и верхней границе в Microsoft Excel

  13. Аналогично можно настраивать фильтры и в других столбцах. При этом имеется возможность сохранять также фильтрацию и по предыдущим условиям, которые были заданы в колонках. Итак, посмотрим, как производится отбор с помощью фильтра для ячеек в формате даты. Кликаем по значку фильтрации в соответствующем столбце. Последовательно кликаем по пунктам списка «Фильтр по дате» и «Настраиваемый фильтр».
  14. Переход к фильтрации по дате в Microsoft Excel

  15. Снова запускается окно пользовательского автофильтра. Выполним отбор результатов в таблице с 4 по 6 мая 2016 года включительно. В переключателе выбора условий, как видим, ещё больше вариантов, чем для числового формата. Выбираем позицию «После или равно». В поле справа устанавливаем значение «04.05.2016». В нижнем блоке устанавливаем переключатель в позицию «До или равно». В правом поле вписываем значение «06.05.2016». Переключатель совместимости условий оставляем в положении по умолчанию – «И». Для того, чтобы применить фильтрацию в действии, жмем на кнопку «OK».
  16. Пользвательский фильтр для формата даты в Microsoft Excel

  17. Как видим, наш список ещё больше сократился. Теперь в нем оставлены только строчки, в которых сумма выручки варьируется от 10000 до 15000 рублей за период с 04.05 по 06.05.2016 включительно.
  18. Результаты фильтрации по сумме и дате в Microsoft Excel

  19. Мы можем сбросить фильтрацию в одном из столбцов. Сделаем это для значений выручки. Кликаем по значку автофильтра в соответствующем столбце. В выпадающем списке щелкаем по пункту «Удалить фильтр».
  20. Удаление фильтра с одного из столбцов в Microsoft Excel

    Lumpics.ru

  21. Как видим, после этих действий, выборка по сумме выручки будет отключена, а останется только отбор по датам (с 04.05.2016 по 06.05.2016).
  22. Ограничения только по дате в Microsoft Excel

  23. В данной таблице имеется ещё одна колонка – «Наименование». В ней содержатся данные в текстовом формате. Посмотрим, как сформировать выборку с помощью фильтрации по этим значениям.

    Кликаем по значку фильтра в наименовании столбца. Последовательно переходим по наименованиям списка «Текстовые фильтры» и «Настраиваемый фильтр…».

  24. Переход к текстовой фильтрации в Microsoft Excel

  25. Опять открывается окно пользовательского автофильтра. Давайте сделаем выборку по наименованиям «Картофель» и «Мясо». В первом блоке переключатель условий устанавливаем в позицию «Равно». В поле справа от него вписываем слово «Картофель». Переключатель нижнего блока так же ставим в позицию «Равно». В поле напротив него делаем запись – «Мясо». И вот далее мы выполняем то, чего ранее не делали: устанавливаем переключатель совместимости условий в позицию «ИЛИ». Теперь строчка, содержащая любое из указанных условий, будет выводиться на экран. Щелкаем по кнопке «OK».
  26. Пользвательский фильтр для формата текста в Microsoft Excel

  27. Как видим, в новой выборке существуют ограничения по дате (с 04.05.2016 по 06.05.2016) и по наименованию (картофель и мясо). По сумме выручки ограничений нет.
  28. Ограничения по дате и по наименованию в Microsoft Excel

  29. Полностью удалить фильтр можно теми же способами, которые использовались для его установки. Причем неважно, какой именно способ применялся. Для сброса фильтрации, находясь во вкладке «Данные» щелкаем по кнопке «Фильтр», которая размещена в группе «Сортировка и фильтр».
    Очистка фильтра в Microsoft Excel

    Второй вариант предполагает переход во вкладку «Главная». Там выполняем щелчок на ленте по кнопке «Сортировка и фильтр» в блоке «Редактирование». В активировавшемся списке нажимаем на кнопку «Фильтр».

Очистка фильтра во вкладке Главная в Microsoft Excel

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

Фильтр сброшен в Microsoft Excel

Урок: Функция автофильтр в Excel

Способ 2: применение формулы массива

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

  1. На том же листе создаем пустую таблицу с такими же наименованиями столбцов в шапке, что и у исходника.
  2. Создание пустой таблицы в Microsoft Excel

  3. Выделяем все пустые ячейки первой колонки новой таблицы. Устанавливаем курсор в строку формул. Как раз сюда будет заноситься формула, производящая выборку по указанным критериям. Отберем строчки, сумма выручки в которых превышает 15000 рублей. В нашем конкретном примере, вводимая формула будет выглядеть следующим образом:

    =ИНДЕКС(A2:A29;НАИМЕНЬШИЙ(ЕСЛИ(15000<=C2:C29;СТРОКА(C2:C29);"");СТРОКА()-СТРОКА($C$1))-СТРОКА($C$1))

    Естественно, в каждом конкретном случае адрес ячеек и диапазонов будет свой. На данном примере можно сопоставить формулу с координатами на иллюстрации и приспособить её для своих нужд.

  4. Ввод формулы в Microsoft Excel

  5. Так как это формула массива, то для того, чтобы применить её в действии, нужно нажимать не кнопку Enter, а сочетание клавиш Ctrl+Shift+Enter. Делаем это.
  6. Формула массива введена в столбец наименований в Microsoft Excel

  7. Выделив второй столбец с датами и установив курсор в строку формул, вводим следующее выражение:

    =ИНДЕКС(B2:B29;НАИМЕНЬШИЙ(ЕСЛИ(15000<=C2:C29;СТРОКА(C2:C29);"");СТРОКА()-СТРОКА($C$1))-СТРОКА($C$1))

    Жмем сочетание клавиш Ctrl+Shift+Enter.

  8. Формула массива введена в столбец даты в Microsoft Excel

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

    =ИНДЕКС(C2:C29;НАИМЕНЬШИЙ(ЕСЛИ(15000<=C2:C29;СТРОКА(C2:C29);"");СТРОКА()-СТРОКА($C$1))-СТРОКА($C$1))

    Опять набираем сочетание клавиш Ctrl+Shift+Enter.

    Во всех трех случаях меняется только первое значение координат, а в остальном формулы полностью идентичны.

  10. Формула массива введена в столбец выручки в Microsoft Excel

  11. Как видим, таблица заполнена данными, но внешний вид её не совсем привлекателен, к тому же, значения даты заполнены в ней некорректно. Нужно исправить эти недостатки. Некорректность даты связана с тем, что формат ячеек соответствующего столбца общий, а нам нужно установить формат даты. Выделяем весь столбец, включая ячейки с ошибками, и кликаем по выделению правой кнопкой мыши. В появившемся списке переходим по пункту «Формат ячейки…».
  12. Переход к форматировани ячеек в Microsoft Excel

  13. В открывшемся окне форматирования открываем вкладку «Число». В блоке «Числовые форматы» выделяем значение «Дата». В правой части окна можно выбрать желаемый тип отображения даты. После того, как настройки выставлены, жмем на кнопку «OK».
  14. Установка формата даты в Microsoft Excel

  15. Теперь дата отображается корректно. Но, как видим, вся нижняя часть таблицы заполнена ячейками, которые содержат ошибочное значение «#ЧИСЛО!». По сути, это те ячейки, данных из выборки для которых не хватило. Более привлекательно было бы, если бы они отображались вообще пустыми. Для этих целей воспользуемся условным форматированием. Выделяем все ячейки таблицы, кроме шапки. Находясь во вкладке «Главная» кликаем по кнопке «Условное форматирование», которая находится в блоке инструментов «Стили». В появившемся списке выбираем пункт «Создать правило…».
  16. Переход к созданию правила в Microsoft Excel

  17. В открывшемся окне выбираем тип правила «Форматировать только ячейки, которые содержат». В первом поле под надписью «Форматировать только ячейки, для которых выполняется следующее условие» выбираем позицию «Ошибки». Далее жмем по кнопке «Формат…».
  18. Переход к выбору формата в Microsoft Excel

  19. В запустившемся окне форматирования переходим во вкладку «Шрифт» и в соответствующем поле выбираем белый цвет. После этих действий щелкаем по кнопке «OK».
  20. Формат ячеек в Microsoft Excel

  21. На кнопку с точно таким же названием жмем после возвращения в окно создания условий.

Создание условия форматирования в Microsoft Excel

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

Выборка сделана в Microsoft Excel

Урок: Условное форматирование в Excel

Способ 3: выборка по нескольким условиям с помощью формулы

Так же, как и при использовании фильтра, с помощью формулы можно осуществлять выборку по нескольким условиям. Для примера возьмем всю ту же исходную таблицу, а также пустую таблицу, где будут выводиться результаты, с уже выполненным числовым и условным форматированием. Установим первым ограничением нижнюю границу отбора по выручке в 15000 рублей, а вторым условием верхнюю границу в 20000 рублей.

  1. Вписываем в отдельном столбце граничные условия для выборки.
  2. Условия в Microsoft Excel

  3. Как и в предыдущем способе, поочередно выделяем пустые столбцы новой таблицы и вписываем в них соответствующие три формулы. В первый столбец вносим следующее выражение:

    =ИНДЕКС(A2:A29;НАИМЕНЬШИЙ(ЕСЛИ(($D$2=C2:C29);СТРОКА(C2:C29);"");СТРОКА(C2:C29)-СТРОКА($C$1))-СТРОКА($C$1))

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

    Каждый раз после ввода не забываем набирать сочетание клавиш Ctrl+Shift+Enter.

  4. Результат выборки по нескольким условиям в Microsoft Excel

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

Изменение результатов выборки в Microsoft Excel

Способ 4: случайная выборка

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

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

    =СЛЧИС()

    Эта функция выводит на экран случайное число. Для того, чтобы её активировать, жмем на кнопку ENTER.

  2. Случайное число в Microsoft Excel

  3. Для того, чтобы сделать целый столбец случайных чисел, устанавливаем курсор в нижний правый угол ячейки, которая уже содержит формулу. Появляется маркер заполнения. Протягиваем его вниз с зажатой левой кнопкой мыши параллельно таблице с данными до её конца.
  4. Маркер заполнения в Microsoft Excel

  5. Теперь у нас имеется диапазон ячеек, заполненный случайными числами. Но, он содержит в себе формулу СЛЧИС. Нам же нужно работать с чистыми значениями. Для этого следует выполнить копирование в пустой столбец справа. Выделяем диапазон ячеек со случайными числами. Расположившись во вкладке «Главная», щелкаем по иконке «Копировать» на ленте.
  6. Копирование в Microsoft Excel

  7. Выделяем пустой столбец и кликаем правой кнопкой мыши, вызывая контекстное меню. В группе инструментов «Параметры вставки» выбираем пункт «Значения», изображенный в виде пиктограммы с цифрами.
  8. Вставка в Microsoft Excel

  9. После этого, находясь во вкладке «Главная», кликаем по уже знакомому нам значку «Сортировка и фильтр». В выпадающем списке останавливаем выбор на пункте «Настраиваемая сортировка».
  10. Переход к настраиваемой сортировке в Microsoft Excel

  11. Активируется окно настройки сортировки. Обязательно устанавливаем галочку напротив параметра «Мои данные содержат заголовки», если шапка имеется, а галочки нет. В поле «Сортировать по» указываем наименование того столбца, в котором содержатся скопированные значения случайных чисел. В поле «Сортировка» оставляем настройки по умолчанию. В поле «Порядок» можно выбрать параметр как «По возрастанию», так и «По убыванию». Для случайной выборки это значения не имеет. После того, как настройки произведены, жмем на кнопку «OK».
  12. Настройка сортировки в Microsoft Excel

  13. После этого все значения таблицы выстраиваются в порядке возрастания или убывания случайных чисел. Можно взять любое количество первых строчек из таблицы (5, 10, 12, 15 и т.п.) и их можно будет считать результатом случайной выборки.

Случайная выборка в Microsoft Excel

Урок: Сортировка и фильтрация данных в Excel

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

Еще статьи по данной теме:

Помогла ли Вам статья?

0 / 0 / 1

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

Сообщений: 176

1

Excel

Написать макрос выборки данных из таблицы и сумма этих значений

04.09.2019, 09:43. Показов 4322. Ответов 9


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

Всем привет.

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

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

На всякий случай прикрепляю табличный файл для экспериментов.

p.s. понимаю, что выглядит это не как просьба помочь, а скорее «сделайте за меня всё — от и до», и просто «спасибо» кому-то будет недостаточно, поэтому готов скинуть на пиво/чай/хлеб/воду/сигареты/мыло/нужное_подчеркнуть, не смотря на то, что потом мне это всё мне потом нужно будет переделать и адаптировать под свои нужды.

Миниатюры

Написать макрос выборки данных из таблицы и сумма этих значений
 



0



6875 / 2807 / 533

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

Сообщений: 8,562

04.09.2019, 11:00

2

Добрый день.
Сделать можно, и сам алгоритм простой:
1. цикл по данным, собираем в одном словаре коллекцию номеров строк каждой встреченной фамилии, пусть согласно примера этой фамилией будет первое слово.
в другом словаре можно сразу собирать сумму ИТОГО, а можно эту сумму подсчитать позже.
2. циклом по этим словарям формируем итоговые таблицы (игнорируя фамилию «Без»), что в принципе не сложно, но вот тут заказан самый гемор — вся эта мишура с объединениями/рамочками/отступами (ну ладно сумма внизу, это хоть функционально) уж не знаю за сколько я бы взялся эту муть наводить…



1



3827 / 2254 / 751

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

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

04.09.2019, 11:01

3

а сводная не проще? или просто фильтр «содержит»?



1



0 / 0 / 1

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

Сообщений: 176

04.09.2019, 11:32

 [ТС]

4

Hugo121,
1. Да, ключевым словом для поиска должна быть фамилия (инициалы не важны).
2. Нужно не игнорировать «фамилию без», а брать все одинаковые фамилии (их можно заранее все прописать вручную).
мишура вообще не нужна, необязательны объединения, рамки, цвета отступы и выделения.

Vlad999, нет, сводная таблица или фильтр не проще.
Нужно, чтобы всё это автоматом (при нажатии на кнопку макроса) считалось и рядом выводились итоги.



0



6875 / 2807 / 533

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

Сообщений: 8,562

04.09.2019, 11:43

5

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



1



0 / 0 / 1

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

Сообщений: 176

04.09.2019, 11:49

 [ТС]

6

Hugo121, список фамилий на самом деле это теги, которые меняться не будут никогда и в другом виде/месте использоваться не будут.



0



es geht mir gut

11264 / 4746 / 1183

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

Сообщений: 11,437

06.09.2019, 13:05

7

Рафик, попробуйте так



1



es geht mir gut

11264 / 4746 / 1183

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

Сообщений: 11,437

06.09.2019, 13:11

8

Файл



1



0 / 0 / 1

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

Сообщений: 176

08.09.2019, 07:50

 [ТС]

9

SoftIce, посмотрел ваш вариант.
Для данной таблицы отлично работает. А можно сделать так, чтобы не маской вида «* *.*.» искать значения, а конкретно заранее ввести слова – «*Иванов*«, «*Петров*» … ?



0



es geht mir gut

11264 / 4746 / 1183

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

Сообщений: 11,437

08.09.2019, 08:28

10

Лучший ответ Сообщение было отмечено Рафик как решение

Решение

Цитата
Сообщение от Рафик
Посмотреть сообщение

заранее ввести слова

excel_xls.xls



1



Во второй части нашего учебника по функции ВПР (VLOOKUP) в Excel мы разберём несколько примеров, которые помогут Вам направить всю мощь ВПР на решение наиболее амбициозных задач Excel.

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

Что ж, давайте приступим.

Поиск в Excel по нескольким критериям

Функция ВПР в Excel – это действительно мощный инструмент для выполнения поиска определённого значения в базе данных. Однако, есть существенное ограничение – её синтаксис позволяет искать только одно значение. Как же быть, если требуется выполнить поиск по нескольким условиям? Решение Вы найдёте далее.

Пример 1: Поиск по 2-м разным критериям

Предположим, у нас есть список заказов и мы хотим найти Количество товара (Qty.), основываясь на двух критериях – Имя клиента (Customer) и Название продукта (Product). Дело усложняется тем, что каждый из покупателей заказывал несколько видов товаров, как это видно из таблицы ниже:

Как в excel сделать выборку из таблицы по условию?

  • Обычная функция ВПР не будет работать по такому сценарию, поскольку она возвратит первое найденное значение, соответствующее заданному искомому значению. Например, если Вы хотите узнать количество товара Sweets, заказанное покупателем Jeremy Hill, запишите вот такую формулу:
  • =VLOOKUP(B1,$A$5:$C$14,3,FALSE)
    =ВПР(B1;$A$5:$C$14;3;ЛОЖЬ)
  • – эта формула вернет результат 15, соответствующий товару Apples, так как это первое совпадающее значение.

Есть простой обходной путь – создать дополнительный столбец, в котором объединить все нужные критерии.

В нашем примере это столбцы Имя клиента (Customer) и Название продукта (Product).

Не забывайте, что объединенный столбец должен быть всегда крайним левым в диапазоне поиска, поскольку именно левый столбец функция ВПР просматривает при поиске значения.

Итак, Вы добавляете вспомогательный столбец в таблицу и копируете по всем его ячейкам формулу вида: =B2&C2. Если хочется, чтобы строка была более читаемой, можно разделить объединенные значения пробелом: =B2&” “&C2. После этого можно использовать следующую формулу:

  1. =VLOOKUP(«Jeremy Hill Sweets»,$A$7:$D$18,4,FALSE)
    =ВПР(«Jeremy Hill Sweets»;$A$7:$D$18;4;ЛОЖЬ)
  2. или
  3. =VLOOKUP(B1,$A$7:$D$18,4,FALSE)
    =ВПР(B1;$A$7:$D$18;4;ЛОЖЬ)

Где ячейка B1 содержит объединенное значение аргумента lookup_value (искомое_значение), а 4 – аргумент col_index_num (номер_столбца), т.е. номер столбца, содержащего данные, которые необходимо извлечь.

Как в excel сделать выборку из таблицы по условию?

Пример 2: ВПР по двум критериям с просматриваемой таблицей на другом листе

Если Вам необходимо обновить основную таблицу (Main table), добавив данные из второй таблицы (Lookup table), которая находится на другом листе или в другой рабочей книге Excel, то Вы можете собрать искомое значение непосредственно в формуле, которую вставляете в основную таблицу.

Как и в предыдущем примере, Вам понадобится в таблице поиска (Lookup table) вспомогательный столбец с объединенными значениями. Этот столбец должен быть крайним левым в заданном для поиска диапазоне.

Итак, формула с ВПР может быть такой:

=VLOOKUP(B2&» «&C2,Orders!$A&$2:$D$2,4,FALSE)
=ВПР(B2&» «&C2;Orders!$A&$2:$D$2;4;ЛОЖЬ)

Здесь в столбцах B и C содержатся имена клиентов и названия продуктов соответственно, а ссылка Orders!$A&$2:$D$2 определяет таблицу для поиска на другом листе.

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

=VLOOKUP(B2&» «&C2,Orders,4,FALSE)
=ВПР(B2&» «&C2;Orders;4;ЛОЖЬ)

Как в excel сделать выборку из таблицы по условию?

Чтобы формула работала, значения в крайнем левом столбце просматриваемой таблицы должны быть объединены точно так же, как и в критерии поиска. На рисунке выше мы объединили значения и поставили между ними пробел, точно так же необходимо сделать в первом аргументе функции (B2&” “&C2).

Запомните! Функция ВПР ограничена 255 символами, она не может искать значение, состоящее из более чем 255 символов. Имейте это ввиду и следите, чтобы длина искомого значения не превышала этот лимит.

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

Извлекаем 2-е, 3-е и т.д. значения, используя ВПР

Вы уже знаете, что ВПР может возвратить только одно совпадающее значение, точнее – первое найденное. Но как быть, если в просматриваемом массиве это значение повторяется несколько раз, и Вы хотите извлечь 2-е или 3-е из них? А что если все значения? Задачка кажется замысловатой, но решение существует!

Предположим, в одном столбце таблицы записаны имена клиентов (Customer Name), а в другом – товары (Product), которые они купили. Попробуем найти 2-й, 3-й и 4-й товары, купленные заданным клиентом.

Простейший способ – добавить вспомогательный столбец перед столбцом Customer Name и заполнить его именами клиентов с номером повторения каждого имени, например, John Doe1, John Doe2 и т.д. Фокус с нумерацией сделаем при помощи функции COUNTIF (СЧЁТЕСЛИ), учитывая, что имена клиентов находятся в столбце B:

=B2&COUNTIF($B$2:B2,B2)
=B2&СЧЁТЕСЛИ($B$2:B2;B2)

Как в excel сделать выборку из таблицы по условию?

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

  • Находим 2-й товар, заказанный покупателем Dan Brown:
    =VLOOKUP(«Dan Brown2»,$A$2:$C$16,3,FALSE)
    =ВПР(«Dan Brown2»;$A$2:$C$16;3;ЛОЖЬ)
  • Находим 3-й товар, заказанный покупателем Dan Brown:
    =VLOOKUP(«Dan Brown3»,$A$2:$C$16,3,FALSE)
    =ВПР(«Dan Brown3»;$A$2:$C$16;3;ЛОЖЬ)

На самом деле, Вы можете ввести ссылку на ячейку в качестве искомого значения вместо текста, как представлено на следующем рисунке:

Как в excel сделать выборку из таблицы по условию?

  • Если Вы ищите только 2-е повторение, то можете сделать это без вспомогательного столбца, создав более сложную формулу:
  • =IFERROR(VLOOKUP($F$2,INDIRECT(«$B$»&(MATCH($F$2,Table4[Customer Name],0)+2)&»:$C16″),2,FALSE),»»)
    =ЕСЛИОШИБКА(ВПР($F$2;ДВССЫЛ(«$B$»&(ПОИСКПОЗ($F$2;Table4[Customer Name];0)+2)&»:$C16″);2;ИСТИНА);»»)
  • В этой формуле:
  • $F$2 – ячейка, содержащая имя покупателя (она неизменна, обратите внимание – ссылка абсолютная);
  • $B$ – столбец Customer Name;
  • Table4 – Ваша таблица (на этом месте также может быть обычный диапазон);
  • $C16 – конечная ячейка Вашей таблицы или диапазона.

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

Как в excel сделать выборку из таблицы по условию?

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

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

  1. Как упоминалось выше, ВПР не может извлечь все повторяющиеся значения из просматриваемого диапазона.

    Чтобы сделать это, Вам потребуется чуть более сложная формула, составленная из нескольких функций Excel, таких как INDEX (ИНДЕКС), SMALL (НАИМЕНЬШИЙ) и ROW (СТРОКА)

  2. Например, формула, представленная ниже, находит все повторения значения из ячейки F2 в диапазоне B2:B16 и возвращает результат из тех же строк в столбце C.
  3. {=IFERROR(INDEX($C$2:$C$16,SMALL(IF($F$2=B2:B16,ROW(C2:C16)-1,»»),ROW()-3)),»»)}
    {=ЕСЛИОШИБКА(ИНДЕКС($C$2:$C$16;НАИМЕНЬШИЙ(ЕСЛИ($F$2=B2:B16;СТРОКА(C2:C16)-1;»»);СТРОКА()-3));»»)}

Введите эту формулу массива в несколько смежных ячеек, например, в ячейки F4:F8, как показано на рисунке ниже. Количество ячеек должно быть равным или большим, чем максимально возможное число повторений искомого значения. Не забудьте нажать Ctrl+Shift+Enter, чтобы правильно ввести формулу массива.

Как в excel сделать выборку из таблицы по условию?

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

Часть 1:

IF($F$2=B2:B16,ROW(C2:C16)-1,»»)
ЕСЛИ($F$2=B2:B16;СТРОКА(C2:C16)-1;»»)

$F$2=B2:B16 – сравниваем значение в ячейке F2 с каждым из значений диапазона B2:B16. Если найдено совпадение, то выражение СТРОКА(C2:C16)-1 возвращает номер соответствующей строки (значение -1 позволяет не включать строку заголовков). Если совпадений нет, функция IF (ЕСЛИ) возвращает пустую строку.

Результатом функции IF (ЕСЛИ) окажется вот такой горизонтальный массив: {1,»»,3,»»,5,»»,»»,»»,»»,»»,»»,12,»»,»»,»»}

Часть 2:

ROW()-3
СТРОКА()-3

Здесь функция ROW (СТРОКА) действует как дополнительный счётчик. Так как формула скопирована в ячейки F4:F9, мы вычитаем число 3 из результата функции, чтобы получить значение 1 в ячейке F4 (строка 4, вычитаем 3), чтобы получить 2 в ячейке F5 (строка 5, вычитаем 3) и так далее.

Часть 3:

SMALL(IF($F$2=B2:B16,ROW(C2:C16)-1,»»),ROW()-3))
НАИМЕНЬШИЙ(ЕСЛИ($F$2=B2:B16;СТРОКА(C2:C16)-1;»»);СТРОКА()-3))

Функция SMALL (НАИМЕНЬШИЙ) возвращает n-ое наименьшее значение в массиве данных. В нашем случае, какую по счёту позицию (от наименьшего) возвращать – определено функцией ROW (СТРОКА) (смотри Часть 2).

Так, для ячейки F4 функция НАИМЕНЬШИЙ({массив};1) возвращает 1-й (наименьший) элемент массива, то есть 1.

Для ячейки F5 возвращает 2-й наименьший элемент массива, то есть 3, и так далее.

Часть 4:

INDEX($C$2:$C$16,SMALL(IF($F$2=B2:B16,ROW(C2:C16)-1,»»),ROW()-3))
ИНДЕКС($C$2:$C$16;НАИМЕНЬШИЙ(ЕСЛИ($F$2=B2:B16;СТРОКА(C2:C16)-1;»»);СТРОКА()-3))

Функция INDEX (ИНДЕКС) просто возвращает значение определённой ячейки в массиве C2:C16. Для ячейки F4 функция ИНДЕКС($C$2:$C$16;1) возвратит Apples, для F5 функция ИНДЕКС($C$2:$C$16;3) возвратит Sweets и так далее.

Часть 5:

IFERROR()
ЕСЛИОШИБКА()

В завершение, мы помещаем формулу внутрь функции IFERROR (ЕСЛИОШИБКА), поскольку вряд ли Вас обрадует сообщение об ошибке #N/A (#Н/Д) в случае, если количество ячеек, в которые скопирована формула, будет меньше, чем количество повторяющихся значений в просматриваемом диапазоне.

Двумерный поиск по известным строке и столбцу

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

Итак, давайте обратимся к нашей таблице и запишем формулу с функцией ВПР, которая найдет информацию о стоимости проданных в марте лимонов.

Как в excel сделать выборку из таблицы по условию?

Существует несколько способов выполнить двумерный поиск. Познакомьтесь с возможными вариантами и выберите наиболее подходящий.

Функции ВПР и ПОИСКПОЗ

Вы можете использовать связку из функций ВПР (VLOOKUP) и ПОИСКПОЗ (MATCH), чтобы найти значение на пересечении полей Название продукта (строка) и Месяц (столбец) рассматриваемого массива:

=VLOOKUP(«Lemons»,$A$2:$I$9,MATCH(«Mar»,$A$1:$I$1,0),FALSE)
=ВПР(«Lemons»;$A$2:$I$9;ПОИСКПОЗ(«Mar»;$A$1:$I$1;0);ЛОЖЬ)

Формула выше – это обычная функция ВПР, которая ищет точное совпадение значения “Lemons” в ячейках от A2 до A9. Но так как Вы не знаете, в каком именно столбце находятся продажи за март, то не сможете задать номер столбца для третьего аргумента функции ВПР. Вместо этого используется функция ПОИСКПОЗ, чтобы определить этот столбец.

MATCH(«Mar»,$A$1:$I$1,0)
ПОИСКПОЗ(«Mar»;$A$1:$I$1;0)

В переводе на человеческий язык, данная формула означает:

  • Ищем символы “Mar” – аргумент lookup_value (искомое_значение);
  • Ищем в ячейках от A1 до I1 – аргумент lookup_array (просматриваемый_массив);
  • Возвращаем точное совпадение – аргумент match_type (тип_сопоставления).

Использовав в третьем аргументе, Вы говорите функции ПОИСКПОЗ искать первое значение, в точности совпадающее с искомым значением. Это равносильно значению FALSE (ЛОЖЬ) для четвёртого аргумента ВПР.

Вот так Вы можете создать формулу для поиска по двум критериям в Excel, что также известно, как двумерный поиск или поиск в двух направлениях.

Функция СУММПРОИЗВ

Функция СУММПРОИЗВ (SUMPRODUCT) возвращает сумму произведений выбранных массивов:

=SUMPRODUCT(($A$2:$A$9=»Lemons»)*($A$1:$I$1=»Mar»),$A$2:$I$9)
=СУММПРОИЗВ(($A$2:$A$9=»Lemons»)*($A$1:$I$1=»Mar»);$A$2:$I$9)

Функции ИНДЕКС и ПОИСКПОЗ

В следующей статье я буду объяснять эти функции во всех деталях, так что сейчас можете просто скопировать эту формулу:

=INDEX($A$2:$I$9,MATCH(«Lemons»,$A$2:$A$9,0),MATCH(«Mar»,$A$1:$I$1,0))
=ИНДЕКС($A$2:$I$9;ПОИСКПОЗ(«Lemons»;$A$2:$A$9;0);ПОИСКПОЗ(«Mar»;$A$1:$I$1;0))

Именованные диапазоны и оператор пересечения

Если Вы не в восторге от всех этих сложных формул Excel, Вам может понравиться вот такой наглядный и запоминающийся способ:

  1. Выделите таблицу, откройте вкладку Formulas (Формулы) и нажмите Create from Selection (Создать из выделенного).
  2. Отметьте галочками Top row (в строке выше) и Left column (в столбце слева). Microsoft Excel назначит имена диапазонам из значений в верхней строке и левом столбце Вашей таблицы. Теперь Вы можете осуществлять поиск, используя эти имена, напрямую, без создания формул.Как в excel сделать выборку из таблицы по условию?
  3. В любой пустой ячейке запишите =имя_строки имя_столбца, например, так:

    =Lemons Mar
    … или наоборот:

    =Mar Lemons

Источник: https://office-guru.ru/excel/prodvinutye-primery-s-funkciei-vpr-167.html

Выборка данных в Microsoft Excel

Как в excel сделать выборку из таблицы по условию?

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

Выполнение выборки

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

Способ 1: применение расширенного автофильтра

Наиболее простым способом произвести отбор является применение расширенного автофильтра. Рассмотрим, как это сделать на конкретном примере.

  1. Выделяем область на листе, среди данных которой нужно произвести выборку. Во вкладке «Главная» щелкаем по кнопке «Сортировка и фильтр». Она размещается в блоке настроек «Редактирование». В открывшемся после этого списка выполняем щелчок по кнопке «Фильтр».
    Как в excel сделать выборку из таблицы по условию?

    Есть возможность поступить и по-другому. Для этого после выделения области на листе перемещаемся во вкладку «Данные». Щелкаем по кнопке «Фильтр», которая размещена на ленте в группе «Сортировка и фильтр».

  2. Как в excel сделать выборку из таблицы по условию?

  3. После этого действия в шапке таблицы появляются пиктограммы для запуска фильтрования в виде перевернутых острием вниз небольших треугольников на правом краю ячеек. Кликаем по данному значку в заглавии того столбца, по которому желаем произвести выборку. В запустившемся меню переходим по пункту «Текстовые фильтры». Далее выбираем позицию «Настраиваемый фильтр…».
  4. Как в excel сделать выборку из таблицы по условию?

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

    Давайте в качестве примера зададим условие так, чтобы отобрать только значения, по которым сумма выручки превышает 10000 рублей. Устанавливаем переключатель в позицию «Больше». В правое поле вписываем значение «10000». Чтобы произвести выполнение действия, щелкаем по кнопке «OK».

  6. Как в excel сделать выборку из таблицы по условию?

  7. Как видим, после фильтрации остались только строчки, в которых сумма выручки превышает 10000 рублей.
  8. Как в excel сделать выборку из таблицы по условию?

  9. Но в этом же столбце мы можем добавить и второе условие. Для этого опять возвращаемся в окно пользовательской фильтрации. Как видим, в его нижней части есть ещё один переключатель условия и соответствующее ему поле для ввода. Давайте установим теперь верхнюю границу отбора в 15000 рублей. Для этого выставляем переключатель в позицию «Меньше», а в поле справа вписываем значение «15000».

    Кроме того, существует ещё переключатель условий. У него два положения «И» и «ИЛИ». По умолчанию он установлен в первом положении. Это означает, что в выборке останутся только строчки, которые удовлетворяют обоим ограничениям.

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

    После того, как все значения введены, щелкаем по кнопке «OK».

  10. Как в excel сделать выборку из таблицы по условию?

  11. Теперь в таблице остались только строчки, в которых сумма выручки не меньше 10000 рублей, но не превышает 15000 рублей.
  12. Как в excel сделать выборку из таблицы по условию?

  13. Аналогично можно настраивать фильтры и в других столбцах. При этом имеется возможность сохранять также фильтрацию и по предыдущим условиям, которые были заданы в колонках. Итак, посмотрим, как производится отбор с помощью фильтра для ячеек в формате даты. Кликаем по значку фильтрации в соответствующем столбце. Последовательно кликаем по пунктам списка «Фильтр по дате» и «Настраиваемый фильтр».

Источник: https://lumpics.ru/how-to-make-a-sample-in-excel/

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

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

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

Как в excel сделать выборку из таблицы по условию?

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

=ИНДЕКС(диапазон_данных_для_выборки;МИН(ЕСЛИ(диапазон=МИН(диапазон);СТРОКА(диапазон)-СТРОКА(заголовок_столбца);””)))

В месте «диапазон_данных_для_выборки» следует указать область значений A6:A18 для выборки из таблицы (например, текстовых), из которых функция ИНДЕКС выберет одно результирующие значение.

Аргумент «диапазон» означает область ячеек с числовыми значениями, из которых следует выбрать первое наименьшее число.

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

Естественно эту формулу следует выполнять в массиве. Поэтому для подтверждения ее ввода следует нажимать не просто клавишу Enter, а целую комбинацию клавиш CTRL+SHIFT+Enter. Если все сделано правильно в строке формул появятся фигурные скобки.

Обратите внимание ниже на рисунок, где в ячейку B3 была введена данная формула в массиве:

Выборка соответственного значения с первым наименьшим числом:

Как в excel сделать выборку из таблицы по условию?

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

Ключевую роль здесь играет функция ИНДЕКС. Ее номинальное задание – это выбирать из исходной таблицы (указывается в первом аргументе – A6:A18) значения соответственные определенным числам.

ИНДЕКС работает с учетом критериев определённых во втором (номер строки внутри таблицы) и третьем (номер столбца в таблице) аргументах.

Так как наша исходная таблица A6:A18 имеет только 1 столбец, то третий аргумент в функции ИНДЕКС мы не указываем.

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

Функция ЕСЛИ позволяет выбрать значение из списка по условию. В ее первом аргументе указано где проверяется каждая ячейка в диапазоне B6:B18 на наличие наименьшего числового значения: ЕСЛИB6:B18=МИНB6:B18.

Таким способом в памяти программы создается массив из логических значений ИСТИНА и ЛОЖЬ.

В нашем случаи 3 элемента массива будут содержат значение ИСТИНА, так как минимальное значение 8 содержит еще 2 дубликата в столбце B6:B18.

Следующий шаг – это определение в каких именно строках диапазона находится каждое минимальное значение. Это нам необходимо по причине определения именно первого наименьшего значения.

Реализовывается данная задача с помощью функции СТРОКА, она заполняет элементы массива в памяти программы номерами строк листа. Но сначала от всех этих номеров вычитается номер на против первой строки таблицы – B5, то есть число 5.

Это делается потому, что функция ИНДЕКС работает с номерами внутри таблицы, а не с номерами рабочего листа Excel. В тоже время функция СТРОКА умеет возвращать только номера строк листа.

Чтобы не получилось смещение необходимо сопоставить порядок номеров строк листа и таблицы с помощи вычитанием разницы. Например, если таблица находится на 5-ой строке листа значит каждая строка таблицы будет на 5 меньше чем соответственная строка листа.

После того как будут отобраны все минимальные значения и сопоставлены все номера строк таблицы функция МИН выберет наименьший номер строки.

Эта же строка будет содержать первое наименьшее число, которое встречается в столбце B6:B18. На основании этого номера строки функции ИНДЕКС выберет соответствующее значение из таблицы A6:A18.

В итоге формула возвращает это значение в ячейку B3 в качестве результата вычисления.

Как выбрать значение с наибольшим числом в Excel

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

Как в excel сделать выборку из таблицы по условию?

Если необходимо изменить условия формулы так, чтобы можно было в Excel выбрать первое максимальное, но меньше чем 70:

Как в excel сделать выборку из таблицы по условию?

Как в Excel выбрать первое минимальное значение кроме нуля:

Как в excel сделать выборку из таблицы по условию?

Как легко заметить, эти формулы отличаются между собой только функциями МИН и МАКС и их аргументами.

Скачать пример выборки из таблицы в Excel.

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

Источник: https://exceltable.com/formuly/vyborka-iz-tablicy-po-usloviyu

Поиск и подстановка по нескольким условиям

89123 01.05.2015 Скачать пример

Постановка задачи

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

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

А если у нас их несколько?

Предположим, что у нас есть база данных по ценам товаров за разные месяцы:

Как в excel сделать выборку из таблицы по условию?

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

Способ 1. Дополнительный столбец с ключом поиска

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

Добавим рядом с нашей таблицей еще один столбец, где склеим название товара и месяц в единое целое с помощью оператора сцепки (&), чтобы получить уникальный столбец-ключ для поиска:

Как в excel сделать выборку из таблицы по условию?

Теперь можно использовать знакомую функцию ВПР (VLOOKUP) для поиска склеенной пары НектаринЯнварь из ячеек H3 и J3 в созданном ключевом столбце:

Как в excel сделать выборку из таблицы по условию?

Плюсы: Простой способ, знакомая функция, работает с любыми данными.

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

Способ 2. Функция СУММЕСЛИМН

Если нужно найти именно число (в нашем случае цена как раз число), то вместо ВПР можно использовать функцию СУММЕСЛИМН (SUMIFS), появившуюся начиная с Excel 2007.

По идее, эта функция выбирает и суммирует числовые значения по нескольким (до 127!) условиям.

Но если в нашем списке нет повторяющихся товаров внутри одного месяца, то она просто выведет значение цены для заданного товара и месяца:

Как в excel сделать выборку из таблицы по условию?

Плюсы: Не нужен дополнительный столбец, решение легко масштабируется на большее количество условий (до 127), быстро считает.

Минусы: Работает только с числовыми данными на выходе, не применима для поиска текста, не работает в старых версиях Excel (2003 и ранее).

Способ 3. Формула массива

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

  1. Выделите пустую зеленую ячейку, где должен быть результат.
  2. Введите в строке формул в нее следующую формулу: Как в excel сделать выборку из таблицы по условию?
  3. Нажмите в конце не Enter, а сочетание Ctrl+Shift+Enter, чтобы ввести формулу не как обычную, а как формулу массива.

Как это на самом деле работает:

Функция ИНДЕКС выдает из диапазона цен C2:C161 содержимое N-ой ячейки по порядку. При этом порядковый номер нужной ячейки нам находит функция ПОИСКПОЗ.

Она ищет связку названия товара и месяца (НектаринЯнварь) по очереди во всех ячейках склеенного из двух столбцов диапазона A2:A161&B2:B161 и выдает порядковый номер ячейки, где нашла точное совпадение.

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

Плюсы: Не нужен отдельный столбец, работает и с числами и с текстом.

Минусы: Ощутимо тормозит на больших таблицах (как и все формулы массива, впрочем), особенно если указывать диапазоны «с запасом» или сразу целые столбцы (т.е. вместо A2:A161 вводить A:A и т.д.) Многим непривычны формулы массива в принципе (тогда вам сюда).

Ссылки по теме

Источник: https://www.planetaexcel.ru/techniques/2/224/

Запрос на выборку данных (формулы) в MS EXCEL

Суть запроса на выборку – выбрать из исходной таблицы строки, удовлетворяющие определенным критериям (подобно применению стандартного Фильтра). Произведем отбор значений из исходной таблицы с помощью формул массива. В отличие от применения Фильтра (CTRL+SHIFT+L или ) отобранные строки будут помещены в отдельную таблицу.

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

1. Один числовой критерий (Выбрать те Товары, у которых цена выше минимальной)

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — число).

Как в excel сделать выборку из таблицы по условию?

Необходимо отобразить в отдельной таблице только те записи (строки) из Исходной таблицы, у которых цена выше 25.

Решить эту и последующие задачи можно легко с помощью стандартного фильтра. Для этого выделите заголовки Исходной таблицы и нажмите CTRL+SHIFT+L. Через выпадающий список у заголовка Цены выберите Числовые фильтры…, затем задайте необходимые условия фильтрации и нажмите ОК.

Как в excel сделать выборку из таблицы по условию?

Будут отображены записи удовлетворяющие условиям отбора.

Как в excel сделать выборку из таблицы по условию?

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

Критерий (минимальную цену) разместим в ячейке Е6, таблицу для отфильтрованных данных — в диапазоне D10:E19

Как в excel сделать выборку из таблицы по условию?

Теперь выделим диапазон D11:D19 (столбец Товар) и в Строке формул введем формулу массива:

=ИНДЕКС(A11:A19;НАИМЕНЬШИЙ(ЕСЛИ($E$6=$B$13:$B$21 гарантирует, что будут отобраны даты не позже заданной (включая). Условие $B$13:$B$21>0 необходимо, если в диапазоне дат имеются пустые ячейки. Знак * (умножение) используется для задания Условия И (все 3 критерия должны выполняться для строки одновременно).

Примечание. Случай, когда список несортирован, рассмотрен в статье Поиск ДАТЫ (ЧИСЛА) ближайшей к заданной, с условием в MS EXCEL. Несортированный список.

7. Один Текстовый критерий (Выбрать Товары определенного вида)

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист Один критерий — Текст).

Задача решается аналогично Задачам 1 и 3. Более подробное решение см. в статье Поиск ТЕКСТовых значений в MS EXCEL с выводом их в отдельный список. Часть1. Обычный поиск.

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

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (И)).

  • Для отбора строк используется формула массива:
  • =ИНДЕКС($A$11:$A$19;НАИМЕНЬШИЙ(ЕСЛИ(($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19);СТРОКА($A$11:$A$19)-СТРОКА($A$10);30);СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19)))))
  • Выражение ($F$6=$A$11:$A$19)*($F$7=$B$11:$B$19) задает оба условия (Товар и Месяц).

Выражение СТРОКА(ДВССЫЛ(«A1:A»&ЧСТРОК($A$11:$A$19))) формирует массив последовательных чисел {1:2:3:4:5:6:7:8:9}, т.е. номера строк в таблице.

9. Два Текстовых критерия (Выбрать Товары определенных видов)

Пусть имеется Исходная таблица с перечнем Товаров и Ценами (см. файл примера, лист 2 критерия — текст (ИЛИ)).

  1. В отличие от Задачи 7 отберем строки с товарами 2-х видов (Условие ИЛИ).
  2. Для отбора строк используется формула массива:
  3. =ИНДЕКС(A$11:A$19;НАИБОЛЬШИЙ((($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19))*(СТРОКА($A$11:$A$19)-СТРОКА($A$10)); СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1))

Условие ($E$6=$A$11:$A$19)+($E$7=$A$11:$A$19) гарантирует, что будут отобраны товары только заданных видов из желтых ячеек (Товар2 и Товар3). Знак + (сложение) используется для задания Условие ИЛИ (должен быть выполнен хотя бы 1 критерий).

Вышеуказанное выражение вернет массив {0:0:0:0:1:1:1:0:0}. Умножив его на выражение СТРОКА($A$11:$A$19)-СТРОКА($A$10), т.е. на массив последовательных чисел {1:2:3:4:5:6:7:8:9}, получим массив позиций (номеров строк таблицы), удовлетворяющих критериям. В нашем случае это будет массив {0:0:0:0:5:6:7:0:0}.

С помощью функции НАИБОЛЬШИЙ() выведем 3 значения из позиции 5 (строка 15 листа), 6 (16) и 7 (17), т.е. значения Товар2, Товар2 и Товар3.

Для этого используем выражение СЧЁТЕСЛИ($A$11:$A$19;$E$6)+СЧЁТЕСЛИ($A$11:$A$19;$E$7)-ЧСТРОК($A$11:A11)+1, которое последовательно (начиная со строки 11) будет возвращать числа 3; 2; 1; 0; -1; -2; … Формула НАИБОЛЬШИЙ(…;3) вернет число 5, НАИБОЛЬШИЙ(…

;2) вернет число 6, НАИБОЛЬШИЙ(…;1) вернет число 7, а НАИБОЛЬШИЙ(…;0) и далее вернет ошибку, которую мы скроем условным форматированием.

И наконец, с помощью функции ИНДЕКС() последовательно выведем наши значения из соответствующих позиций: =ИНДЕКС(A$11:A$19;5) вернет Товар2, =ИНДЕКС(A$11:A$19;6) вернет Товар2, =ИНДЕКС(A$11:A$19;7) вернет Товар3.

10. Отбор значений с учетом повторов

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

  • Наиболее популярные статьи из этого раздела:
  • Отбор уникальных значений (убираем повторы из списка) в MS EXCEL
  • Отбор уникальных значений с суммированием по соседнему столбцу в MS EXCEL
  • Отбор повторяющихся значений в MS EXCEL
  • Отбор уникальных значений из двух диапазонов в MS EXCEL
  • Отбор уникальных СТРОК с помощью Расширенного фильтра в MS EXCEL
  • В качестве примера приведем решения следующей задачи: Выбрать Товары, цена которых лежит в определенном диапазоне и повторяется заданное количество раз или более.
  • В качестве исходной возьмем таблицу партий товаров.

Предположим, что нас интересует сколько и каких партий товаров поставлялось по цене от 1000р. до 2000р. (критерий 1). Причем, партий с одинаковой ценой должно быть минимум 3 (критерий 2).

  1. Решением является формула массива:
  2. =НАИМЕНЬШИЙ(СТРОКА($A$14:$A$27)*($C$14:$C$27>=$B$7)*($C$14:$C$27=$B$10);F14+($G$8-$G$9))
  3. Эта формула возвращает номера строк, которые удовлетворяют обоим критериям.
  4. Формула =СУММПРОИЗВ(($C$14:$C$27>=$B$7)*($C$14:$C$27=$B$10)) подсчитывает количество строк, которые удовлетворяют критериям.

В файле примера на листе «10.Критерий — колич-во повторов» настроено Условное форматирование, которое позволяет визуально определить строки удовлетворяющие критериям, а также скрыть ячейки, в которых формула массива возвращает ошибку #ЧИСЛО!

11. Используем значение критерия (Любой) или (Все)

В фильтре Сводных таблиц MS EXCEL используется значение (Все), чтобы вывести все значения столбца. Другими словами, в выпадающем списке значений критерия содержится особое значение, которое отменяет сам критерий (см. статью Отчеты в MS EXCEL, Отчет №3).

В файле примера на листе «11. Критерий Любой или (Все)» реализован данный вариант критерия.

Формула в этом случае должна содержать функцию ЕСЛИ(). Если выбрано значение (Все), то используется формула для вывода значений без учета данного критерия. Если выбрано любое другое значение, то критерий работает обычным образом.

  • =ЕСЛИ($C$8=»(Все)»;НАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8);F13+($G$6-$G$7));
  • НАИМЕНЬШИЙ((СТРОКА($B$13:$B$26)-СТРОКА($B$12))*($D$13:$D$26>=$D$8)*($C$13:$C$26=$C$8);F13+($G$6-$G$7)))
  • Остальная часть формулы аналогична рассмотренным выше.

Источник: https://excel2.ru/articles/zapros-na-vyborku-dannyh-formuly-v-ms-excel

Excel выборка данных из таблицы

​Смотрите также​ новый формат. Чтобы​ выпадающего списка. Нам​Задача №2 – выбрать​ строка таблицы будет​ из таблицы (например,​ своеобразный отчет, который​.​ условным форматированием. Установим​.

​ в позицию​​ положение​​ результатов, которые удовлетворяют​ со строки 11)​ этого События: ЕСЛИ($D$15:$D$21;СТРОКА(A$15:A$21);»»)​: После ввода формулы вместо​ которая возвращает несколько​

​Суть запроса на выборку​ формат присваивался для​ нужны все Фамилии​ из исходной таблицы​ на 5 меньше​ текстовых), из которых​ можно форматировать в​Активируется окно настройки сортировки.​ первым ограничением нижнюю​Аналогичным образом в столбец​«Равно»​«ИЛИ»​ заданным условиям, с​ будет возвращать числа​

1. Один числовой критерий (Выбрать те Товары, у которых цена выше минимальной)

​- Функция НАИМЕНЬШИЙ() сортирует​ клавиши ENTER (ВВОД)​ значений, то можно​ – выбрать из​ целой строки, а​ клиентов из столбца​

​ товары, которые поступили​ чем соответственная строка​ функция ИНДЕКС выберет​ стиль отличный от​ Обязательно устанавливаем галочку​ границу отбора по​

​ с выручкой вписываем​. В поле справа​, то тогда останутся​ последующим выводом их​ 3; 2; 1;​ полученный массив номеров​​ нужно нажать сочетание​​ использовать другой подход,​ исходной таблицы строки,​ не только ячейке​ A, без повторений.​ в продажу 20.09.2015.​ листа.​

​ одно результирующие значение.​ исходной таблицы. В​

​ напротив параметра​ выручке в 15000​ формулу следующего содержания:​ от него вписываем​ значения, которые подходят​ на листе отдельным​ 0; -1; -2;​ строк: первыми идут​ клавиш CTRL+SHIFT+ENTER. Это​ который рассмотрен в​ удовлетворяющие определенным критериям​ в столбце A,​

​Перед тем как выбрать​ То есть критерий​​После того как будут​​ Аргумент «диапазон» означает​ этот отчет можно​«Мои данные содержат заголовки»​​ рублей, а вторым​​=ИНДЕКС(C2:C29;НАИМЕНЬШИЙ(ЕСЛИ(15000​

​ слово​​ под любое из​​ списком или в​ … Формула НАИБОЛЬШИЙ(…;3) вернет​ номера строк Событий,​

  • ​ сочетание клавиш используется​​ разделах ниже: 5.а,​
  • ​ (подобно применению стандартного​​ мы используем смешанную​​ уникальные значения в​​ отбора – дата.​​ отобраны все минимальные​ область ячеек с​
  • ​ вынести не все​, если шапка имеется,​​ условием верхнюю границу​​Опять набираем сочетание клавиш​«Картофель»​ двух условий. В​

​ исходном диапазоне.​​ число 5, НАИБОЛЬШИЙ(…;2) вернет​

​ которые удовлетворяют критерию;​ для ввода формул​ 7, 10 и​ Фильтра). Произведем отбор значений​ ссылку в формуле​ Excel, подготовим данные​​ Для удобства искомую​​ значения и сопоставлены​

​ числовыми значениями, из​ столбцы, а только​ а галочки нет.​​ в 20000 рублей.​​Ctrl+Shift+Enter​. Переключатель нижнего блока​ нашем случае нужно​

​Наиболее простым способом произвести​ число 6, НАИБОЛЬШИЙ(…;1) вернет​- Функция ИНДЕКС() выводит​ массива.​ 11. В этих​ из исходной таблицы​

​ =$A4.​​ для выпадающего списка:​ дату введем в​ все номера строк​ которых следует выбрать​ нужные (хотя после​ В поле​Вписываем в отдельном столбце​

​.​ так же ставим​ выставить переключатель в​ отбор является применение​ число 7, а НАИБОЛЬШИЙ(…;0)​ названия Событий из​Скопируйте формулу массива вниз​ случаях используются формулы​ с помощью формул​KDE123​Выделите первый столбец таблицы​ отдельную ячейку, I2.​

2. Два числовых критерия (Выбрать те Товары, у которых цена попадает в диапазон)

​ таблицы функция МИН​ первое наименьшее число.​ применения фильтра ненужные​«Сортировать по»​ граничные условия для​

​Во всех трех случаях​ в позицию​ положение​​ расширенного автофильтра. Рассмотрим,​​ и далее вернет​

​ указанный строк.​ на нужное количество​ массива, возвращающие одно​ массива. В отличие​: Помогите, пожалуйста!​ A1:A19.​

​Для решения задачи используется​ выберет наименьший номер​ В аргументе «заголовок_столбца»​ столбцы можно скрыть).​указываем наименование того​ выборки.​ меняется только первое​«Равно»​«И»​ как это сделать​ ошибку, которую мы​Пусть имеется Исходная таблица​ ячеек. Формула вернет​

​ значение. ​​ от применения Фильтра​​Необходимо из таблицы​Выберите инструмент: «ДАННЫЕ»-«Сортировка и​ аналогичная формула массива.​

  1. ​ строки. Эта же​​ для второй функции​​Основной недостаток – сложность​
  2. ​ столбца, в котором​

​Как и в предыдущем​​ значение координат, а​​. В поле напротив​​, то есть, оставить​​ на конкретном примере.​

  • ​ скроем условным форматированием.​ с перечнем Товаров​​ только те значения​​Пусть имеется Исходная таблица​ (​
  • ​ на листе «Разработка»​​ фильтр»-«Дополнительно».​​ Только вместо критерия​
  • ​ строка будет содержать​
  • ​ СТРОКА, следует указать​ реализации трехуровневого Связанного​ содержатся скопированные значения​ способе, поочередно выделяем​ в остальном формулы​ него делаем запись​​ данную настройку по​​Выделяем область на листе,​

​И наконец, с помощью​ и Датами поставки​ Товаров, которые были​​ с перечнем Товаров​​CTRL+SHIFT+L​ выбрать строки для​В появившемся окне «Расширенный​ }.​ первое наименьшее число,​ ссылку на ячейку​

​ списка. Но, единожды​ случайных чисел. В​ пустые столбцы новой​ полностью идентичны.​ –​ умолчанию. После того,​ среди данных которой​ функции ИНДЕКС() последовательно​

​ (см. файл примера,​ поставлены в диапазоне​ и Ценами (см.​или Данные/ Сортировка​ которых состояние «Вып»​ фильтр» включите «скопировать​Подобные формулы вводятся и​ которое встречается в​

​ с заголовком столбца,​ его создав и​ поле​ таблицы и вписываем​

3. Один критерий Дата (Выбрать те Товары, у которых Дата поставки совпадает заданной)

  1. ​Как видим, таблица заполнена​«Мясо»​ как все значения​ нужно произвести выборку.​ выведем наши значения​ лист 2 критерия​
  2. ​ указанных дат. В​ файл примера, лист​ и фильтр/ Фильтр)​
  3. ​ и дата разработки​
  4. ​ результат в другое​

4. Два критерия Дата (Выбрать те Товары, у которых Дата поставки попадает в диапазон)

  • ​ в другие столбцы​ столбце B6:B18. На​ который содержит диапазон​ поняв принцип работы,​«Сортировка»​
  • ​ в них соответствующие​ данными, но внешний​

​. И вот далее​​ введены, щелкаем по​ Во вкладке​ из соответствующих позиций:​ — Дата-Текст).​

​ остальных ячейках будут​​ Диапазон Чисел).​​ отобранные строки будут​

​ находится в пределах​​ место», а в​

​ (принцип см. выше).​

​ основании этого номера​​ числовых значений.​ этот недостаток в​оставляем настройки по​ три формулы. В​ вид её не​ мы выполняем то,​ кнопке​

​«Главная»​ =ИНДЕКС(A$11:A$19;5) вернет Товар2, =ИНДЕКС(A$11:A$19;6) вернет Товар2, =ИНДЕКС(A$11:A$19;7) вернет Товар3.

​В отличие от Задачи​ содержаться ошибки #ЧИСЛО!​Критерии (нижнюю и верхнюю​ помещены в отдельную​ границы «Начало отсчета​ поле «Поместить результат​Теперь используем текстовый критерий.

​ строки функции ИНДЕКС​Естественно эту формулу следует​ достаточной мере компенсируется.​ умолчанию. В поле​

  1. ​ первый столбец вносим​ совсем привлекателен, к​ чего ранее не​
  2. ​«OK»​​щелкаем по кнопке​​В разделе Отбор на​ 5 будем отбирать​ Ошибки в файле примера​
  3. ​ границы цены) разместим​
  4. ​ таблицу.​ — Конец отсчета»​ в диапазон:» укажите​
  5. ​ Вместо даты в​​ выберет соответствующее значение​ выполнять в массиве.​Алгоритм создания запроса на​«Порядок»​ следующее выражение:​
  6. ​ тому же, значения​
  7. ​ делали: устанавливаем переключатель​

​.​«Сортировка и фильтр»​​ основании повторяемости собраны​​ строки только того​ (Лист 4.Диапазон Дат) скрыты​ в диапазоне​В этой статье рассмотрим​

​ (Столбец L). Выбранные​​ $F$1.​ ячейку I2 введем​ из таблицы A6:A18.​ Поэтому для подтверждения​

  • ​ выборку следующий:​можно выбрать параметр​=ИНДЕКС(A2:A29;НАИМЕНЬШИЙ(ЕСЛИ(($D$2=C2:C29);СТРОКА(C2:C29);»»);СТРОКА(C2:C29)-СТРОКА($C$1))-СТРОКА($C$1))​ даты заполнены в​ совместимости условий в​Теперь в таблице остались​
  • ​. Она размещается в​ статьи о запросах​ Товара, который указан​ с помощью Условного​

5. Один критерий Дата (Выбрать те Товары, у которых Дата поставки не раньше/ не позже заданной)

  1. ​Е5:Е6​ наиболее часто встречающиеся​ данные разместить на​Отметьте галочкой пункт «Только​ текст «Товар 1».​ В итоге формула​ ее ввода следует​
  2. ​ШАГ 1​ как​В последующие колонки вписываем​ ней некорректно. Нужно​
  3. ​ позицию​

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

​ запросы, например: отбор​ новом листе.​ уникальные записи» и​ Немного изменим формулу​ возвращает это значение​ нажимать не просто​Сначала создадим Лист​«По возрастанию»​ точно такие же​ исправить эти недостатки.​«ИЛИ»​

5а. Один критерий Дата (Выбрать События, которые Закончились/ не начались/ происходят на заданную дату)

​ которых сумма выручки​«Редактирование»​ Из повторяющихся данных​

​ дат должен быть​Аналогичную формулу нужно ввести​Т.е. если Цена Товара​ строк таблицы, у​Хотелось бы все​ нажмите ОК.​ массива: {}.​ в ячейку B3​

  • ​ клавишу Enter, а​Списки​, так и​ формулы, только изменив​ Некорректность даты связана​. Теперь строчка, содержащая​ не меньше 10000​
  • ​. В открывшемся после​
  • ​ сначала отбираются уникальные​ отсортирован (для каждого​ и для дат​ попадает в указанный​ которых значение из​ это сделать без​В результате мы получили​Такая большая функция выборки​ в качестве результата​ целую комбинацию клавиш​, в котором будут​«По убыванию»​
  • ​ координаты сразу после​ с тем, что​ любое из указанных​
  • ​ рублей, но не​
  • ​ этого списка выполняем​
  • ​ значения, а соответствующие​ из товаров), по​ в столбец E.​ интервал, то такая​

​ числового столбца попадает​ макросов.​ список данных с​ в Excel.​ вычисления.​

​ CTRL+SHIFT+Enter. Если все​ содержаться перечень дирекций​. Для случайной выборки​

6. Два критерия: Дата и Текст (Выбрать Товары определенного вида, у которых Дата поставки не позже заданной)

  1. ​ наименования оператора​ формат ячеек соответствующего​ условий, будет выводиться​ превышает 15000 рублей.

    ​ щелчок по кнопке​ им значения в​

  2. ​ товару сортировка не​В ячейке​ запись появится в​ в заданный диапазон​Алексей К​ уникальными значениями (фамилии​​Поняв принцип действия формулы,​ сделано правильно в​ и названия отделов​
  3. ​ это значения не​ИНДЕКС​ столбца общий, а​ на экран. Щелкаем​
  4. ​Аналогично можно настраивать фильтры​​«Фильтр»​
  5. ​ других столбцах -​

​ требуется.​J12​ новой таблице Отфильтрованные​ (интервал); отбор строк,​: С использованием расширенного​ без повторений).​Сначала возьмем два числовых​ теперь можно легко​ строке формул появятся​ (см. файл примера).​ имеет. После того,​на соответствующие нужным​ нам нужно установить​ по кнопке​ и в других​

​.​​ группируются (складываются, усредняются​Для отбора строк, дата​вычислено количество строк​ данные.​ у которых дата​ фильтра во вложении.​​

7. Один Текстовый критерий (Выбрать Товары определенного вида)

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

​ формат даты. Выделяем​«OK»​ столбцах. При этом​Есть возможность поступить и​ и пр.).​ которых не позже​ исходной таблицы, удовлетворяющих​В отличие от предыдущей​ принаждежит определенному периоду;​

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

  • ​KDE123​Теперь нам необходимо немного​Задача – отобрать товары,​ настраивать под другие​Обратите внимание ниже на​А​
  • ​ жмем на кнопку​ аналогии с предыдущим​
  • ​ весь столбец, включая​​.​
  • ​ имеется возможность сохранять​ по-другому. Для этого​Наиболее популярные статьи из​
  • ​ (включая саму дату),​ критериям:​ задачи создадим два​ задачи с 2-мя​

9. Два Текстовых критерия (Выбрать Товары определенных видов)

​: Здорово! Спасибо!​ модифицировать нашу исходную​ которые стоят меньше​ условия. Например, формулу​ рисунок, где в​) будет извлекаться формулой​

  1. ​«OK»​ способом.​ ячейки с ошибками,​Как видим, в новой​
  2. ​ также фильтрацию и​ после выделения области​
  3. ​ этого раздела:​​ используется формула массива:​

​=СЧЁТЕСЛИМН(B12:B20;»>=»&$E$6;B12:B20;»​ Динамических диапазона: Товары​ текстовыми критериями и​Поясни как работает.​ таблицу. Выделите первые​ 400 и больше​ можно изменить так,​ ячейку B3 была​ массива из исходной​.​

​Каждый раз после ввода​ и кликаем по​ выборке существуют ограничения​ по предыдущим условиям,​ на листе перемещаемся​Отбор уникальных значений (убираем​=ИНДЕКС(A13:A21;​Строки исходной таблицы, которые​ и Цены (без​

​ другие. Начнем с​ Как обновить результаты​ 2 строки и​ 200 рублей.

Объединим​ чтобы выбрать первое​ введена данная формула​ таблицы с перечнем​После этого все значения​ не забываем набирать​ выделению правой кнопкой​ по дате (с​ которые были заданы​ во вкладку​ повторы из списка)​НАИМЕНЬШИЙ(ЕСЛИ(($E$7=$A$13:$A$21)*($E$8>=$B$13:$B$21)*($B$13:$B$21>0);СТРОКА($B$13:$B$21);»»);СТРОКА($B$13:$B$21)-СТРОКА($B$12))​ удовлетворяют критериям, выделены также​ них можно обойтись,​ простых запросов.​ отбора, изменив критерии​ выберите инструмент: «ГЛАВНАЯ»-«Ячейки»-«Вставить»​ условия знаком «*».​

​ максимальное значение в​ в массиве:​ сотрудников:​ таблицы выстраиваются в​ сочетание клавиш​

10. Отбор значений с учетом повторов

Источник: https://my-excel.ru/tablicy/excel-vyborka-dannyh-iz-tablicy.html

Как упростить выборку данных из нескольких однотипных отчетов в Excel

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

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

Чтобы упростить поиск и выборку таких значений, создадим еще один файл в Excel, в который скопируем все исходные однотипные таблицы из одиночных файлов.

В новом файле будет три вида листов. Первый предназначен для оглавления. Второй – рабочий, именно здесь будут задаваться параметры поиска и выводиться искомое значение. Для примера, результат выборки сумм оплат за IV квартал одному из трех контрагентов – компании «Гурман» приведен на рисунке 1.

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

Количество таких листов должно соответствовать количеству однотипных таблиц, участвующих в выборке.

Рисунок 1. Рабочий лист Скачать

Создаем лист «Оглавление книги». Здесь нужно будет перечислить имена листов с исходными данными. Имена вносятся вручную начиная с ячейки А3.

  • Например, для трех контрагентов это может выглядеть как на рисунке 2.
  • Рисунок 2. Оглавление

Далее каждой исходной таблице необходимо присвоить имя, соответствующее названию листа. Для этого ее нужно выделить, нажать правую кнопку мыши, выбрать из появившегося контекстного меню пункт «Имя диапазона», ввести название и нажать «ОК». Например, это может выглядеть как на рисунке 3. Лист исходных данных.

  1. Рисунок 3. Лист исходных данных
  2. Кстати, имя таблице можно назначить, воспользовавшись вкладкой меню «Формулы» – в группе «Определенные имена» выбрать «Диспетчер имен» (аналогично комбинации клавиш Ctrl + F3), далее – «Создать», ввести название и нажать «ОК».

По той же схеме назначается имя «Поставщик» диапазону на листе «Оглавление книги» с перечислением названий исходных листов. Например, на рисунке 4 это диапазон «А3:А5», рассчитанный на трех контрагентов.

Рисунок 4. Название пунктов оглавления

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

Пользователю будет удобнее, если он сможет указать наименование нужного контрагента в заданном списке. Для создания такого списка выбираем в меню вкладку «Данные», группу «Работа с данными», далее – «Проверка данных», тип данных «Список», в поле «Источник» вводим ранее заданное имя «Поставщик» (например, на рисунке 5.

Создание перечня поставщиков показано, как этот список создается в ячейке В1).

Рисунок 5. Создание перечня поставщиков

Для параметра «Период» также создается раскрывающийся список, но возможные значения вводятся вручную через точку с запятой в соответствующей ячейке: I;II;III;IV. Например, на рисунке 6. Создание списка периодов отражено, как такой список готовится в ячейке В3.

Рисунок 6. Создание списка периодов

Наконец задается формула, которая будет искать нужные данные по заданным параметрам. Она вводится в ячейку, в которой они должны отражаться. Например, на рисунке 7. Ввод формулы, связующей условия выборки данных это ячейка В5, а формула выглядит так: «=ВПР($B$3;ДВССЫЛ($B$1);2;ЛОЖЬ)», где:

Рисунок 7. Ввод формулы, связующей условия выборки данных

Сергей Изотов, руководитель направления финансовой и нематериальной мотивации персонала ГК «Блок»

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

Для этого нужно открыть редактор Visual Basic Editor (комбинация клавиш «Alt+F11» или кликнуть правой кнопкой мыши на ярлык любого листа и выбрать «Исходный текст» или же в группе «Код» вкладки меню «Разработчик» щелкнуть по пункту «Visual Basic») и вставить в проект стандартный модуль. А в этот модуль добавить два кода программы (см. рисунок 8. Код программы) – ListSheet и NameAdded.

Рисунок 8. Код программы

С помощью макроса ListSheet на листе «Оглавление книги» создается список, состоящий из гиперссылок на листы с исходными данными (см. перечень контрагентов в оглавлении книги). Текст макроса выглядит так:

Поскольку оглавление по умолчанию формируется из всех листов файла (по порядку, слева направо), а нужно первые два по порядку – «Оглавление книги» и «Рабочий лист» – в нем пропустить, предпоследней строкой программы удаляются данные из диапазона ячеек A1:A2, куда попадут названия этих служебных листов («Sheets(«Оглавление книги»).Range(«A1:A2»).ClearContents»).

Макрос NameAdded присваивает таблицам с исходными значениями имена, соответствующие названиям листов, на которых они расположены. Внимание! Последние не должны содержать пробелов.

Это условие позволяет исключить распространение действия макроса на листы «Оглавление книги» и «Рабочий лист».

Кстати, при попытке присвоить имя макрос проверяет, есть ли в названии листа пробел: если да – это признается ошибкой, которая удаляется (строка 13 Err.Clear).

Сам макрос приведен ниже:

При копировании кода второй программы следует учесть несколько моментов. А именно какие строки можно менять при использовании для нужд другой компании. В частности, четвертая строка (nm.

Delete) удаляет ранее существующие имена исходных таблиц, пятая (Next nm) означает переход к следующему имени. В седьмой строке в переменную «sAlert» записываются названия листов, которые не могут быть использованы в именах, например, первые два листа: «Оглавление книги» и «Рабочий лист».

В 10 строке (Names.Add Name:=wks.Name, RefersTo:=wks.Range) указывается диапазон, которому следует присвоить имя.

В строке 17 (MsgBox) выводятся названия листов, которые не могут быть использованы в именах. В строке 18 (Names.Add Name:=»Поставщик», RefersTo:=Range («’Оглавление книги) указывается диапазон ячеек, из которых формируется список оглавления. Например, это может быть диапазон A3:A5.

Запустить оба кода программы можно нажатием сочетания клавиш «Alt+F8» или в окне «Макрос» выбрать макросы по названию и нажать кнопку «Выполнить».

В результате работы макросов получится готовый к работе файл.

Источник: https://www.fd.ru/recommend/2351-kak-uprostit-vyborku-dannyh-iz-neskolkih-odnotipnyh-otchetov-s-pomoshchyu-excel

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