En libro de consulta anterior habrás visto que las fórmulas hacen mención a rangos numerados a partir de 1:
Entonces hay que crear 3 nombres de rango por cada tabla. Que como se encuentran a cierta distancia y esa distancia se respeta entre todas las tablas (verificar) entonces la macro utiliza variables que se incrementan respetando esas distancias.
En un módulo del Editor colocá este código. La macro iniciará en la 3er tabla ya que las anteriores ya cuentan con estos nombres de rango. Y fue desarrollada para el modelo de tu hoja.
Sub CreaNbres()
'x Elsamatilde
'Macro crea nbres de rangos en tablas
filx = 3 'tabla 3 = J3
colx = 10
Z = 200 'ultimo nro de tabla
For i = 3 To Z
Cells(filx, colx).Select
With Sheets("Composición de precios")
ActiveWorkbook.Names.Add Name:="titu" & i, RefersToR1C1:=.Cells(filx, colx)
ActiveWorkbook.Names.Add Name:="suma" & i, RefersToR1C1:=.Range(Cells(filx + 2, colx + 1), Cells(filx + 19, colx + 1))
ActiveWorkbook.Names.Add Name:="toti" & i, RefersToR1C1:=.Cells(filx + 22, colx + 1)
End With
colx = colx + 4 'si el nro de col pasa la col Q se pasa a tabla sgte en col B
If colx > 14 Then
colx = 2: filx = filx + 25
End If
Next i
End Sub
PD) Si creaste algún otro nombre manualmente, de estos numerados, tenés que eliminarlos antes de correr la macro. Verificá los nombres desde menú Formulas, Administrador de nombres.