Excel - Copiar Texto

 
Vista:
sin imagen de perfil

Copiar Texto

Publicado por Patricio (29 intervenciones) el 30/01/2016 07:11:13
Buenas tardes, tengo una base de datos en la cual necesito alguna formula o lo que sea para repetir registros.
Tengo texto en la celda A1, A5, A10 y asi sucesivamente pero tengo q repetir el valor de A1 en A2,A3,A4.
Repetir el valor de A5 en A6,A7,A8,A9.
Repetir el valor de A10 en A11,A12,A13... algo asi;

A
1 TEXTO 1
2 Copiar TEXTO 1
3 Copiar TEXTO 1
4 Copiar TEXTO 1
5 TEXTO 2
6 Copiar TEXTO 2
7 Copiar TEXTO 2
8 Copiar TEXTO 2
9 Copiar TEXTO 2
10 TEXTO 3
11 Copiar TEXTO 3
12 Copiar TEXTO 3
13 Copiar TEXTO 3

Agradeceria mucho de su ayuda ya que son 20.000 registros de esta manera....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Copiar Texto

Publicado por agustin (149 intervenciones) el 30/01/2016 10:03:29
¿Has probado a grabar una macro haciendo eso a ver que te genera?
Por otro lado podrías crear una fórmula en las celdas deseadas para igualar los valores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Copiar Texto

Publicado por Patricio (29 intervenciones) el 30/01/2016 15:12:40
Si, probe una macro pero solo me copia los valores de la primera seleccion de celdas, he tratado con formulas pero no me resulta ya que me lleva a copiar siempre la misma perdiendo las que contienen el valor que deseo copiar.

Favor podrias ayudarme con alguna formula?????, yo trate con si anidados pero nada.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Copiar Texto

Publicado por JuanC (1237 intervenciones) el 30/01/2016 20:43:47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'A1=texto1, A2:A4=vacío, A5=texto2, A6:A9=vacío, A10=texto3, A11:A13=vacío, A14=<end>
 
Sub ula_ula()
Dim i&, rng As Range, r As Range, s$
Application.ScreenUpdating = False
Application.EnableEvents = False
Set rng = Range("A1:A14")
i = 1
Do While 1
    Set r = rng.Cells(i)
    s = r.Value
    If s = "<end>" Then Exit Do
    Set r = Range(r, r.End(xlDown).Offset(-1))
    r.Value = s
    i = i + r.Count
Loop
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Copiar Texto

Publicado por agustin (149 intervenciones) el 30/01/2016 22:56:00
Eso si solo piensa usarlo una vez esta muy bien pero para 22000 filas como pretenda hacerlo cada vez que modifique una celda la cosa no irá tan fluida.
Otra solución sería rellenar las celdas con una fórmula preparada para cada celda haciendo uso de vba para ello y así no se necesitaría usar más de una sola vez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Copiar Texto

Publicado por agustin (149 intervenciones) el 30/01/2016 23:40:34
La idea es algo asi:
1
2
3
4
5
6
7
8
Dim contador, pos As Integer
 
For contador = 1 To 22000
   pos = Int(contador / 5) * 5
   If pos <> contador Then
      Sheets ("Hoja1").Cells(contador,1).Formula = "=" & Sheets ("Hoja1").Cells(pos,1).Address
   End If
Next contador
Lo hice en el móvil y supongo que habría que arreglar algo pero esa es la idea que quería expresar antes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Copiar Texto

Publicado por agustin (149 intervenciones) el 31/01/2016 19:45:26
Lo probé y funciona solo que haría falta algo mas:
1
2
3
4
5
6
7
8
9
10
11
Dim contador, pos As Integer
 
For contador = 1 To 22000
   pos = Int(contador / 5) * 5
   If pos =0 Then
      pos =1
   End If
   If pos <> contador Then
      Sheets ("Hoja1").Cells(contador,1).Formula = "=" & Sheets ("Hoja1").Cells(pos,1).Address
   End If
Next contador

Sí no quieres hacerlo con fórmulas puedes hacer una pequeña modificacion:
1
2
3
4
5
6
7
8
9
10
11
Dim contador, pos As Integer
 
For contador = 1 To 22000
   pos = Int(contador / 5) * 5
   If pos =0 Then
      pos =1
   End If
   If pos <> contador Then
      Sheets ("Hoja1").Cells(contador,1).Valor = Sheets ("Hoja1").Cells(pos,1).Valor
   End If
Next contador

Ya nos cuentas lo que sea, opciones tienes varias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Copiar Texto

Publicado por aguml (149 intervenciones) el 01/02/2016 12:48:55
Un detalle, tu expresas que quieres que se copie de manera que el rango A1:A4, A5:A9, A10:A14,... se clone su contenido y veo algo raro y es que en el primer rango son 4 celdas mientras que el resto son 5. Si quieres que sea totalmente equitativo mejor seria hacer algo asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub ClonarValores()
    Dim contador, pos As Integer
 
    'Esta constante es la que limita el numero de copias
    'El valor es el numero de copias deseadas mas 1
    Const separacion As Integer = 5
 
    'La variable pos contiene la posicion de la fila que contiene
    'la celda a copiar
    pos = 1
 
    For contador = 1 To 22000
        If contador Mod separacion <> 0 Then
            'Copio el valor de la celda a copiar en la celda que corresponda
            Sheets("Hoja1").Cells(contador + 1, 1) = Sheets("Hoja1").Cells(pos, 1)
        Else
            'Voy a la siguiente fila que contendrá la celda a copiar
            pos = pos + separacion
        End If
    Next contador
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar