Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как скопировать ячейку с условным форматирование ... / 15 сообщений из 15, страница 1 из 1
26.01.2010, 19:03
    #36432194
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
Есть сводная в Excel'е, в ней к некоторым ячейкам применено "Условное форматирование". К примеру условное форматирование закрасило один столбец серым. Мне надо скопировать на новый лист этот столбец, но чтобы формат его остался также серым. Условное форматирование при этом не надо!
Возможно ли это сделать?
...
Рейтинг: 0 / 0
27.01.2010, 09:05
    #36432753
SimpleC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
redsky, запиши индекс цвета ячейки в переменную, а потом передай его в ячейку или в столбец, в который копируешь.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox (Range("a1").Interior.ColorIndex)
 
Range("B:B").Interior.ColorIndex = Range("a1").Interior.ColorIndex


End Sub


....
...
Рейтинг: 0 / 0
27.01.2010, 11:01
    #36433016
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
SimpleC,

Тяжело и грустно получится:
1. если условное форматирование ещё меняет тип данных в ячейке, цвет шрифта, границы ...
В таком случае надо прописать код на каждый случай
2. а если я хочу скопировать диапазон на новую книгу.xlsx а не .xlsm (т.е. без всяких макросов)
3. а если столбцов в выделенном диапазоне много и "условное форматирование" в каждом столбце по разному меняло формат ...

НАДО так:
СКОПИРОВАЛ, ВСТАВИЛ и первоначальный формат полученный "условным форматированием" во вставленном диапазоне применился обычным форматом. Возможно с использованием кода из "Личной книги макросов". Может кто сталкивался с решением этого вопроса ?
...
Рейтинг: 0 / 0
27.01.2010, 11:12
    #36433063
SimpleC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
redsky, ясно... Значит не совсем правильно понял вопрос просто...
...
Рейтинг: 0 / 0
27.01.2010, 11:15
    #36433076
SimpleC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
redsky, с другой стороны, если прописать в параметрах все свойства формата и циклами обрабатывать, то нормально вроде....
...
Рейтинг: 0 / 0
27.01.2010, 11:24
    #36433108
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
SimpleCredsky, с другой стороны, если прописать в параметрах все свойства формата и циклами обрабатывать, то нормально вроде.... Спасибо за идею!!! Если других вариантов не будет, то буду писать код. Может у кого-то есть уже заготовочка в этом духе ... )
...
Рейтинг: 0 / 0
27.01.2010, 13:20
    #36433508
m
m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
2 SimpleC
Насколько я знаю, просто вытянуть свойства ячейки, которое задается через условное форматирование не получится... нужно что-то типа Selection.FormatConditions(i)... и дальше уже тянуть свойство...
2 redsky
То что Вы хотите сделать можно, только нужно будет делать много проверок и добавлять On Error Resume Next. Вот я сделал Вам пример для переноса цвета ячейки и цвета шрифта ячейки при условии, что условия форматирования задавались через формулу. Дальше сами, если что - спрашивайте.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub Trying()
Dim FoCond, f, i As Byte

i =  1 
On Error Resume Next
For Each FoCond In Selection.FormatConditions
'2 нижнии строки просто вытягивают и преобразовают формулу из вида локального (русского) в привычный для Экселя
Cells( 65536 ,  1 ).FormulaLocal = Selection.FormatConditions(i).Formula1
f = Cells( 65536 ,  1 ).FormulaR1C1
    'Проверка, выполняется ли условие форматирования
    If Selection.Value = Evaluate(f) Then
    Cells( 1 ,  1 ).Interior.ColorIndex = Selection.FormatConditions(i).Interior.ColorIndex
    Cells( 1 ,  1 ).Font.ColorIndex = Selection.FormatConditions( 1 ).Font.ColorIndex
    End If
Next

End Sub
...
Рейтинг: 0 / 0
27.01.2010, 13:25
    #36433521
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
Мне кажется, что задача довольно не тривиальная, надо не просто брать форматирования из условного форматирования (т.к. их может быть несколько для одной ячейки), а ещё и проверять, какое из условий форматирования сработало в данный конкретный момент для текущего значения ячейки и уже из сработавшего условия копировать форматы.
Поидее для одной конкретной ячейки при определенном значении могут сработать несколько условий форматирования одновременно. При этом например первое условии изменяет цвет букв, второе цвет ячейки, треть ещё что-то. В общем работы тут море, если только в Exсel нет каких-то свойств
...
Рейтинг: 0 / 0
27.01.2010, 13:27
    #36433529
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
Блин сообщение отправилось раньше времени (какое-то сочетание клавиш случайно нажал), продолжаю мысль.
Если только в Excel нет специальных свойств. с помощью которых можно узнать текущее форматирование ячейки с учётом условного форматирования.
...
Рейтинг: 0 / 0
27.01.2010, 13:51
    #36433611
