Страницы: 1 2 След.
RSS
Выделение строк подходящих под критерии
 
Имеется огромный список скважин, на каждой из которой имеется история работы по годам. Необходимо отобрать первый год работы скважин, а также год с наибольшей добычей нефти. Создал по условию  =НАИБОЛЬШИЙ(ЕСЛИ(A2:A84=J2;D2:D84;"");1) и отбирается только ячейка по добыче нефти, а нужно чтобы отбиралась целая строка с датой, днями работы и еще добытой жидкостью. Подскажите пожалуйста!
 
Цитата
Zaker1g написал:
Выделение
что под этим подразумевается7 нужно просто выделить строку мышкой? покажите в файле желаемый результат руками
Изменено: Mershik - 22.10.2020 15:37:44
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
просто выделить строку мышкой
Нужно заполнить форму во втором листе, я привёл две скважины в примере. Желаемый результат находится там же, в требуемой форме.

з.ы. Ранее с формулами и массивами в экселе дел не имел, опыта, к сожалению мало
Изменено: Zaker1g - 22.10.2020 15:45:14
 
Zaker1g, формулами только? а откуда скважина 10?
Изменено: Mershik - 22.10.2020 15:51:31
Не бойтесь совершенства. Вам его не достичь.
 
Mershik,Да, только формулами, ибо в базе около 4000 скважин, руками искать в фильтрах уходит очень много времени
 
Zaker1g, т.е. вы думаете что 4000 быстро обработать формулами? может все таки макрос?) (выше добавил вопрос ответьте)
ловите короче
Изменено: Mershik - 22.10.2020 15:53:21
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Zaker1g написал:
Да, только формулами, ибо в базе около 4000 скважин
А макросом?
 
Цитата
Mershik написал:
а откуда скважина 10
Скважина 10 в форме тоже, для примера была, в базу не внёс просто.
Цитата
Михаил Витальевич С. написал:
А макросом?
Цитата
Mershik написал:
может все таки макрос?)
Никогда ими не пользовался, если честно...
 
Цитата
Mershik написал:
ловите короче
Посмотрел Ваш пример, но на 4 скважине первый год эксплуатации составляет 2010 год, а у Вас почему то 2013. И максимальная добыча была в 2019 году, а у Вас 2016.  
Изменено: Zaker1g - 22.10.2020 16:02:25
 
Zaker1g, на какой скважине?
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
на какой
Исправил, на 4 скважине.  
 
Zaker1g, замените формулу в B3 протянитее
Код
=ЕСЛИОШИБКА(ИНДЕКС('База скважин'!B$2:B$84;АГРЕГАТ(15;6;СТРОКА('База скважин'!$B$1:$B$84)/('Требуемая форма'!$A3='База скважин'!$A$2:$A$84);СТРОКА($A$1)));"")
и так же в G3
Код
=ЕСЛИОШИБКА(ИНДЕКС('База скважин'!B$2:B$84;АГРЕГАТ(14;6;СТРОКА('База скважин'!$B$1:$B$84)/('Требуемая форма'!$A3='База скважин'!$A$2:$A$84);СТРОКА($A$1)));"")
Не бойтесь совершенства. Вам его не достичь.
 
Вариант с PQ подойдет? Все что надо делать после внесения данных становиться на поле зеленой таблицы и правой кнопкой мыши нажимать обновить.
Изменено: DemonAMT - 22.10.2020 16:24:02
 
Zaker1g,  ловите еще макрос
Код
Sub dsds()
Dim sh As Worksheet, sh2 As Worksheet, i As Long, lr As Long, col As New Collection, cell As Range, cell2 As Range
Set sh = Worksheets("База скважин"): Set sh2 = Worksheets("Требуемая форма")
sh2.Range("A3:E10000").Clear: sh2.Range("G3:J10000").Clear

lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
Z = 3
For i = 2 To lr
    On Error Resume Next
    If sh.Cells(i, 1) <> "" Then col.Add sh.Cells(i, 1).Value, CStr(sh.Cells(i, 1).Value)
Next i
For i = 1 To col.Count
    x = 99999999
    x2 = 0
    sh2.Cells(2 + i, 1) = col(i)
    For k = 2 To lr
        If col(i) = sh.Cells(k, 1) Then
        If sh.Cells(k, 2) < x Then
            x = k
        Else
            x2 = k
        End If
        End If
    Next k
        sh.Range(sh.Cells(x, 2), sh.Cells(x, 5)).Copy Destination:=sh2.Cells(Z, 2)
        sh.Range(sh.Cells(x2, 2), sh.Cells(x2, 5)).Copy Destination:=sh2.Cells(Z, 7)
        Z = Z + 1
