Excel - Macro añadir fila en blanco si falta un elemento de una secuencia dada

 
Vista:
sin imagen de perfil

Macro añadir fila en blanco si falta un elemento de una secuencia dada

Publicado por Fer (2 intervenciones) el 13/10/2021 17:13:30
Buenos días, ¿alguno de ustedes se le ocurre como hacer un macro que lea el Excel e inserte filas en blanco con una condición? Concretando más el problema:

duda-macro

Se trataría de un macro que leyera la columna A y en caso de que el orden (executive,independent y non-executive) no se diera para una empresa (son los nombres en negrita de la columna A) por faltar uno de los tres elementos insertara una fila en blanco donde correspondiera y rellenara la columna A de esta nueva fila recién insertada con executive independent o non-executive. De ser posible lo ideal sería que el resto de las columnas de la misma fila recién incorporada las rellenara con un no-info, esto último no sería necesario pues no me cuesta hacerlo ya a mano filtrando las celdas en blanco una vez la macro hubiera insertado la fila correspondiente.

Al tener que repetirse periódicamente esta serie "1. Nombre de la empresa (la que sea en cada caso) 2. executive 3. independent 4. non-exexutive" si la fila 3 es executive, súmandole 4 (filas 7,11,15..) también deberían tener en la columna A executive.

Lo que se me ocurre (no sé si acertadamente) es que el macro debería leer el Excel y una vez encuentra un executive, leer las siguientes 4 filas y si no vuelve a aparecer lo que corresponde insertar la fila encima de independent o non-executive (lo primero que encuentre) o de no haberlo, debajo de todo lo que no sea esto (sería el nombre de cada empresa). Una vez encuentra un independent, leer las siguientes 4 filas y si no vuelve a aparecer lo que corresponde insertar la fila debajo de la fila executive o de no encontrarlo encima de la fila non-executive (lo primero que encuentre). Una vez encuentra un non-executive, leer las siguientes 4 filas y si no vuelve a aparecer lo que corresponde insertar la fila debajo de executive o independent (lo primero que encuentre) o encima de todo lo que no sea esto (sería el nombre de cada empresa).

Si a alguien se le ocurre como programar algo así se lo agradecería mucho. Cualquier duda háganmelo saber.
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro añadir fila en blanco si falta un elemento de una secuencia dada

Publicado por Antoni Masana (1892 intervenciones) el 13/10/2021 19:34:29
A mi se me ocurre lo siguiente:

1
2
3
4
5
6
7
FIL A = 2
mientras la celda de la FILA y de la columna A  no este vacía
    SI la fila + 1 no es igual a EXECUTIVE       insertar fila en FILA + 1 y rellenar fila
    SI la fila + 2 no es igual a INDEPENDENT     insertar fila en FILA + 2 y rellenar fila
    SI la fila + 3 no es igual a NON-EXECUTIVE   insertar fila en FILA + 3 y rellenar fila
    sumar 4 a FILA
Volver a mientras

Aquí tienes el sudo-código.

Para realizar el código necesito un libro de ejemplo.

Saludos.
\\//_
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

Macro añadir fila en blanco si falta un elemento de una secuencia dada

Publicado por Fer (2 intervenciones) el 15/10/2021 16:45:46
Adjunto un libro de ejemplo del caso. Gracias de antemano.

Un saludo
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
Val: 20
Ha disminuido su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro añadir fila en blanco si falta un elemento de una secuencia dada

Publicado por Janlui (148 intervenciones) el 15/10/2021 17:29:51
Hola, este archivo que compartes aun no haz insertado filas?
Por 2 o 3 casas insertando filas manualmente y ponlas en color rojo para ver la logica de tu ejercicio.
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro añadir fila en blanco si falta un elemento de una secuencia dada

Publicado por Antoni Masana (1892 intervenciones) el 18/10/2021 18:07:23
esta es la macro que te añade las filas según tu petición.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Option Explicit
 
Sub Poner_Filas()
    Dim Fila As Long, Tabla(3) As String, a As Byte, SW As Boolean, Texto As String
 
    Tabla(1) = "EXECUTIVE"
    Tabla(2) = "INDEPENDENT"
    Tabla(3) = "NON-EXECUTIVE"
 
    Fila = 2
    While Cells(Fila, "A") <> "" Or Cells(Fila, "B") <> ""
        If Cells(Fila, "A").Font.Bold = True Then
            For a = 1 To 3
                If Cells(Fila + a, "A") <> Tabla(a) Then
                    Call Insertar(Fila + a, Tabla(a))
                End If
            Next
        End If
        Fila = Fila + 1
    Wend
End Sub
 
Private Sub Insertar(Fila, Texto)
    Dim Col As Byte
    Rows(Fila & ":" & Fila).Insert
    Cells(Fila, "A") = Texto
    Cells(Fila, "A").Font.Bold = False
 
    Range("A" & Fila).Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 2
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
 
    For Col = 2 To 16
        Cells(Fila, Col) = "no info"
        Cells(Fila, Col).Font.Bold = False
    Next
End Sub

Hay filas con la celda de la columna A vacia o con el texto (en blanco) y con datos.

Saludos.
\\//_
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