Excel - Insertar filas cuando en una columna aparece un numero mayor a 1

 
Vista:

Insertar filas cuando en una columna aparece un numero mayor a 1

Publicado por silvia (1 intervención) el 14/08/2013 00:22:08
Requiero el codigo para una macro, en donde me inserte filas cuado aparezca un numero mayor a 1 en la priera columna, solo requiero que inserte UNA FILA independiente del numero que sea mayor a 1

CUENTA
1
1
1
6
6
6
6
6
6
4
4
4
4
1
1
2
2
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
Imágen de perfil de JuanC

Insertar filas cuando en una columna aparece un numero mayor a 1

Publicado por JuanC (1237 intervenciones) el 14/08/2013 01:19:36
creo que faltan detalles en tu planteo, pero bue...
algo así puede ayudar...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Explicit
 
Sub test()
Dim rng As Range
Dim i%
Set rng = Range("a1")
i = 0
Do While rng.Offset(i).Value <> ""
   If rng.Offset(i).Value > 1 Then
      i = i + 1
      rng.Offset(i).EntireRow.Insert
   End If
   i = i + 1
Loop
End Sub



Saludos, desde Baires, JuanC
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
Imágen de perfil de Cacho
Val: 81
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Insertar filas cuando en una columna aparece un numero mayor a 1

Publicado por Cacho (66 intervenciones) el 14/08/2013 07:45:15
Hola! Silvia (y JuanC).
Una forma de "apurar" el proceso (si tienes muchas filas que procesar, claro está) consiste en insertar filas... ¡pero sin insertarlas! por ejemplo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub InsertarFilas()
Dim Rng As Range, Vec, Q&, i&, r1&, P&
Set Rng = Range([b3], [b2].End(xlDown))
Q = Rng.Count: r1 = Rng(1).Row
Cells(r1, "aa") = r1
With Cells(1 + r1, "aa").Resize(Q - 1)
  .Formula = "= aa" & r1 & " + 1 + (" & Rng(1).Address(False, False) & ">1)"
  .Value = .Value
End With
Vec = Cells(r1, "aa").Resize(Q)
For i = 2 To Q
  If Vec(i, 1) - Vec(i - 1, 1) > 1 Then
    P = 1 + P
    Vec(P, 1) = Vec(i, 1) - 1
  End If
Next
Cells(r1, "aa").Offset(Q).Resize(P) = Vec
Range(Rng(1), Cells(r1 + Q + P - 1, "aa")).Sort _
  key1:=Cells(r1, "aa"), order1:=xlAscending, Header:=xlNo
Columns("aa").Delete
Set Rng = Nothing: Vec = Empty
End Sub


En este código, la línea Set Rng = Range([b3], [b2].End(xlDown)) pone de manifiesto que estoy suponiendo que tienes:

- El encabezado en la celda B2; y
- Los datos a partir de la celda B3

Saludos para todos.
Cacho R.
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