Isso demorou um pouco, mas acho que posso ajudá-lo. Eu escrevi três sub-rotinas que podem nomear as diagonais secundárias. O primeiro é o select_diagonal
sub
Sub select_diagonal(matriz As Range, m As Integer, name As String)
Dim n As Integer, i As Integer, first As Boolean
Dim diag As Range
n = matriz.Rows.Count
'm must be at most 2n-1 (number of diagonals)
first = True
If m <= n Then
For i = 0 To m - 1 Step 1
If first Then
Set diag = matriz.Item(1).Offset(i, m - i - 1)
first = False
Else
Set diag = Union(diag, matriz.Item(1).Offset(i, m - i - 1))
End If
Next i
Else
For i = (m Mod n) To m - (m Mod n) - 1 Step 1
If first Then
Set diag = matriz.Item(1).Offset(i, m - i - 1)
first = False
Else
Set diag = Union(diag, matriz.Item(1).Offset(i, m - i - 1))
End If
Next i
End If
ActiveWorkbook.Names.Add name:=name, RefersTo:=diag
End Sub
Ele recebe como parâmetros uma matriz quadrada como um intervalo (seu intervalo de 60x60), um inteiro m (que deve ser no máximo 2 * n-1, o número de diagonais da matriz) e uma string name
para name a m-ésima diagonal secundária da matriz.
Existe também o name_range
sub, que recebe uma matriz quadrada como um intervalo e faz loop em cada diagonal secundária da matriz e fornece um intervalo nomeado (de acordo com suas instruções, a k-ésima diagonal secundária é denominada " _k ")
Sub name_range(matriz As Range)
Dim n As Integer, ii As Integer
n = matriz.Rows.Count
For ii = 1 To 2 * n - 1
Call select_diagonal(matriz, ii, "_" & CStr(ii))
Next ii
End Sub
Finalmente, a sub-rotina que você deve executar é simplesmente o sub principal. Basta selecionar todo o seu alcance e executar esta sub-rotina, para chamar os outros dois que farão o trabalho por você.
Sub main()
Dim matriz As Range
Set matriz = Selection
Call name_range(matriz)
End Sub
Depois disso, basta aplicar a formatação condicional a todos os intervalos. Como você acabou de dizer, você pode aplicar manualmente os gradientes após os intervalos serem feitos. Minha sugestão, no entanto, é aplicá-lo através de um procedimento VBA. Basta especificar os limites de cor e, com os intervalos nomeados já definidos, aplicá-lo a todos os intervalos nomeados.
PS: não consegui encontrar uma maneira de fazer isso sem o VBA. O maior problema aqui é definir os intervalos nomeados para a diagonal secundária e usar o dimensionamento de cores com um intervalo dinâmico ou com alguns critérios. Espero que isso ajude.