m
m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
Djon Playerа ещё и проверять, какое из условий форматирования сработало в данный конкретный момент для текущего значения ячейки и уже из сработавшего условия копировать форматы.
Так я и показал, как это делать... А считывать все возможные свойства: font, interior, borders и так дальше, те которые не заданы будут проигнорированы благодаря On Error Resume Next.
Вот немного измененный код, в том нашел недоработку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub Trying()
Dim FoCond, f, i As Byte

i =  1 
On Error Resume Next
For Each FoCond In Selection.FormatConditions
'2 нижнии строки просто вытягивают и преобразовают формулу из вида локального (русского) в привычный для Экселя
Cells( 65536 ,  1 ).FormulaLocal = Selection.FormatConditions(i).Formula1
f = Cells( 65536 ,  1 ).FormulaR1C1
    'Проверка, выполняется ли условие форматирования
    If Selection.Value = Evaluate(f) Then
    Cells( 1 ,  1 ).Interior.ColorIndex = Selection.FormatConditions(i).Interior.ColorIndex
    Cells( 1 ,  1 ).Font.ColorIndex = Selection.FormatConditions(i).Font.ColorIndex
    End If
i = i +  1 
Next

End Sub
...
Рейтинг: 0 / 0
27.01.2010, 14:18
    #36433700
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
mDjon Playerа ещё и проверять, какое из условий форматирования сработало в данный конкретный момент для текущего значения ячейки и уже из сработавшего условия копировать форматы.
Так я и показал, как это делать... А считывать все возможные свойства: font, interior, borders и так дальше, те которые не заданы будут проигнорированы благодаря On Error Resume Next.
Вот немного измененный код, в том нашел недоработку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub Trying()
Dim FoCond, f, i As Byte

i =  1 
On Error Resume Next
For Each FoCond In Selection.FormatConditions
'2 нижнии строки просто вытягивают и преобразовают формулу из вида локального (русского) в привычный для Экселя
Cells( 65536 ,  1 ).FormulaLocal = Selection.FormatConditions(i).Formula1
f = Cells( 65536 ,  1 ).FormulaR1C1
    'Проверка, выполняется ли условие форматирования
    If Selection.Value = Evaluate(f) Then
    Cells( 1 ,  1 ).Interior.ColorIndex = Selection.FormatConditions(i).Interior.ColorIndex
    Cells( 1 ,  1 ).Font.ColorIndex = Selection.FormatConditions(i).Font.ColorIndex
    End If
i = i +  1 
Next

End Sub

что-то у меня не получается. Excel 2007. Выделяю ячейку в сводной со значением, где условное форматирование закрасило значение в серый (формула проверяет значение соседнего столбца). Запускаю процедуру. После неё ничего не меняется. Цвет родной у значения как был чёрным, так и остался (и при удалении правила форматирования цвет возвращается к родному - чёрном). Может я что-то не так делаю ... ?
...
Рейтинг: 0 / 0
27.01.2010, 14:47
    #36433783
m
m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
У меня Эксель 2003, 2007 есть дома - посмотрю вечером как там работает. Приложите файл.
...
Рейтинг: 0 / 0
27.01.2010, 15:04
    #36433852
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
mУ меня Эксель 2003, 2007 есть дома - посмотрю вечером как там работает. Приложите файл. Набрасал. Прикрепил.
В этом частном случае: как скопировать диапазон C14:C18 на новый лист, чтобы формат при этом был уже изменённый?
...
Рейтинг: 0 / 0
02.02.2010, 11:25
    #36443930
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
Так что, вариантов нет ??? (
...
Рейтинг: 0 / 0
03.02.2010, 10:17
    #36446291
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать ячейку с условным форматирование ...
redskyТак что, вариантов нет ??? (Всё таки там не всё так тривиально, иначе бы уже написали.
Вышеупомянутый код я тоже тестировал и вначале он даже работал корректно, а потом перестал, хотя сам код я не менял, менял лишь примеры.
Насколько я понял проблема связанна с этой строчкой
Код: plaintext
Selection.Value = Evaluate(f)
Если я верно понял смысл, то данный код проверяет равенство некоторому заданному значению указанному в условном форматировании.
Но если например в условном форматировании ставить не равенство, а например условие больше или меньше какого-то значения, то этот код уже не подходит, для каждого такого случая надо тоже свою обработку писать, хотя возможно она будет универсальной.
Т.е. использовать конструкции вида

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
If Selection.Value > Evaluate(f) Then
...
End If

If Selection.Value < Evaluate(f) Then
...
End If
и так далее.
Могут быть ещё ">=" и "<=", ну и прочие варианты.
Для корректной обработки нужно считать либо само это условие, либо получить свойство подтверждающее выполнение условия.

Дальше я не вникал, времени нет.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как скопировать ячейку с условным форматирование ... / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]