powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как скопировать ячейку с условным форматирование ...
15 сообщений из 15, страница 1 из 1
Как скопировать ячейку с условным форматирование ...
    #36432194
redsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сводная в Excel'е, в ней к некоторым ячейкам применено "Условное форматирование". К примеру условное форматирование закрасило один столбец серым. Мне надо скопировать на новый лист этот столбец, но чтобы формат его остался также серым. Условное форматирование при этом не надо!
Возможно ли это сделать?
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #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
Как скопировать ячейку с условным форматирование ...
    #36433016
redsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SimpleC,

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

НАДО так:
СКОПИРОВАЛ, ВСТАВИЛ и первоначальный формат полученный "условным форматированием" во вставленном диапазоне применился обычным форматом. Возможно с использованием кода из "Личной книги макросов". Может кто сталкивался с решением этого вопроса ?
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #36433063
SimpleC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redsky, ясно... Значит не совсем правильно понял вопрос просто...
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #36433076
SimpleC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redsky, с другой стороны, если прописать в параметрах все свойства формата и циклами обрабатывать, то нормально вроде....
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #36433108
redsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SimpleCredsky, с другой стороны, если прописать в параметрах все свойства формата и циклами обрабатывать, то нормально вроде.... Спасибо за идею!!! Если других вариантов не будет, то буду писать код. Может у кого-то есть уже заготовочка в этом духе ... )
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #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
Как скопировать ячейку с условным форматирование ...
    #36433521
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что задача довольно не тривиальная, надо не просто брать форматирования из условного форматирования (т.к. их может быть несколько для одной ячейки), а ещё и проверять, какое из условий форматирования сработало в данный конкретный момент для текущего значения ячейки и уже из сработавшего условия копировать форматы.
Поидее для одной конкретной ячейки при определенном значении могут сработать несколько условий форматирования одновременно. При этом например первое условии изменяет цвет букв, второе цвет ячейки, треть ещё что-то. В общем работы тут море, если только в Exсel нет каких-то свойств
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #36433529
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин сообщение отправилось раньше времени (какое-то сочетание клавиш случайно нажал), продолжаю мысль.
Если только в Excel нет специальных свойств. с помощью которых можно узнать текущее форматирование ячейки с учётом условного форматирования.
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #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
Как скопировать ячейку с условным форматирование ...
    #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
Как скопировать ячейку с условным форматирование ...
    #36433783
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
У меня Эксель 2003, 2007 есть дома - посмотрю вечером как там работает. Приложите файл.
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #36433852
redsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mУ меня Эксель 2003, 2007 есть дома - посмотрю вечером как там работает. Приложите файл. Набрасал. Прикрепил.
В этом частном случае: как скопировать диапазон C14:C18 на новый лист, чтобы формат при этом был уже изменённый?
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #36443930
redsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что, вариантов нет ??? (
...
Рейтинг: 0 / 0
Как скопировать ячейку с условным форматирование ...
    #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
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как скопировать ячейку с условным форматирование ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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