Inserción de Filas Automática en Base a Criterios Excel

En la columna A de una Hoja de Excel, tengo una lista enorme de contactos con varios campos de forma vertical (uno detrás de otro), como muestro en el siguiente ejemplo.

Cada Registro de Contacto, debería tener 6 filas, el problema es que NO todos los contactos tienen siempre los mismos campos. Hay contactos que le faltan por ejemplo la dirección o la web, con lo cual, la lista sube y no cumple con la condición de tener 6 filas, y pregunto por si fuera posible con alguna macro, insertar filas vacías o con el carácter “-“, en los lugares en los que debería de haber el dato que falta y no se encuentra.

Mi idea es que todos los contactos tengan 6 Filas, para que después pueda utilizar la función Transponer de Excel y me muestre los contactos en forma de tabla, y no en forma de columna.
Muchas Gracias de antemano.
Ej:
- CONTACTO 1
- Pepe Rodriguez
- Calle Prueba, Nº 1
- http://www.web.es/
- Notas del Contacto
- Teléfono: 900000000
- [email protected]
- CONTACTO 2
- Jose Rodriguez
- http://www.web.com/
- Notas del Contacto
- [email protected]
- CONTACTO 3
- Manuel Rodriguez
- http://www.net.es/
- [email protected]

1 Respuesta

Respuesta
1

Necesitamos una constante en cada uno de los contactos, es decir, algo que se repita en todos los contactos.

Dime cuál es la constante, y en base a esa, puedo hacer la macro para dejar 6 filas para cada contacto.

Saludos. DAM

Estimado Experto:

Como bien dice usted, si existe una constante en todos los registros. Me he fijado bien en la fila de contactos y no se encuentra en la columna A como le comenté antes, sino en la columna B. En la Columna A, aparece el nombre de cada campo, a continuación le muestro un ejemplo.

Muchísimas Gracias por su ayuda.

COLUMNA A | COLUMNA B

Nombre | Pepe Rodriguez
Dirección | Calle Prueba, Nº 1
Web | http://www.web.es/
Notas | Notas del Contacto
Tlfn | 900000000
Email | [email protected]
Nombre | Jose Rodriguez
Web | http://www.web.com/
Notas | Notas del Contacto
Email | [email protected]
Nombre | Manuel Rodriguez
Web | http://www.net.es/
Email | [email protected]

¿Y cuál es la constante?

Ah disculpe, creía que la constante, es decir los datos que siempre se repiten son los de la Columna A. Que deberían de ser siempre los mismos:

-Nombre

-Dirección

-Web

-Notas

-Tlfn

-Email

Pero como le he comentado, hay campos que no existen, con lo cual, corren hacia arriba los demás campos, y al producirse eso, no podría utilizar la función transponer porque mezclaría datos de diferentes contactos en el mismo registro.

¿Pero la palabra "Nombre" siempre aparece?

Ah vale, ya le entiendo, si efectivamente, es el único campo que siempre se repite, los demás pueden existir o no.

Los datos Deberán cumplir lo siguiente:

1. Que tengan un campo llamado "Nombre",

2. Que los campos que aparezcan deberán estar en este orden, no importa que varios campos no se encuentren, pero los que si se encuentran deberán estar en este orden.

-Nombre
-Dirección
-Web
-Notas
-Tlfn
-Email

Sigue las Instrucciones para un botón y ejecutar la macro
1. Abre tu libro de Excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Ahora para crear un botón, puedes hacer lo siguiente:
6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona Asignar macro / Selecciona: filas
9. Aceptar.
10. Para ejecutarla dale click a la imagen.

Sub filas()
'Por.DAM
d = Array("", "Email", "Tlfn", "Notas", "Web", "Dirección", "Nombre")
For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
    For j = 1 To 6
        If Cells(i, "A") = d(j) Then
            i = i - 1
        Else
            Rows(i + 1).Insert
            Cells(i + 1, "A") = d(j)
            Cells(i + 1, "B") = "'-"
        End If
    Next
    i = i + 1
Next
End Sub

Saludos.DAM
Si es lo que necesitas.

Estimado Experto:

Muchísimas Gracias por su ayuda. El código funciona perfectamente. Es justo lo que necesitaba.

Reciba un cordial saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas