Страницы: 1
RSS
Макрос для подсчета суммы определенных значений
 
Доброго времени суток. Помогите написать макрос.  
 Условие:  
1. Кнопка с макросом должна находиться на листе "Сводная БД"  
2. Необходимо в диапазоне: `O-CN` на листе "Сводная БД" подсчитать  
сумму ячеек, данные в которых соответствуют данным в колонке `A`(AvtorId) на листе "libavtornamefull"  
и поместить результат в колонку `F`(TotalCount) на листе "libavtornamefull" (Посчитать количество книг каждого автора в БД).  
3. В колонке `H`(NormalCount) на листе "libavtornamefull" отобразить результат  
из пункта 2, но с вычетом ячеек (из диапазона `O-CN`), если в колонке `J`(Deleted) стоит "1"    
(Посчитать количество не удаленных книг каждого автора в БД).  
  Надеюсь обЪяснил задачу не очень запутанно.
 
Подскажите, эта проблема имеет решение или нет?  
Если можно решить только первую часть задачи (пункт 2), то тоже буду признателен!
 
Сделать можно всё - если понятно, что именно нужно сделать.  
Мне непонятно это:  
 
подсчитать сумму ячеек, данные в которых соответствуют данным в колонке `A`(AvtorId) на листе "libavtornamefull"  
 
Какой ответ по "Avtor ID 1" - 38 или 708?  
 
Могли бы сразу показать, что должно получиться хоть по нескольким ID.
 
Я так и понял, что невнятно описал проблему.  
 2. Необходимо посчитать сумму ячеек в диапазоне O:CN на листе "Сводная БД", данные в которых соответствуют данным в колонке `A`(AvtorId) на листе "libavtornamefull".  
Результат записать в колонке `G` (TotalCount) на листе "libavtornamefull" //В начале, по ошибке написал в колонке `F`//.  
    Например:  
Данные из `A2` на листе "libavtornamefull", встречаются в диапазоне O:CN на листе "Сводная БД" один раз. Значит в ячейку `G2` на листе "libavtornamefull" записывается:1.  
Данные из `A9` встречаются три раза, значит в ячейку `G9` записывается:3.  
 3. Все тоже самое, что и в п.2, но нужно вычесть из результата те ячейки из диапазона O:CN на листе "Сводная БД", напротив которых в колонке `J`(Deleted) стоит:1  
Результат записать в колонке `H`(NormalCount) на листе "libavtornamefull".  
   Например:  
Для `H2` результат будет: 1  
Для `H9` результат будет: 2  
   Очень надеюсь, что в этот раз объяснил более толково, если нет, то пришлю пример, в котором пытался решить проблему при помощи функции (СУММЕСЛИ)
 
Очень нужно решить задачу, а то в ручную перебирать по 300000 строк :(  
  Давайте я попробую объяснить задачу по другому:  
1. Нужно в ячейку (`libavtornamefull`!G2) записать сколько раз повторяется значение из ячейки (`libavtornamefull`!A2) в диапазоне ('Сводная БД'!O:CN) и т.д.  
  Кнопку макроса надо расположить на листе 'Сводная БД'
 
СЧЕТЕСЛИ() не годится?  
Можно макросом на словаре сделать - взять в словарь все номера, затем проверить массив из диапазона по словарю, при повторе увеличивать Item.  
Но тоже будет не моментально, и нужно код писать...
 
СЧЕТЕСЛИ()годится, а то я переживал, что при переводе в mysql будут видны формулы, а не результаты. Спасибо за помощь!  
А теперь пункт 2!  
2. Нужно в ячейку (`libavtornamefull`!H2) записать результат из (`libavtornamefull`!G2), но вычесть из результата те ячейки, напротив которых в ('Сводная БД'!J) стоит 1.  
Наверное опять запутанно выразился?  
Своими словами: в ячейке `H2` записано сколько книг автора присутствует в БД, в том числе и удаленные, а в ячейке `G2` записано сколько книг автора присутствует в БД, без удаленных.
 
Подскажите, по п.2, есть решение7
Страницы: 1
Читают тему
Наверх