Добрый день! Просьба помочь придумать формулу для поиска среднего значения. Суть задачи: Дано 24 значения, эти значения соответствуют одному критерию, но расположены они все на разных листах и в разных ячейках. Просьба найти среднее значение. Самый простой способ, использовать формулу СРЗНАЧ(ВПР1;ВПР2;ВПР3... и тд). Такой вариант не подходит. Заранее благодарен. Пример прилагается.
Добрый день! Просьба помочь придумать формулу для поиска среднего значения. Суть задачи: Дано 24 значения, эти значения соответствуют одному критерию, но расположены они все на разных листах и в разных ячейках. Просьба найти среднее значение. Самый простой способ, использовать формулу СРЗНАЧ(ВПР1;ВПР2;ВПР3... и тд). Такой вариант не подходит. Заранее благодарен. Пример прилагается.Франц
Function SRED(find$, columnFind$, columnZnach$, Optional i% = 2, Optional iE%) As Double Dim ii&, m, m1, n&, sum#, col& If iE < i Then iE = Sheets.Count For i = i To iE With Sheets(i) n = .Cells(Rows.Count, columnFind$).End(xlUp).Row m = .Range(.Cells(1, columnFind), .Cells(n, columnFind)).Value m1 = .Range(.Cells(1, columnZnach), .Cells(n, columnZnach)).Value End With For ii = 1 To UBound(m) If m(ii, 1) = find Then col = col + 1: sum = sum + m1(ii, 1) Next Next If col > 0 Then SRED = sum / col End Function
[/vba] Перевложил файл Будет искать с листов от I до Ie листа до конца книги, в указанных столбцах .
Например можно UDF: [vba]
Код
Function SRED(find$, columnFind$, columnZnach$, Optional i% = 2, Optional iE%) As Double Dim ii&, m, m1, n&, sum#, col& If iE < i Then iE = Sheets.Count For i = i To iE With Sheets(i) n = .Cells(Rows.Count, columnFind$).End(xlUp).Row m = .Range(.Cells(1, columnFind), .Cells(n, columnFind)).Value m1 = .Range(.Cells(1, columnZnach), .Cells(n, columnZnach)).Value End With For ii = 1 To UBound(m) If m(ii, 1) = find Then col = col + 1: sum = sum + m1(ii, 1) Next Next If col > 0 Then SRED = sum / col End Function
[/vba] Перевложил файл Будет искать с листов от I до Ie листа до конца книги, в указанных столбцах .SLAVICK
НУ... Спасибо! Прежде чем ответить, пришлось почитать что такое UDF. Таков мой уровень. В моем варианте придется писать целый макрос, так как придется собирать значения с ряда файлов. Уточню. Есть 31 файл - дни (очень тяжелые), в каждом 24 листа - часы, надо собрать среднемесячное значение в другом отдельном файле. В VBA я не силен, вот и просил формулу)) В любом случае, спасибо! Мне надо подтягивать свои знания в VBA.
НУ... Спасибо! Прежде чем ответить, пришлось почитать что такое UDF. Таков мой уровень. В моем варианте придется писать целый макрос, так как придется собирать значения с ряда файлов. Уточню. Есть 31 файл - дни (очень тяжелые), в каждом 24 листа - часы, надо собрать среднемесячное значение в другом отдельном файле. В VBA я не силен, вот и просил формулу)) В любом случае, спасибо! Мне надо подтягивать свои знания в VBA.Франц
Перечисление через ";" не подходит- это по сути перебор адресов. Так можно найти все значения в 744 ячейках и потом найти среднее. Файл легче не становится((
Перечисление через ";" не подходит- это по сути перебор адресов. Так можно найти все значения в 744 ячейках и потом найти среднее. Файл легче не становится((Франц
Там осталось-то дописать практически ничего - можете создать тему в ветке ВБА только приложите несколько файлов - примеров файлов данных и конечного файла. А вообще по правильному было бы собрать данные всех листов со всех книг в одну таблицу- базу данных а там уже можно делать какие хотите отчеты
Там осталось-то дописать практически ничего - можете создать тему в ветке ВБА только приложите несколько файлов - примеров файлов данных и конечного файла. А вообще по правильному было бы собрать данные всех листов со всех книг в одну таблицу- базу данных а там уже можно делать какие хотите отчеты SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Пятница, 31.07.2015, 10:29
К сожалению, от общей БД после попыток все собрать, отказались. Суточный файл весит 24 МБ, на листе 28000 значений, листов 24. У меня комп на работе дымится, когда его одного открывает. Надо писать макрос.
К сожалению, от общей БД после попыток все собрать, отказались. Суточный файл весит 24 МБ, на листе 28000 значений, листов 24. У меня комп на работе дымится, когда его одного открывает. Надо писать макрос.Франц
28000*24*31= 20832000 Советую создать базу данных, в sql - тогда будет нормально работать - дописывать в нее каждый день. У меня на работе - база sql - больше 25 млн строк * 20 столбцов + справочники + вычисляемые поля-- работает .
28000*24*31= 20832000 Советую создать базу данных, в sql - тогда будет нормально работать - дописывать в нее каждый день. У меня на работе - база sql - больше 25 млн строк * 20 столбцов + справочники + вычисляемые поля-- работает .
Всем спасибо за помощь и советы. Отдельное спасибо SLAVIKу. Благодаря Вам, уже сегодня пишем макрос. Про базу sql, наверно хорошо. Почему "наверно"? Потому что не имею представления о чем вы говорите Для этого надо писать ТЗ нашим программистам.
Тема закрыта.
Всем спасибо за помощь и советы. Отдельное спасибо SLAVIKу. Благодаря Вам, уже сегодня пишем макрос. Про базу sql, наверно хорошо. Почему "наверно"? Потому что не имею представления о чем вы говорите Для этого надо писать ТЗ нашим программистам.