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

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

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

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3   Вниз
  Печать  
Автор Тема: Суммирование чисел которые находятся в цветной ячейки  (Прочитано 899 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Yarik
Новичок
*
Offline Offline

Сообщений: 16


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

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

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

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

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

Если не трудно, скинь пример, я не полностью понимаю .....
Записан
Bigor
Постоялец
***
Offline Offline

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


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

По скриншоту непонятно в чем дело, могу подозревать, что ты попал в ситуацию
о которой тебя тут все предупреждают, ячейки залиты белым фоном, для глаз разницы нет, а макрос видит что они раскрашены и не трогает их
Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #32: 7 Февраль 2018, 12:12 »

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

ХАхаха  точно ,  так и есть
Записан
Yarik
Новичок
*
Offline Offline

Сообщений: 16


« Ответ #33: 13 Февраль 2018, 21:16 »

У тебя на рисунке до -  бирюзовых 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
вот результат его работы

Ты очень помог мне, все работает так как надо. Уже использовал в работе. Еще один маленький нюанс есть. Можно сделать так что я ввожу в первую колонку (Н5: Н17) числа и макрос сделал бы так, чтобы если соседний столбик закрашен то данный столбик делило пополам. А если столбик в котором я записал них нет окрашенной ячейки то оно автоматически все число переводило в соседний столбик)


* Безымянный2.png (17.76 Кб, 488x391 - просмотрено 4 раз.)
Записан
Bigor
Постоялец
***
Offline Offline

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


« Ответ #34: 13 Февраль 2018, 22:25 »

Ну если устраивает работа с цветами, то вот твои хотелки, поменяй условия в макросе
Код:
If oSpreadsheet.getCellByPosition(j+1, i).CellBackColor<>-1 Then
      If oSpreadsheet.getCellByPosition(j, i).CellBackColor=-1 Then
      k=1
      Else
      k=0.5
      End if
      oSpreadsheet.getCellByPosition(j+1, i).setvalue(oSpreadsheet.getCellByPosition(j, i).getvalue*k)
      oSpreadsheet.getCellByPosition(j, i).setvalue(oSpreadsheet.getCellByPosition(j, i).getvalue*(1-k))
     End if

Остался неясным вопрос, если ячейки незакрашены и в столбце H и I.
Записан
Страниц: « 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!