Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

19 Август 2018, 15:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: Суммирование чисел которые находятся в цветной ячейки  (Прочитано 2380 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #15: 4 Февраль 2018, 19:51 »

Sub summcolor
Dim oSheet As Variant, i As Long
Dim oSelection As Variant, oActiveCell As Variant, oRow As Variant
oSelection = ThisComponent.getCurrentSelection()
oSpreadsheet = oSelection.getSpreadsheet()
sum_byr=0
sum_kr=0
 For j =7 To 68
    For i =4 To 16
      Select case oSpreadsheet.getCellByPosition(j, i).CellBackColor
      '3407769
      Case  3407769 ' если бирюзовый
         sum_byr = sum_byr + oSpreadsheet.getCellByPosition(j, i).getvalue
      '16724787
      Case 16724787 ' если красный
         sum_kr = sum_kr + oSpreadsheet.getCellByPosition(j, i).getvalue    
   End Select
   Next i
   If j Mod 2 =0 Then
      oSpreadsheet.getCellByPosition(j-1, 21).setvalue(sum_kr)
      oSpreadsheet.getCellByPosition(j-1, 27).setvalue(sum_byr)
      sum_byr=0
      sum_kr=0   
   End if   
Next j
End Sub


Вот теперь все круто))) Только нужно на три цвета)
Это уже в последний раз)
« Последнее редактирование: 4 Февраль 2018, 20:13 от Yarik » Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #16: 4 Февраль 2018, 19:56 »

А недодумано вот что: если в день две смены и два рабочих места на 3-х работников, - то чтобы посчитать выработку изделий или часы каждому - не нужно использовать цвет,а нужно прямо указывать ФИО в соседней ячейке. Или не умничать и просто взять форму Табеля учета рабочего времени. Эта форма транспонирована и не зря - пересменки, выходы в чужую смену там отлично видны, а все итоги подбиваются обычными формулами вида СУММ().

Цвет может быть, но только как вспомогательная "информация" (его можно получить автоматом - формулой =СТИЛЬ() или автоформатированием. Даже если хочется таблицу как на скрине - суммировать все равно надо по фамилиям, а не по цветам. Для этого есть готовые функции:
СЧЁТЕСЛИ, СУММЕСЛИ, СУММЕСЛИМН итд, которые позволяют реализовать любую задумку. Просто добавьте колонку ФИО.

Спасибо за помощь, возможно действительно лучше переделать таблицу, а то честно говоря уже у самого голова взрывается, буду думать и пробовать
Записан
Bigor
Старожил
****
Offline Offline

Пол: Мужской
Сообщений: 286


« Ответ #17: 4 Февраль 2018, 20:14 »

как узнать код цвета ячейки?

Раскрашиваете а1 на первом листе и запускаете макрос
Код:
Sub testcolor
msgbox thiscomponent.sheets(0).getCellByPosition(0,0).CellBackColor
End Sub
Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #18: 4 Февраль 2018, 20:41 »

как узнать код цвета ячейки?

Раскрашиваете а1 на первом листе и запускаете макрос
Код:
Sub testcolor
msgbox thiscomponent.sheets(0).getCellByPosition(0,0).CellBackColor
End Sub


Все !! Наконец разобрался, добавил третий цвет, спасибо большое, все вроде пока так как я хотел))))
Записан
Bigor
Старожил
****
Offline Offline

Пол: Мужской
Сообщений: 286


« Ответ #19: 5 Февраль 2018, 12:26 »

Calc в отличие от Excel - штатно умеет суммировать числа по цвету шрифта.
А как это сделать?
вот попалось на глаза расширение
после установки появляются две новых функции - ЦВЕТФ и ЦВЕТШ, которые возвращают соответственно цвет фона и шрифта в ячейке
Расширение не мое, что там внутри не знаю (как понял на java), на стабильность работы не проверял.
В общим все на свой страх и риск Улыбка

* cellcolor-0.0.2.oxt (10.64 Кб - загружено 3 раз.)
« Последнее редактирование: 5 Февраль 2018, 14:16 от Bigor » Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 528


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #20: 5 Февраль 2018, 12:45 »

Да, хорошее расширение - семь с лишним лет прошло, а всё ещё актуально
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Bigor
Старожил
****
Offline Offline

Пол: Мужской
Сообщений: 286


« Ответ #21: 5 Февраль 2018, 14:24 »

Ну раз нашлись первоисточники, то перед использованием полезно посмотреть и о проблемах при применении расширения.

И можно про это написать
Цитата:
Цвета, заданные в HEX-виде просто так в ячейку не воткнешь. Пришлось вспомнить как работает функция CDec.
, а то в теме код удален.
« Последнее редактирование: 5 Февраль 2018, 14:26 от Bigor » Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 528


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #22: 5 Февраль 2018, 14:45 »

Да, все старые вложения как-то смели, чтобы место на сервере расчистить.
А насчет HEX - файл переехал сюда
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Bigor
Старожил
****
Offline Offline

Пол: Мужской
Сообщений: 286


« Ответ #23: 5 Февраль 2018, 19:35 »

Спасибо
Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #24: 6 Февраль 2018, 18:34 »

но я тоже склоняюсь к мысли, что чего-то изначально у тебя не додумано.

Еще одна мысль появилась, можно сделать так: я в первый столбик (Н5: Н16) ввожу данные, но если в следующей колонке есть закрашенные ячейки то оно автоматически делит пополам столбик Н и вторую часть бросает в столбик І и это все также на месяц ))) Непонимающий??


* Скрин.png (28.1 Кб, 812x412 - просмотрено 7 раз.)
Записан
Bigor
Старожил
****
Offline Offline

Пол: Мужской
Сообщений: 286


« Ответ #25: 6 Февраль 2018, 19:43 »

У тебя на рисунке до -  бирюзовых 6 ячеек, после - уже 7, хотя в описании про это ни слова  Непонимающий

Если это ошибка рисования  Улыбка, то смотри макрос

Код:
Sub razn_color
Dim oSheet As Variant, i As Long
Dim oSelection As Variant, oActiveCell As Variant, oRow As Variant
oSelection = ThisComponent.getCurrentSelection()
oSpreadsheet = oSelection.getSpreadsheet()

 For j =7 To 67 Step 2
    For i =4 To 16
     If oSpreadsheet.getCellByPosition(j+1, i).CellBackColor<>-1 Then
      oSpreadsheet.getCellByPosition(j+1, i).setvalue(oSpreadsheet.getCellByPosition(j, i).getvalue/2)
      oSpreadsheet.getCellByPosition(j, i).setvalue(oSpreadsheet.getCellByPosition(j, i).getvalue/2)
     End if
   Next i
  Next j
End Sub
вот результат его работы


* До.PNG (5.17 Кб, 199x321 - просмотрено 3 раз.)

* После.PNG (5.98 Кб, 202x317 - просмотрено 3 раз.)
Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #26: 6 Февраль 2018, 21:29 »

У тебя на рисунке до -  бирюзовых 6 ячеек, после - уже 7, хотя в описании про это ни слова  Непонимающий

Если это ошибка рисования  Улыбка, то смотри макрос

Код:
Sub razn_color
Dim oSheet As Variant, i As Long
Dim oSelection As Variant, oActiveCell As Variant, oRow As Variant
oSelection = ThisComponent.getCurrentSelection()
oSpreadsheet = oSelection.getSpreadsheet()

 For j =7 To 67 Step 2
    For i =4 To 16
     If oSpreadsheet.getCellByPosition(j+1, i).CellBackColor<>-1 Then
      oSpreadsheet.getCellByPosition(j+1, i).setvalue(oSpreadsheet.getCellByPosition(j, i).getvalue/2)
      oSpreadsheet.getCellByPosition(j, i).setvalue(oSpreadsheet.getCellByPosition(j, i).getvalue/2)
     End if
   Next i
  Next j
End Sub
вот результат его работы

Чет у меня не работатет


* Безымянный.png (14.7 Кб, 408x332 - просмотрено 7 раз.)
Записан
Bigor
Старожил
****
Offline Offline

Пол: Мужской
Сообщений: 286


« Ответ #27: 6 Февраль 2018, 21:39 »

сделай скриншот что бы были видны № строк и имена столбцов
« Последнее редактирование: 6 Февраль 2018, 22:04 от Bigor » Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #28: 7 Февраль 2018, 11:37 »

сделай скриншот что бы были видны № строк и имена столбцов


* Безымянный.png (36.17 Кб, 985x386 - просмотрено 7 раз.)
Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #29: 7 Февраль 2018, 11:44 »

Еще одна мысль появилась, можно сделать так: я в первый столбик (Н5:Н16) ввожу данные, но если в следующей колонке есть закрашенные ячейки то оно автоматически делит пополам столбик Н и вторую часть бросает в столбик І и это все также на месяц?

Ещё раз скажу: избавляйтесь от мысли использовать цвета, считайте что все вокруг - дальтоники! Потом, спустя время, скажете спасибо.

А то что процитировано - если будет колонка с ФИО - делается банальнейшими формулами и с функциями ЕСЛИ И ИЛИ НЕ, не знать которые - значит не уметь работать вообще. С таким подходом к делу даже "тренироваться" в Calc нельзя, не то что зарплату живым работникам считать - побьют...

Минута осмысления задачи сбережет час при её реализации и месяц при эксплуатации. Цвет - не критерий. Ни одна серьезная учетная система не позволяет использовать цвета как критерий для суммирования/разделения, и это не из-за ЛГБТ и любви к дальтоникам, просто это правильнее и эргономичнее.
 

Если не трудно, скинь пример, я не полностью понимаю .....
Записан
Страниц: « 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!