Суммирование клеток по цвету

Автор vipmax77, 28 января 2013, 21:18

0 Пользователи и 1 гость просматривают эту тему.

vipmax77

Парни подскажите как посчитать сумму клеток зелёного цвета и сумму клеток красного цвета?

То есть в итоге должно посчитать сумму чисел клеток с красным цветом и сумму чисел клеток с зелёным цветом.

Smaigas


vipmax77

что то не сохраняется
Цитата: Smaigas от 28 января 2013, 22:13
Это не то?

Почему то этот макрос выдаёт ошибку...(

Hasim

Вы бы свой файл с примером приложили.

И, вообще, я бы советовал всем прикладывать файлы с примерами - это очень упрощает работу тех, кто захочет ответить.

vipmax77

Буду очень признателен если помножите посчитать общее кол-во  "Купли" и "Продажи"

P.S. ну и конечно объясните как, заранее благодарен.

[вложение удалено Администратором]

Hasim

#5
Ну вот, вопрошающим опять, наверное, изначально задан не тот вопрос.
И где там клетки зеленого и красного цвета?

Видимо, нужно суммы посчитать отдельно по словам "Купля" и "Продажа".

А для этого нужно воспользоваться функциями VLOOKUP (для Calc) или ВПР (для Excel).
Или похожими на них (типа SUMPRODUCT), нужно посмотреть.

Если знаете Calc, то можно сделать в нем и сохранить как XLS.
Тогда, если открыть потом в Excel, то функции преобразуются сами.


[вложение удалено Администратором]

vipmax77

Цитата: Hasim от 28 января 2013, 23:01VLOOKUP

Нет, они по цветам разбиты, видимо в MS это не отображается. Но в целом правильно поняли. Сейчас попробую функцию VLOOKUP

Hasim

#7
Да, точно, в Calc цвета есть.
Можно бы использовать макрос, как в ссылке от Smaigas, но макрос из Calc не будет работать в Excel.
Хотя, возможно, если его переписать на VBA, то, возможно, он и в Calc будет работать.

vipmax77

Помогите, сделать это в опене а то я не соображу...

[вложение удалено Администратором]

Hasim

Функцией из макроса в Calc легко, правда очень медленно работает.
Function LCK(s,r1,r2)
Dim numcol As Double
oSheet=ThisComponent.CurrentController.getActiveSheet()
numcol=0
For n=r1-1 To r2-1
  If Trim(oSheet.getCellByPosition(2, n).getString())=Trim(s) Then
vv=oSheet.getCellByPosition(0, n).getValue()*oSheet.getCellByPosition(1, n).getValue()
numcol=numcol+vv
  End If
Next n
LCK = numcol
End Function


Ну, а функциями самого Calc это нужно поковыряться.

[вложение удалено Администратором]

Hasim

Если сделать файл Excel ("сделки.xls") с функцией макроса
Function LCK(s, r1, r2)
Dim numcol As Double
numcol = 0
For n = r1 - 1 To r2 - 1
 If Trim(Range("A1").Offset(n, 2).Value) = Trim(s) Then
   vv = Range("A1").Offset(n, 0).Value * Range("A1").Offset(n, 1).Value
   numcol = numcol + vv
 End If
Next n
LCK = numcol
End Function

то он работает и в Excel и в Calc.

В Excel функция работает очень быстро,
а в Calc очень-очень медленно.


vipmax77

Цитата: Hasim от 29 января 2013, 00:31Функцией из макроса в Calc легко, правда очень медленно работает.

Попробовал добавить функцию,  и потом проверить, она выдаёт ошибку....

[вложение удалено Администратором]

vipmax77

Парни сбросте мой файл уже с макросом в Microsoft Excel или Open Office, пожалуйста.

Smaigas

Лови, только я не считал крашенные ячейки, а поступил проще. Так как покраска ячеек сделана только для наглядности, а в этой же ячейке присутствуют слова(числа, знаки - не важно) то я считал их в вспомогательных столбцах, короче смотри разбирайся, а то мне томно кирриллицей набивать.
ЗЫ. Макросов нету.

[вложение удалено Администратором]

vipmax77

Цитата: Smaigas от 29 января 2013, 09:55Лови, только я не считал крашенные ячейки, а поступил проще. Так как покраска ячеек сделана только для наглядности, а в этой же ячейке присутствуют слова(числа, знаки - не важно) то я считал их в вспомогательных столбцах, короче смотри разбирайся, а то мне томно кирриллицей набивать.
ЗЫ. Макросов нету.

Спасибо! Но у меня всё равно не пашет((((((( в чём дело?((((

[вложение удалено Администратором]