Страницы: 1
RSS
Выборка данных по значению
 
День добрый, помогите с выборкой данных.

Есть большая таблица, посредством Power Query я выгружаю нужные мне колонки (лист: входные данные). Далее мне нужно выбрать из (лист: входные данные) по признаку(лист: справочник) все данные в (лист: выходные данные). Иногда признаки со справочника совпадают, но с нулевым значением....данный признак не попадает в (лист: выходные данные).
Буду очень признателен за подсказку решения.
 
vsolovev, что то не много мне не понятно, на листе выход.дни - там должен подтянутся номер маршрута? или сумма?  что вы атм вручную ставите а что в итоге подтягивается
Изменено: a.i.mershik - 04.09.2018 15:38:38
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
a.i.mershik написал:
там должен подтянутся номер маршрута? или сумма?
там нет ни номера ни суммы. Это количество маршрутов за какой  то период. Изменил файл, добавил колонку (кал.машин)
Изменено: vsolovev - 04.09.2018 15:53:02
 
vsolovev, думаю вот это вам поможет правда он просто все данные покажет но иъ можно отредактировать удалив нулевые и все

https://www.planetaexcel.ru/techniques/3/55/
Изменено: a.i.mershik - 04.09.2018 16:03:44
Не бойтесь совершенства. Вам его не достичь.
 
буду пробовать, спасибо
 
не получается.
Первый вариант, уже использую Power Query. И (лист: входные данные) , продукт Power Query.
Второй вариант, не мой...у меня 2010 офис сводных таблиц нет.  
 
vsolovev, та макрос прочитайте внимательно...
Не бойтесь совершенства. Вам его не достичь.
 
Основная беда, это выборка по справочнику. Первоначальная таблица, имеет около 1000 строк. А нужно выбрать из общего массива только значения строго по справочнику справочник
 
vsolovev, еще вариант тогда расширеный фильтр где вы пропишите все условия для выьора из вашей таблицы все исчезнет кроме нужного  https://www.planetaexcel.ru/techniques/2/197/

Вашу таблицу просто вставил в пример файла сссылку на который дал ...там почитаете ви все понятно будет ...может в таком виде вам подойдет.
Изменено: a.i.mershik - 04.09.2018 16:44:16
Не бойтесь совершенства. Вам его не достичь.
 
не получается(((
 
vsolovev, что не получается? файл пример работает?! то что нужно!?
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
a.i.mershik написал: что нужно
нужно сортировать их на строительную и монтажную, вся соль в этом.  
 
vsolovev, ну сделайте один раз поиск для одних скопируйте в другое место потом аналогично для других и все.
Не бойтесь совершенства. Вам его не достичь.
 
и мне с этого списка нужно по признакам СПРАВОЧНИКА определить, что АДМ-1 это МОНТАЖНАЯ машина, а АВФ-1 это СТРОИТЕЛЬНАЯ и записать их в (лист: выходные данные).    

ИЛИ, Я ВАС НЕ ПОНИМАЮ ил САМ ПЛОХО ПЕРЕДАЮ СВОЮ МЫСЛЬ, в любом случае извините.
ОКТАДМ-1
АДМ-2
АДМ-3
РНЖ-1/01
ДНЖ-1/01
МС-1
МС-1
АВФ-1
АВФ-1
ЗБАВФ-1
АДМ-1
АДМ-2
МС-1
МС-1
АВФ-1
АВФ-1
РНЖ-1/01
ДНЖ-1/01
Д-ВМС-2
АДМ-2
АДМ-3
КЖС-16-61/01
 
vsolovev, кнопка цитирования не для ответа.
 
Проверьте. Нагородил, но работает ))
Итоговую таблицу вручную очищать не нужно - макрос сделает это сам.
 
Юрий М, у меня ошибка 1004 на Merge
Если запуск через кнопку то все гуд.
Изменено: ivanok_v2 - 04.09.2018 22:21:58
 
Для того и кнопка ) Но у меня и из редактора работает без сбоев.
 
может в офисе проблема? у меня 2013
 
Аналогично.
 
Активный лист какой?
 
любой где нет кнопки
 
Нужно с третьего.
 
