excel-vba - reemplazar - salto de linea en excel formula
Agregue saltos de lĂnea en la celda a 1000 filas de datos (3)
Actualmente estoy usando el siguiente código para agregar un salto de línea a los datos de celda en la columna C y copiarlo a la columna K. Necesito aplicar saltos de línea a un rango de datos. Tengo 1000 filas de datos en la columna C. Cualquier ayuda será muy apreciada.
Sub Macro
Dim Stem As Variant
Stem = ThisWorkbook.Worksheets ("Sheet1").Range("C2")
Range ("K2").Select
Range("K2").FormulaR1C1 = Stem & Chr(10) & ""
End Sub
Gracias
Gracias a todos por sus respuestas. El atlas pudo escribir mi primer guión y obtuvo el código para agregar un salto de línea dentro de la celda.
Sub AddLineBreak()
Dim Stem As Variant
Stem = ThisWorkbook.Worksheets("Sheet1").Range("C2")
Dim i As Integer
i = 2
''this will terminate the loop if an empty cell occurs in the middle of data
Do While Cells(i, "C").Value <> ""
Cells(i, "K").Value = Cells(i, "C").Value & vbCrLf
i = i + 1
Loop
End Sub
Prueba esto:
Sub copyAndNewLine()
''copy column C to K
Columns("C").Copy Destination:=Columns("K")
''loop through all cells in K and add new line
For i = 2 To Cells(Rows.Count, "K").End(xlUp).Row
Cells(i, "K").Value = Cells(i, "K").Value & vbCrLf
Next i
End Sub
Un par de cosas:
- Mejor atar sus variables temprano que tarde (mejor administración de la memoria, aprovechar intellisense, etc.)
- Por lo general, las mejores prácticas para evitar el uso de "seleccionar" si es posible.
- Su variable Stem es un objeto (Range Object) y por lo tanto necesita ser "Set"
Prueba esto:
Sub Macro
Dim WS As Worksheet
Dim Stem As Range
Dim R2 As Range
Dim Rng as Range
Set WS = ActiveWorkbook.Sheets("Sheet1")
Set Stem = WS.Range("C2", Cells(WS.Range("C2").End(xlDown).Row, WS.Range("C2").Column))
Set R2 = WS.Range("K2", Cells(Stem.End(xlDown).Row, WS.Range("K2").Column))
R2.Value = Stem.Value
''New Code
For Each Rng In R2
Rng.Value = Rng.Value & Chr(10) & ""
Next Rng
''Old Code: R2.End(xlDown) = R2.End(xlDown) & Chr(10) & ""
End Sub
Lo que hace esto es establecer primero la hoja de trabajo que está usando. Luego, establece su rango de trabajo (Stem) con el formato Range (cell1, cell2). Cell1 I definido como "C2". La siguiente expresión está usando la función Cells (). Es el equivalente VBA de estar en "C2" y presionar Ctl + Abajo, luego ver en qué fila estás.
Luego, configuré su rango de destino, R2, de una manera similar, pero utilicé el rango de Stem para determinar qué tan grande debería ser.
Finalmente, para obtener una copia precisa, su rango de destino debe ser del mismo tamaño que su rango. La expresión .value to .value pega los datos. Luego, sus caracteres adicionales se agregan a su nuevo campo de datos.
Algo para tener en cuenta con .End (xlDown) ... si tiene filas en blanco en medio de sus datos, se detendrá allí, no irá hasta el final. ¡Espero que esto ayude!
EDITAR: El bucle For Each
recorrerá cada rango (es decir, celda) en su rango de destino, R2, y agregará sus nuevos caracteres. Espero que te quede mejor.