|
|
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Чтобы быстро считать данные использую Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. А как подправить, чтобы так же считывал цвета? Возможно Код: pascal 1. А дальше не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 17:39 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
А что значит "быстро считать цвета"? Количество ячеек определённого цвета? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 18:51 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, в общем да. Нужно пройтись по всем строкам и узнать кол-во ячеек определённого цвета в каждой строке. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 19:08 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамА что значит "быстро считать цвета"? Количество ячеек определённого цвета? Использование метода "FData := Sheet.UsedRange" позволяет выделить участок листа и одним махом скопировать от туда данные. Например, если мне надо считать 300 000 ячеек, то таким методом я могу их считать за 10-15 сек. Методом перебора каждой ячейки это займет вечность. Но этот метод работает думаю только с текстом. И я сам пару лет назад спрашивал тут как можно так же и цвет ячейки получить и набор ссыллок в каждой ячейки и как так же считать объединенные ячейки. Но тогда вариантов не нашлось. Может сейчас это кто-то подскажет если это возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 19:21 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Циклы не устраивают скоростью или чем? Можно использовать Find, будет быстрее. Но готового метода, возвращающего число по формату/цвету я не припомню и вряд ли он есть. Хотя, чисто теоретически, можно покопаться в ConditionalFormatting в последних версиях Excel - возможно там есть что-то подобное... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 19:27 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Jonnik> Например, если мне надо считать 300 000 ячеек Jonnik> Методом перебора каждой ячейки это займет вечность. У меня почему-то не занимало. Не моментально, конечно, но не вечность. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 19:29 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамЦиклы не устраивают скоростью или чем? Можно использовать Find, будет быстрее. Но готового метода, возвращающего число по формату/цвету я не припомню и вряд ли он есть. Хотя, чисто теоретически, можно покопаться в ConditionalFormatting в последних версиях Excel - возможно там есть что-то подобное... Да, используя OLE и просто бегать циклами это долго, если у тебя много данных. А используюя это, можно гораздо быстрее получить данные Код: pascal 1. 2. 3. 4. И он думал, что есть вариант это сделать как Код: pascal 1. Но оно не работает так. Так же как и так не работает считывание объединенных ячеек. Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 20:01 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Jonnik> FData := WorkSheet.Range[Excel.Cells[1,1], Excel.Cells[Rows,Cols]].Interior.Color; Jonnik> Но оно не работает так. Да, так не сработает (да и со скрытыми надо проверить). Равно как CountIf/CountFormat для цвета нету (пока). Я же сразу сказал - пусть пишет макрос или функцию. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 20:04 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Я так и подумал, что не получится, но т.к. опыта мало решил удостоверится у профи. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 20:10 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамЦиклы не устраивают скоростью или чем? В VBA циклы по номерам крайне неэффективны - там все как хеш-таблицы хранится. IEnumVariant/for each дает прирост скорости пропорционально количеству элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 20:28 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Я знаю, но for each суть тот же цикл. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 20:40 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, Я имел в виду VBA-шный "for each cell in range". А как дельфя такую конструкцию будет компилить (и будет ли вообще) - без понятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 20:55 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Аналогично. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 20:59 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Кстати, если бы Find возвращал "адекватный" Range (или Find2/FindAll, который это делал), а не только первую ячейку - сабж был бы решён. И не только сабж. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 21:02 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Фильтр по цвету ячейки и потом просто Count оставшихся? Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 21:51 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
ИМХО, проще скриптом посчитать количество цветных ячеек, занести готовый результат куда нибудь в скрытую колонку, а из Delphi читать значение одной ячейки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 22:02 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Автофильтр в последних версиях умеет фильтровать по формату (в т.ч. цвету) ? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 22:15 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамАвтофильтр в последних версиях умеет фильтровать по формату (в т.ч. цвету) ? Код: vbnet 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 22:16 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Ну круто. Если итоговый Range позволяет делать Count c игнором невидимых строк - то сабж решён. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 22:29 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Автофильтр распостраняется на несколько колонок ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 23:17 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
На VBA выглядит как-то так, перевести в OLE не проблема. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Суть в том, что если фильтр содержит прерывающиеся области, то надо суммировать через Areas т.к. свойства у Range будут возвращать данные только первой области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 23:31 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
DimaBrАвтофильтр распостраняется на несколько колонок ??? Естественно Код: vbnet 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2018, 23:34 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
X-Cite> Суть в том, что если фильтр содержит прерывающиеся X-Cite> области, то надо суммировать через Areas С прерывающимися понятно, а с пересекающимися (в т.ч. по нескольким колонкам) ? Умозрительно (нет нужной версии Excel под рукой, чтобы проверить) - будут ошибки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 01:48 |
|
||
|
Ексель, как быстро считать цвета ячеек?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамX-Cite> Суть в том, что если фильтр содержит прерывающиеся X-Cite> области, то надо суммировать через Areas С прерывающимися понятно, а с пересекающимися (в т.ч. по нескольким колонкам) ? Умозрительно (нет нужной версии Excel под рукой, чтобы проверить) - будут ошибки. Код: vbnet 1. Вернет Range только видимых строк состоящих из соответствующих Areas ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2018, 07:50 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=94&tid=2040322]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 440ms |

| 0 / 0 |
