Tengo una hoja con muchas formulas (con ref. absolutas y relativas que
llaman a otra hoja o la misma) que deseo cambiar la orientación
(convertir las filas en columnas y las columnas en filas) para poderla
usar correctamente como una base de datos. La lógica me dice que
utilice la función "Transpose" dentro del menu "Paste Special". El
problema que tengo es que el menu pegado especial sólo se habilita
para la función "copiar" y no con la función "cortar". Si utilizo
al función copiar, todas las referencias relativas de las celdas se me
mueven, cosa que no ocurre con la función cortar. ¿alguien me puede
ayudar a cambiar la orientación de la tabla sin que se muevan las
referencias de las celdas?.
(una vez hice la misma consulta a la cual me contestó Hector. No me
servía ya que el código que me dio hace sí se muevan las celdas y no
donde yo quiero). En concreto necesito que una celda utiliza la celda
c5 para una fórmual, tras hacer el "Tranpose", si la celda c5 se ha
movido, la fórmula se actualice y localice correctamente la nueva
ubicación dela celda C5
El código que me dio Hector fue el siguiente:
=Sub Invertir_Matriz()
Dim Filas As Integer, Columnas As Integer, _
Fila As Integer, Columna As Integer, _
Matriz() As Variant, Siguiente As Integer
Filas = Selection.Rows.Count
Columnas = Selection.Columns.Count
ReDim Matriz(Filas * Columnas - 1)
For Fila = 1 To Filas
For Columna = 1 To Columnas
Matriz(Siguiente) = Selection.Cells(Fila, Columna).Formula
Siguiente = Siguiente + 1
Next Columna
Next Fila
Siguiente = 0
Selection.ClearContents
ActiveCell.Select
For Columna = 0 To Filas - 1
For Fila = 0 To Columnas - 1
ActiveCell.Offset(Fila, Columna) = Matriz(Siguiente)
Siguiente = Siguiente + 1
Next Fila
Next Columna
End Sub
==> O, si prefieres "mandar" el rango invertido a una nueva hoja...
QUITA "desde" la línea de: "Selection.ClearContents" y
SUSTITUYE por:
= With Worksheets.Add
For Columna = 0 To Filas - 1
For Fila = 0 To Columnas - 1
ActiveCell.Offset(Fila, Columna) = Matriz(Siguiente)
Siguiente = Siguiente + 1
Next Fila
Next Columna
End With
En su momento yo pensaba en un código que una vez calculado el área
repitiera la operación Cortar y Pegar para cada una de las celdas
ubicándolas en la nueva posición. El problema es que no se hacer este
código.
Leer las respuestas