Добрый день уважаемые форумчане! Прошу помочь в решении не простой задачи. Есть файл в котором большое количество данных. Эти данные мы получаем с бурильной установки. Машина в столбец В записывает глубину, в столбец J количество поданного раствора в литрах (назовем просто расход). В соответствии с глубиной она так же ведет подсчет данных расхода в промежутке 1 метра. Т.е. с каждого метра подсчет ведется заново или добавляется если данный метр уже был задействован. Собственно вопрос: как найти максимальное значение в столбце J, когда в столбце В значение в пределах от 0 - 1, далее 1 - 2, 2 - 3 и тд...
Добрый день уважаемые форумчане! Прошу помочь в решении не простой задачи. Есть файл в котором большое количество данных. Эти данные мы получаем с бурильной установки. Машина в столбец В записывает глубину, в столбец J количество поданного раствора в литрах (назовем просто расход). В соответствии с глубиной она так же ведет подсчет данных расхода в промежутке 1 метра. Т.е. с каждого метра подсчет ведется заново или добавляется если данный метр уже был задействован. Собственно вопрос: как найти максимальное значение в столбце J, когда в столбце В значение в пределах от 0 - 1, далее 1 - 2, 2 - 3 и тд...alex_07
Такой вариант не очень хорош. Глубина меняется от 6 до 15 метров, от этого сводная таблица постоянно меняется в размерах. Данные из сводной таблицы в последствии автоматически копируются на другие листы для дальнейшего анализа. Однако из за изменении размеров таблицы данные частично отсутствуют, от чего выскакивают ошибки. Плюс Excel начинает ужасно тормозить.
Нашел такой код, но как его поменять к необходимым требованиям - не понимаю. К сожалению код без комментариев. И данные суммируются, а не выбираются максимальные значения. Построчно проверить код не получается, выдает ошибку "Expected:to", при этом макрос работает.
[vba]
Код
Sub Go() Dim CurrentArr(3) As Variant Set CurrentDic = CreateObject("Scripting.Dictionary") With ActiveWorkbook.Sheets("ЛИСТ1") Count = .Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To Count CurrentCode = .Cells(i, 9).Value If CurrentDic.exists(CurrentCode) Then CurrentArr2 = CurrentDic.Item(CurrentCode) CurrentArr2(1) = CurrentArr2(1) + .Cells(i, 3).Value CurrentArr2(3) = .Cells(i, 4).Value CurrentDic.Item(CurrentCode) = CurrentArr2 Else CurrentArr(0) = .Cells(i, 7).Value CurrentArr(1) = .Cells(i, 8).Value CurrentArr(2) = .Cells(i, 11).Value CurrentArr(3) = .Cells(i, 12).Value CurrentDic.Add CurrentCode, CurrentArr End If Next i Arr = CurrentDic.Keys For i = 3 To CurrentDic.Count - 1 CurrentKey = Arr(i) PromArr = CurrentDic.Item(CurrentKey) .Cells(i + 1, 20).Value = CurrentKey .Cells(i + 1, 21).Value = PromArr(0) .Cells(i + 1, 22).Value = PromArr(1) .Cells(i + 1, 23).Value = PromArr(2) .Cells(i + 1, 24).Value = PromArr(3) Next i End With End Sub
Такой вариант не очень хорош. Глубина меняется от 6 до 15 метров, от этого сводная таблица постоянно меняется в размерах. Данные из сводной таблицы в последствии автоматически копируются на другие листы для дальнейшего анализа. Однако из за изменении размеров таблицы данные частично отсутствуют, от чего выскакивают ошибки. Плюс Excel начинает ужасно тормозить.
Нашел такой код, но как его поменять к необходимым требованиям - не понимаю. К сожалению код без комментариев. И данные суммируются, а не выбираются максимальные значения. Построчно проверить код не получается, выдает ошибку "Expected:to", при этом макрос работает.
[vba]
Код
Sub Go() Dim CurrentArr(3) As Variant Set CurrentDic = CreateObject("Scripting.Dictionary") With ActiveWorkbook.Sheets("ЛИСТ1") Count = .Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To Count CurrentCode = .Cells(i, 9).Value If CurrentDic.exists(CurrentCode) Then CurrentArr2 = CurrentDic.Item(CurrentCode) CurrentArr2(1) = CurrentArr2(1) + .Cells(i, 3).Value CurrentArr2(3) = .Cells(i, 4).Value CurrentDic.Item(CurrentCode) = CurrentArr2 Else CurrentArr(0) = .Cells(i, 7).Value CurrentArr(1) = .Cells(i, 8).Value CurrentArr(2) = .Cells(i, 11).Value CurrentArr(3) = .Cells(i, 12).Value CurrentDic.Add CurrentCode, CurrentArr End If Next i Arr = CurrentDic.Keys For i = 3 To CurrentDic.Count - 1 CurrentKey = Arr(i) PromArr = CurrentDic.Item(CurrentKey) .Cells(i + 1, 20).Value = CurrentKey .Cells(i + 1, 21).Value = PromArr(0) .Cells(i + 1, 22).Value = PromArr(1) .Cells(i + 1, 23).Value = PromArr(2) .Cells(i + 1, 24).Value = PromArr(3) Next i End With End Sub
Не понимаю. Использую выше указанную формулу, но в любом случае получаю ошибку #ЗНАЧ. Видимо это не просто формула с методом "скопируй и вставь"?alex_07
Сообщение отредактировал alex_07 - Четверг, 12.04.2018, 11:52