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

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

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

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

Сообщений: 52



« Ответ #15: 18 Август 2016, 11:01 »

Rami спасибо тебе. Но почему то если повторы идут подряд(например одинаковые первые три значения) и они больше нигде не встречаются, то они не выделяются.

А если в выделение попадают пустые ячейки то он вылетает с ошибкой

Логику алгоритма в целом понял, но ошибки эти отловить увы не могу Грустный
Маэстро, выручай

* Выделение повторов2текст.ods (14.03 Кб - загружено 17 раз.)

* error_empty_cell.jpg (131.28 Кб, 1024x768 - просмотрено 147 раз.)
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #16: 18 Август 2016, 12:27 »

А если в выделение попадают пустые ячейки то он вылетает с ошибкой
Это потому, что Apache OpenOffice не обрабатывает пустую ячейку как ноль. В LibreOffice это можно настроить.

Сделал так же для Apache OpenOffice:

* Выделение повторов3текст.ods (17.47 Кб - загружено 86 раз.)
Записан

joshua
Форумчанин
***
Offline Offline

Сообщений: 52



« Ответ #17: 18 Август 2016, 13:59 »

Rami, спасибо большое!
...ушел вносить вклад в форум)
Записан
SergeyK
Новичок
*
Offline Offline

Сообщений: 1


« Ответ #18: 14 Март 2017, 13:37 »

Rami, спасибо огромное за полезный макрос. Можно ли как то сделать так чтобы он выделял цветом всю строку, а не только ячейку с совпавшими данными?
В диапазоне всегда будет один столбец.
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #19: 15 Март 2017, 18:29 »

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

* Выделение повторов построчно.ods (15.71 Кб - загружено 65 раз.)
Записан

VitaliyAT
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #20: 1 Сентябрь 2021, 13:22 »

Работает, если текст в ячейке чистый. Без формул. Даже простое =A1 роняет скрипт. Есть более универсальный вариант? Зачастую то, что сравнивается, перед этим вычисляется или стягивается для наглядности в одно место, а без формул этого не сделать.
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #21: 1 Сентябрь 2021, 15:48 »

Пробовал на разных версиях LibreOffice 7.2.1.1, LibreOffice 5.0.6 и Apache OpenOffice 4.2 на маке, ничего не падает. Сделал чтобы учитывало формулы. Если будут проблемы, пишите на чём работаете и что делаете. Проверяйте:

*  Выделение повторов построчно1.ods (14.28 Кб - загружено 20 раз.)
Записан

Ravstin
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #22: 20 Июль 2022, 10:40 »

Добрый вечер!

Скачал последнюю версию этого уникального скрипта (который не про выделение строк), но возникают сложности с его работой...
Код:
REM  *****  BASIC  *****
Sub Main Dim oRange, oReplace, iRow%, iCol%, i%, a(), k%
oRange=ThisComponent.CurrentSelection
oRange.CellBackColor=-1
RangeAddress=oRange.getRangeAddress()
oSearch=oRange.createSearchDescriptor()
For iCol=RangeAddress.StartColumn To RangeAddress.EndColumn
For iRow=RangeAddress.StartRow To RangeAddress.EndRow
oCell=oRange.SpreadSheet.getCellByPosition(iCol,iRow)
If oCell.CellBackColor>0 Or oCell.String="" Then GoTo Line1 Else
oSearch.SearchWords=True
oSearch.setSearchString(oCell.String)
oFind=oRange.findAll(oSearch)
If oFind.Count<2 And isNull(oRange.findNext(oFind,oSearch)) Then GoTo Line1 Else
If k>15 Then k=0
k=k+1
a=array(234790,13421772,4700344,10053324,10079487,1434450,13625433,14614494,15138660,15222109,15461270,_
16543210,16744450,16768734,16771111)
For i=0 To oFind.Count-1
oFind.getByIndex(i).CellBackColor=a(k)
Next
Line1:
Next
Next
End Sub
В ситуации, когда нужно больше 15 цветов - открывается окно редактирования скрипта с ошибкой
Inadmissible value or data type.
Index out of defined range.

Ссылается на строку oFind.getByIndex(i).CellBackColor=a(k)
Записан
mikekaganski
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 2 809


« Ответ #23: 20 Июль 2022, 10:57 »

Код:
If k>15 Then k=0

Замените > на >=, либо поменяйте местами строки "If k>15 Then k=0" и "k=k+1".
Записан

С уважением,
Михаил Каганский
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #24: 20 Июль 2022, 12:05 »

Пробуйте так:
Код:
Sub Main
Dim a(), oRange, RangeAddress, oSearch, oReplace, iCol%, iRow%, oCell, oFind, k%, i%
a = array(234790, 13421772, 4700344, 10053324, 10079487, 1434450, 13625433, 14614494, 15138660, 15222109, 15461270, _
16543210, 16744450, 16768734, 16771111, 16777113)

oRange = ThisComponent.CurrentSelection
oRange.CellBackColor = -1
RangeAddress = oRange.getRangeAddress()
oSearch = oRange.createSearchDescriptor()
oSearch.SearchWords = True
For iCol = RangeAddress.StartColumn To RangeAddress.EndColumn
For iRow = RangeAddress.StartRow To RangeAddress.EndRow
oCell = oRange.SpreadSheet.getCellByPosition(iCol,iRow)
If oCell.CellBackColor < 0 Then
oSearch.setSearchString(oCell.String)
oFind = oRange.findAll(oSearch)
If oFind.Count > 1 Then
If k > UBound(a) Then k = 0
For i = 0 To oFind.Count - 1
oFind.getByIndex(i).CellBackColor = a(k)
Next
k = k + 1
EndIf
EndIf
Next
Next
End Sub
Записан

Ravstin
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #25: 20 Июль 2022, 12:42 »

Спасибо Вам, маэстро - заработало после того И поменял местами строки И дописал If k>=15

К сожалению, второй вариант ничего не выполнил, хотя вроде просто в редакторе текст макроса заменил :<
Записан
Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

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