Estoy tratando de crear una macro para dividir una celda que contiene dos o más líneas de caracteres. Me gustaría mantener las otras celdas de la fila.
Por ejemplo
_____________
| | A |
|Row 1| B |
| | C |
|___________|
| | D |
| | E |
|Row 2| F |
| | G |
|_____|_____|
a
_____________
|Row 1 | A |
|____________|
|Row 1 | B |
|____________|
|Row 1 | C |
|____________|
|Row 2 | D |
|____________|
|Row 2 | E |
|____________|
|Row 2 | F |
|____________|
|Row 2 | G |
|____________|
Agradecería cualquier ayuda.
Editado el 12 oct.
Aquí el código de Jook con mi modificación:
Public Sub test()
Dim arr() As Variant
Dim arrSum() As Variant
Dim arrResult() As Variant
Dim arrTemp As Variant
Dim i As Long
Dim j As Long
'input of array to seperate
arr = Range("A1:J3500")
ReDim Preserve arrSum(1 To 2, 1 To 1)
'create the array with seperated A B C
For i = LBound(arr, 1) To UBound(arr, 1)
'use split to make A B C into an array, using 'enter' (chr(10)) as indicator
arrTemp = Split(arr(i, 2), Chr(10))
For j = LBound(arrTemp) To UBound(arrTemp)
arrSum(1, UBound(arrSum, 2)) = arr(i, 1) 'set Row1
arrSum(2, UBound(arrSum, 2)) = arrTemp(j) 'set A,B,C
ReDim Preserve arrSum(1 To 2, _
LBound(arrSum, 2) To (UBound(arrSum, 2) + 1))
Next j
Next i
'clean up last empty row (not realy necessary)
ReDim Preserve arrSum(1 To 2, _
LBound(arrSum, 2) To (UBound(arrSum, 2) - 1))
'setup transposed result array
ReDim arrResult(LBound(arrSum, 2) To UBound(arrSum, 2), _
LBound(arrSum, 1) To UBound(arrSum, 1))
'transpose the array
For i = LBound(arrResult, 1) To UBound(arrResult, 1)
For j = LBound(arrResult, 2) To UBound(arrResult, 2)
arrResult(i, j) = arrSum(j, i)
Next j
Next i
'specify target range
Range(Cells(1, 12), Cells(UBound(arrResult, 1), 19 + UBound(arrResult, 2))) = arrResult
End Sub
Me gustaría agregar en cada matriz otras 8 celdas.
Quizás sea más fácil de entender con un pequeño esquema:
_______________________________
| | A | | |
|Row 1| B | Info_1 | Info_X |
| | C | | |
|___________|________|________|
| | D | | |
| | E | | |
|Row 2| F | Info_2 | Info_Y |
| | G | | |
|_____|_____|________|________|
a
________________________________
|Row 1 | A | Info_1 | Info_X |
|____________|________|________|
|Row 1 | B | Info_1 | Info_X |
|____________|________|________|
|Row 1 | C | Info_1 | Info_X |
|____________|________|________|
|Row 2 | D | Info_2 | Info_Y |
|____________|________|________|
|Row 2 | E | Info_2 | Info_Y |
|____________|________|________|
|Row 2 | F | Info_2 | Info_Y |
|____________|________|________|
|Row 2 | G | Info_2 | Info_Y |
|____________|________|________|
Estaba pensando en agregar esta línea
arrSum(x, UBound(arrSum, x)) = arrTemp(j) 'with x as the number of the columns
Pero parece que tengo que modificar otra variable.
UBound(arrSum, x)
-> x
especifica la dimensión! arrSum
tiene solo 2! arrSum(DIMENSION1, DIMENSION2)
.