Как я могу скопировать только текст определенного цвета в Excel? - PullRequest
0 голосов
/ 04 декабря 2009

У меня есть лист с большим количеством ячеек, содержащих большое количество текста. В любой конкретной ячейке может быть какой-то текст красного цвета. Я хочу удалить этот текст и скопировать его в другой столбец.

У меня есть функция VBA, которая делает это, проверяя содержимое ячейки символ за символом, но электронная таблица довольно большая и процесс замедляется до сканирования. Есть ли более эффективный способ сделать это?

Ответы [ 2 ]

1 голос
/ 04 декабря 2009

Как именно ты это делаешь? Вы активируете ячейки, затем читаете данные в цикле? Вы пробовали эти советы по улучшению производительности макросов? Если только слова (а не конкретные буквы в данном слове) окрашены в красный цвет, не могли бы вы создать временный массив из блока текста (используйте пробел "" в качестве разделителя) и проходить по каждому слову?

Грубый экс)

blockOfText = "This is a block of text."
myArray = split(blockOfText, " ")
for each str in myArray
    '' If color is red, append to "bad text array" and remove from this one ''
next
'' Then convert the "myArray" back into a string and place back in the cell
1 голос
/ 04 декабря 2009

Ваш вопрос немного расплывчат, но, похоже, вам нужно, чтобы ваша функция VBA проверила свойство .Interior.Color каждой ячейки, например Worksheets("yourname").Cells(rowIndex, colIndex).Interior.Color

...