Problemas con fórmulas en excel

Tengo escrito en una macro excel:
ActiveCell.Offset(2, 1).FormulaLocal = "=SUBTOTALES(3;A4:A6501)"
y en lugar de mostrarme cuantas celdas hay, me dice una cosa rara, y revisando la celda generada, lo que se ha escrito es:
=SUBTOTALES(3;#¡REF!)
Por si sirve de ayuda, el código es:
Sub datos()
nom = ActiveWorkbook.Name
MsgBox "Seleccione el fichero.", vbInformation
ficheromio = Application.GetOpenFilename
If ficheromio = False Then Exit Sub
Workbooks.OpenText ficheromio, origin:=xlWindows, startrow:=1
nom = ActiveWorkbook.Name
Range("a1").Select
ActiveCell.Offset(0, 1).NumberFormat = "@"
ActiveCell.Offset(0, 1).Value = "dades expedient"
ActiveCell.Offset(1, 1).NumberFormat = "@"
ActiveCell.Offset(1, 1).Value = "nif"
ActiveCell.Offset(1, 2).NumberFormat = "@"
ActiveCell.Offset(1, 2).Value = "pref-exp"
ActiveCell.Offset(1, 3).NumberFormat = "@"
ActiveCell.Offset(1, 3).Value = "num-exp"
ActiveCell.Offset(1, 4).NumberFormat = "@"
ActiveCell.Offset(1, 4).Value = "renuncia"
ActiveCell.Offset(1, 5).NumberFormat = "@"
ActiveCell.Offset(1, 5).Value = "situacio"
ActiveCell.Offset(1, 6).NumberFormat = "@"
ActiveCell.Offset(1, 6).Value = "pagament"
ActiveCell.Offset(1, 7).NumberFormat = "@"
ActiveCell.Offset(1, 7).Value = "sancio"
ActiveCell.Offset(1, 8).NumberFormat = "@"
ActiveCell.Offset(1, 8).Value = "condicionalitat"
ActiveCell.Offset(2, 1).NumberFormat = "0.00"
ActiveCell.Offset(2, 1).FormulaLocal = "=SUBTOTALES(3;A4:A6501)"
ActiveCell.Offset(2, 8).NumberFormat = "0.00"
ActiveCell.Offset(2, 8).FormulaLocal = "=SUBTOTALES(9;H4:H6501)"
Do While ActiveCell.Value <> ""
Text = Left(ActiveCell, 9)
ActiveCell.Offset(3, 1).NumberFormat = "@"
ActiveCell.Offset(3, 1).Value = Text
Text = Mid(ActiveCell, 10, 7)
ActiveCell.Offset(3, 2).NumberFormat = "@"
ActiveCell.Offset(3, 2).Value = Text
Text = Mid(ActiveCell, 17, 1)
ActiveCell.Offset(3, 3).NumberFormat = "@"
ActiveCell.Offset(3, 3).Value = Text
Text = Mid(ActiveCell, 18, 2)
ActiveCell.Offset(3, 4).NumberFormat = "@"
ActiveCell.Offset(3, 4).Value = Text
Text = Mid(ActiveCell, 20, 1)
ActiveCell.Offset(3, 5).NumberFormat = "@"
ActiveCell.Offset(3, 5).Value = Text
Text = Mid(ActiveCell, 21, 1)
ActiveCell.Offset(3, 6).NumberFormat = "@"
ActiveCell.Offset(3, 6).Value = Text
num = Mid(ActiveCell, 22, 5)
ActiveCell.Offset(3, 7).NumberFormat = "0.00"
If num = "" Then
ActiveCell.Offset(3, 7).Value = num
Else
ActiveCell.Offset(3, 7).Value = num / 100
End If
num = Mid(ActiveCell, 27, 5)
ActiveCell.Offset(3, 8).NumberFormat = "0"
ActiveCell.Offset(3, 8).Value = num
ActiveCell.Offset(1, 0).Select
Loop
ActiveSheet.Columns(1).EntireColumn.Delete
Range("A1:H1").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = True
End With
MsgBox "Correcte. Les dades ja s'han importat.", vbInformation
End Sub
Si esa misma linea la extrapolo en otra columna, como la f que también es del mismo tipo, genera la formula y me hace el recuento bien.
¿Que puede estar pasando?
Por otro lado, imagino que debido a lo mismo, a la parte final donde hago el reagrupamiento de celdas, si bie lo hace, antes de hacerlo me sale el mensaje: la selección contiene valores de datos múltiples, al combinar en una única celda se conservarán solamente los datos del extremo superior izquierdo. Si ampliando la macro con más campos a la derecha hago otro agrupamiento, como entre k1 y n1 no me sale dicho mensaje. ¿Que puede estar pasando?
Finalmente, en el fichero txt para hacer la prueba, tengo los caracteres siguientes, todos en una única linea, lo que lo pondré ahora separado para que el sistema no me deniegue la pregunta:
41367930F0404423
N22SN00020003000
Fin de línea.
Y eso es todo. Muchas gracias.

Añade tu respuesta

Haz clic para o