Как взять среднее значение с одного листа с переменным количеством строк и перенести его на другой? - PullRequest
0 голосов
/ 18 июня 2020

Требуется взять среднее значение столбца данных с переменным количеством строк с одного листа, а затем вставить это среднее значение на другой лист в той же книге. Есть предложения?

Чтобы добавить, я хочу взять среднее значение переменного количества строк с 33 разными столбцами с одного листа и поместить среднее значение из каждого из этих столбцов в одну ячейку другого листа (от C3 до C35 ).

Для справки: это - лист, на котором есть еще 33 столбца с такими данными. количество строк варьируется в зависимости от того, как долго собирались данные. Я хочу взять среднее значение одного столбца и отобразить это среднее значение в соответствующей ячейке, например this . У меня 33 столбца, так что это даст мне 33 различных средних значения для go на этом другом листе.

Ответы [ 3 ]

0 голосов
/ 18 июня 2020

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

Go на вкладку «Формулы» -> Определенные диапазоны -> Диспетчер имен -> Новый

В " Имя: "добавить имя к диапазону динамических c, которое будет использоваться в других формулах. Это имя можно использовать на любом листе. В моем примере я использовал RngToAverage`. Другие диапазоны должны иметь другие имена.

В «Относится к:» =OFFSET(Sheet1!$A$1;0;0;COUNT(Sheet1!$A:$A);1)

Name the Range OFFSET function

Result

Моя примерная функция будет работать только для столбца A, а ссылка - на ячейку A1.

Ссылка для использования OFFSET: https://exceljet.net/formula/dynamic-named-range-with-offset

0 голосов
/ 18 июня 2020

Это основа c l oop для вставки среднего значения каждого столбца из рабочего листа данных во второй рабочий лист в столбце C. При необходимости вам нужно будет изменить имена рабочих листов. Предполагается, что данные на первом листе начинаются в столбце B и строке 2. Комментарии предоставляются в коде. Если есть вопросы, задавайте.

 'Define the worksheet variables
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1") 'Change "Sheet1" to the name of the sheet with data
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2") 'Change "Sheet1" to the name of the sheet to put the averages

'This code assums that '"Compressor Discharge Press." is in Column B of the first worksheet and data starts on row 2 (clarify if the column and row are different)
'Loop through column C in the second worksheet, startting at row 2, and inserts the average for the corresponding column(with variable row counts) in the first worksheet

    For x = 2 To 34
        ws2.Cells(x, "C").Value = Application.WorksheetFunction.Average(ws1.Range(ws1.Cells(2, x), ws1.Cells(ws1.Rows.Count, x).End(xlUp)))
    Next x
0 голосов
/ 18 июня 2020

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

Например:

Sub Test()

    Dim x As Variant

    Worksheets(1).Select
    x = Range("A1", Range("A1").End(xlDown))
 'assuming your values are in column A and the first cell is A1, and that there are no blank rows

    Worksheets(2).Range("A1").Value = Application.WorksheetFunction.Average(x)
'assuming you want to paste the average value on cell A1 of the second worksheet

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...