Суммирование чисел которые находятся в цветной ячейки

Автор Yarik, 1 февраля 2018, 11:04

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

bigor

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

Yarik

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

ХАхаха  точно ,  так и есть

Yarik

Цитата: Bigor от  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

вот результат его работы

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

bigor

Ну если устраивает работа с цветами, то вот твои хотелки, поменяй условия в макросе
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.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут