Excel - взять форматирование из другой ячейки - PullRequest
0 голосов
/ 01 марта 2019

У меня есть таблица данных

    A    B    C    D    E    F(takes the max from each line)
1  3.93 2.09 2.49 0.89 1.11  3.93                       
2  0.97 0.34 0.69 0.08 1.06  1.06                
3  4.21 4.40 2.90 1.14 1.45  4.40                    
...

Столбцы от A до E содержат значения, которые также имеют соответствующее форматирование (некоторые цифры - красные, другие оранжевые и т. Д.).

Столбец Fимеет формулу max() для получения максимального значения из каждой строки таблицы.

Что я хочу сделать, так это получить формат ячейки, в которой происходит максимум.Есть ли автоматический способ сделать это?

Я видел, что это возможно с помощью макроса (я не знаком с макросами, поэтому на самом деле даже код в примере мне не совсем понятен): макрос Excel , однако мойСлучай осложняется тем, что ячейки в F могут получать значения от любой из ячеек в соответствующей строке, в зависимости от того, где происходит максимум.Поэтому я не могу просто сказать «скопировать формат ячейки A1 в ячейку E2», как в примере, который я связал.

Я бы сделал следующее:

If .Range("F1").Value2 = "A1" Then
    Range("F1").Copy (.Range("A1"))
else 
    If .Range("F1").Value2 = "B1" Then
    Range("F1").Copy (.Range("B1"))
else 
    If .Range("F1").Value2 = "C1" Then
    Range("F1").Copy (.Range("C1"))   
else 
    If .Range("F1").Value2 = "D1" Then
    Range("F1").Copy (.Range("D1"))
else 
    If .Range("F1").Value2 = "E1" Then
    Range("F1").Copy (.Range("E1"))
End If

Более того, я хочу сделать этодля каждого значения в столбце F. Нужен ли цикл for?Так, например, оно должно стать:

For i = 1 To 235
    If .Range("Fi").Value2 = "Ai" Then
    Range("Fi").Copy (.Range("Ai"))
... and so on with all the conditions

Это путь?

1 Ответ

0 голосов
/ 01 марта 2019

Я думаю, что SJR имеет правильную идею.

Вот эта идея, реализованная в коде.

Sub colorMe()

    For i = 1 To 235
        Cells(i, WorksheetFunction.Match(WorksheetFunction.Max(Range("A" & i & ":E" & i)), Range("A" & i & ":E" & i), 0)).Copy
        Cells(i, 6).PasteSpecial xlPasteFormats
    Next i

End Sub

Вот окончательный результат: Результат макроса

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...