Next i
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
и так же в G3
B3 заменил, первый год эксплуатации перекинулся без ошибок, а вот с G3 максимальная добыча за год чаще всего указывает почему то последний представленный год работы скважины.
Цитата
Mershik написал:
ловите еще макрос
Спасибо за макрос! Кстати в нём тоже наблюдается точно такая же тенденция(
 
Цитата
DemonAMT написал:
Вариант с PQ
Интересный вариант, благодарю! Но смогу ли я его переписать в ручную на рабочем компьютере, в виду невозможности перенести данный файл со своего стационарного?
 
Сохраните файл на флешку или отправьте на эл.почту ну или зайдите в свой акк с сайта планеты Excel на раб компе. Ну или админов с работы попросите вытащить этот вариант с сайта на раб комп.
Изменено: DemonAMT - 22.10.2020 16:47:34
 
Цитата
Zaker1g написал:
представленный год работы скважины.
а нужно иначе?)
я просто с этой логикой и делал...заменил макрос
Код
Sub dsds()
Dim sh As Worksheet, sh2 As Worksheet, i As Long, lr As Long, col As New Collection, cell As Range, cell2 As Range
Set sh = Worksheets("База скважин"): Set sh2 = Worksheets("Требуемая форма")
sh2.Range("A3:E10000").Clear: sh2.Range("G3:J10000").Clear

lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
Z = 3
For i = 2 To lr
    On Error Resume Next
    If sh.Cells(i, 1) <> "" Then col.Add sh.Cells(i, 1).Value, CStr(sh.Cells(i, 1).Value)
Next i
For i = 1 To col.Count
    x = 99999999
    x2 = 0
    sh2.Cells(2 + i, 1) = col(i)
    For k = 2 To lr
        If col(i) = sh.Cells(k, 1) Then
        If sh.Cells(k, 2) < x Then
            x = k
        End If
        If sh.Cells(k, 5) > x2 Then
            x2 = k
        End If
        End If
    Next k
        sh.Range(sh.Cells(x, 2), sh.Cells(x, 5)).Copy Destination:=sh2.Cells(Z, 2)
        sh.Range(sh.Cells(x2, 2), sh.Cells(x2, 5)).Copy Destination:=sh2.Cells(Z, 7)
        Z = Z + 1
Next i
End Sub

Изменено: Mershik - 22.10.2020 17:50:37
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
а нужно иначе?)
Ну первый год работы скважин макрос находит идеально, а вот год с наибольшей добычей все еще не может найти, ссылается только на последний год работы каждой скважины, независимо от уровня добычи по нефти)
Цитата
DemonAMT написал:
правой кнопкой мыши нажимать обновить
Все отлично работает, но со скважинами имеющие в своём имени русские и латинские буквы отказываются просчитываться с ошибкой "Не удалось преобразовать в число"
 
Zaker1g, а у меня кажется все норм....
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
а у меня кажется все норм
Ради интереса попробовал выгрузить фрагмент из этой базы, получается почему то вот так. И именно на последний год ссылается для всех объектов
Изменено: Zaker1g - 22.10.2020 21:28:16
 
Zaker1g, я понял) я думал максимально нужно другое) сейчас исправлю -  я же правильно что во второй части таблицы нужно получить максимальное значение из столбца  "Добыча нефти за год, т"?
Код
Sub dsds()
Dim sh As Worksheet, sh2 As Worksheet, i As Long, lr As Long, col As New Collection, cell As Range, cell2 As Range
Set sh = Worksheets("База скважин"): Set sh2 = Worksheets("Требуемая форма")
sh2.Range("A3:E10000").Clear: sh2.Range("G3:J10000").Clear
lr = sh.Cells(Rows.Count, 1).End(xlUp).Row
Z = 3
For i = 2 To lr
    On Error Resume Next
    If sh.Cells(i, 1) <> "" Then col.Add sh.Cells(i, 1).Value, CStr(sh.Cells(i, 1).Value)
Next i
For i = 1 To col.Count
    x = Application.WorksheetFunction.Max(sh.Columns(2))
    x2 = Application.WorksheetFunction.Min(sh.Columns(2))
    sh2.Cells(2 + i, 1) = col(i)
    For k = 2 To lr
        If col(i) = sh.Cells(k, 1) Then
            If sh.Cells(k, 2) <= x Then x3 = k: x = sh.Cells(k, 2)
            
            If sh.Cells(k, 4) >= x2 Then x4 = k: x2 = sh.Cells(k, 4)
        End If
    Next k
        sh.Range(sh.Cells(x3, 2), sh.Cells(x3, 5)).Copy Destination:=sh2.Cells(Z, 2)
        sh.Range(sh.Cells(x4, 2), sh.Cells(x4, 5)).Copy Destination:=sh2.Cells(Z, 7)
        Z = Z + 1
Next i
End Sub
Изменено: Mershik - 22.10.2020 21:50:54
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
нужно получить максимальное значение из столбца  "Добыча нефти за год, т"
Да, для второй половины таблицы, где необходимо определить год с самым высоким уровнем добычи, нужно опираться на значения добычи нефти за год.
 
Zaker1g, название темы не соответствует решаемой задачи.
Предлагаю модераторам заменить на
Копирование данных по критериям в другую таблицу.
 
Zaker1g, вы посмотрели макрос в #22
Не бойтесь совершенства. Вам его не достичь.
 
Mershik, макрос посмотрел, но попытался вставить те же исходные данные которые скидывал вам до этого и получил на выходе это:
 
Киньте образец файла с скважинами с русскими буквами. Завтра откорректирую.
Изменено: DemonAMT - 22.10.2020 22:43:04
 
DemonAMT, Добавил к тому списку скважин с русскими и с латинскими буквами  
 
del
Изменено: buchlotnik - 23.08.2021 17:57:21
Соблюдение правил форума не освобождает от модераторского произвола
 
Ну и просто формулой
Страницы: 1 2 След.
Наверх