Доброе время суток
Версия сводной с источником запросом Power Query.
 
Цитата
vsolovev написал:
у меня 2010 офис сводных таблиц нет
Вот это удивляет )
 
)))
Ваш вариант с макросом, очень крутой....буду от него одталкиваться. Спасибо большое
 
Код
FreeRow1 = 2
    RowStart = 2
    n = 3
    With Sheets("ЕС")
        LastRow = .Cells(Rows.Count, 2).End(xlUp).Row
        For i = n To LastRow
            If .Cells(i, 1) <> "" Then
                DR = .Cells(i, 1)
                Cells(FreeRow1, 1) = .Cells(i, 1)
            End If
            For ii = i To LastRow
                If .Cells(ii, 1) = DR Or .Cells(ii, 1) = "" Then
                    If .Cells(ii, 3) > 0 Then
                        Set Rng = Sheets("справочник").Range("B2:C999").Find(what:=.Cells(ii, 2), LookIn:=xlValues, LookAt:=xlWhole)
                        If Not Rng Is Nothing Then
                            If Rng.Column = 2 Then
                                Cells(FreeRowStroy, 2) = .Cells(ii, 2)
                                Cells(FreeRowStroy, 4) = .Cells(ii, 3)
                                CounterStroy = CounterStroy + 1
                                FreeRowStroy = FreeRowStroy + 1
                            Else
                                Cells(FreeRowMont, 5) = .Cells(ii, 2)
                                Cells(FreeRowMont, 7) = .Cells(ii, 3)
                                CounterMont = CounterMont + 1
                                FreeRowMont = FreeRowMont + 1
                            End If
                        End If
                    End If
                Else
                    i = ii - 1
                    If FreeRowStroy > FreeRowMont Then
                        FreeRow1 = FreeRowStroy
                    Else
                        FreeRow1 = FreeRowMont
                    End If
                    Cells(FreeRow1, 2) = "Итого:" & DR
                    Cells(FreeRow1, 3) = CounterStroy
                    Cells(FreeRow1, 5) = "Итого:" & DR
                    Cells(FreeRow1, 6) = CounterMont
                    Cells(FreeRow1, 7) = "summa"         <<<-------------------     подскажите как суммировать нужный диапазон
                    CounterStroy = 0
                    CounterMont = 0
                    With Range(Cells(RowStart, 1), Cells(FreeRow1, 1))
                        .Merge
                        .HorizontalAlignment = xlCenter
                        .VerticalAlignment = xlCenter
                        .BorderAround Weight:=xlThin
                    End With
                    Range(Cells(FreeRow1, 2), Cells(FreeRow1, 7)).Interior.ColorIndex = 15
                    Range(Cells(RowStart, 2), Cells(FreeRow1, 7)).Borders.LineStyle = True
                    RowStart = FreeRow1 + 1
                    FreeRow1 = FreeRow1 + 1
                    FreeRowStroy = FreeRow1
                    FreeRowMont = FreeRow1
                    Exit For
                End If
            Next
            If ii > LastRow Then
                Cells(FreeRow1 + 1, 2) = "Итого:"
                Cells(FreeRow1 + 1, 3) = CounterStroy
                Cells(FreeRow1 + 1, 5) = "Итого:"
                Cells(FreeRow1 + 1, 6) = CounterMont
                With Range(Cells(RowStart, 1), Cells(FreeRow1 + 1, 1))
                    .Merge
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                    .BorderAround Weight:=xlThin
                End With
                Range(Cells(FreeRow1 + 1, 2), Cells(FreeRow1 + 1, 7)).Interior.ColorIndex = 15
                Range(Cells(RowStart, 2), Cells(FreeRow1 + 1, 7)).Borders.LineStyle = True
                Exit Sub
            End If
        Next
    End With
    Application.ScreenUpdating = True
End Sub



Изменено: vsolovev - 05.09.2018 16:04:09
 
Cells(FreeRow1, 7) = "summa"         <<<-------------------     подскажите как суммировать нужный диапазон
Изменено: vsolovev - 05.09.2018 16:04:31
 
Поменял файл в #15.
Страницы: 1
Наверх