Sé que el mensaje no está dirigido a mí pero, al ser un foro público y más aún al no tener respuesta, te propongo una alternativa: Una UDF.
Dicha UDF no solo actúa en matrices de 3x3 sino que en cualquiera que desees siempre y cuando tenga el mismo número de filas y columnas. También suma cualquiera de ambas diagonales, solo debes elegir cuál usando un uno (1) para la que comienza "arriba a la derecha" y un dos (2) para la que comienza "arriba a la izquierda" (variable "linea").
Function Sumandodiagonal(Rango As Range, linea As Byte) As Double
Application.Volatile True
Dim Celda As Range
Dim Coleccion As New Collection
Dim Suma As Double, UltimaFila As Long, Factor As Long, x As Long
If Rango.Rows.Count = 2 Then
MsgBox "El número mínimo de filas y columnas es de tres", vbOKOnly + vbCritical, "Sumandodiagonal"
GoTo Etiqueta_Error
End If
If Rango.Rows.Count <> Rango.Columns.Count Then
MsgBox "El número de filas y columnas no coincide", vbOKOnly + vbCritical, "Sumandodiagonal"
GoTo Etiqueta_Error
End If
If linea <> 1 And linea <> 2 Then
MsgBox "El valor de la diagonal debe ser 1 o 2", vbOKOnly + vbCritical, "Sumandodiagonal"
GoTo Etiqueta_Error
End If
Let UltimaFila = Rango.Rows.Count
For Each Celda In Rango
Coleccion.Add Celda.Value
Next Celda
If linea = 1 Then
Let Factor = Rango.Rows.Count + 1
For x = 1 To (UltimaFila * UltimaFila) Step Factor
Let Suma = Suma + Coleccion(x)
Next x
Else
Let Factor = Rango.Rows.Count - 1
For x = Rango.Rows.Count To ((UltimaFila * UltimaFila) - Factor) Step Factor
Let Suma = Suma + Coleccion(x)
Next x
End If
Let Sumandodiagonal = Suma
Exit Function
Etiqueta_Error:
Let Sumandodiagonal = ""
End Function
Para aplicarla solo coloca en cualquier celda algo así:
=Sumandodiagonal(A1:E5,2)
Comentas
Abraham Valencia