Datos en una misma Fila

25/02/2009 - 23:47 por Adrian V. | Informe spam
Buenas tardes a todos, espero alguien pueda ayudarme a resolver un problema
que tengo y es el siguiente:

Tengo un archivo de excel (2002) con datos de contactos en varias columnas
que se repiten en varias filas, en total son al rededor 8,000 el motivo por
el cual se repiten es debido a que existen datos distintos por cada contacto,
ejemplo:

A(Nombre del contacto) B (Teléfono contacto)
Contacto 1 12345678
Contacto 1 23456789
Contacto 1 34567890
Contacto 2 98765432
Contacto 2 87654321

En este momento sólo me interesa a traves de alguna macro, que en otra hoja
sólo queden datos únicos del contacto con sus teléfonos, es decir:

A(Nombre del contacto) B (Tel 1) C (Tel 2) D (Tel 3)
Contacto 1 12345678 23456789 34567890
Contacto 2 98765432 87654321

Todos los contactos tienen al menos un teléfono, ojala me puedan ayudar
Gracias

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
26/02/2009 - 00:48 | Informe spam
hola, Adrian !

prueba con una macro +/- como la siguiente, ejecutada desde la hoja con tu listado original
(agrega una hoja con los datos en su nuevo arreglo, pero te dejo de tarea los titulos para las columnas de telefonos)

Sub Unificar_contactos()
Application.ScreenUpdating = False
Dim Inicio As Long, nCols As Byte, nFila As Integer
With ActiveSheet
Worksheets.Add(After:=Worksheets(.Index)).Name = "Conjunto"
.Range(.[a1], .[a65536].End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=[a1], Unique:=True
[a:a].Sort Key1:=[a2], Order1:=xlAscending, Header:=True
For nFila = 2 To [a65536].End(xlUp).Row
Inicio = Application.Match(Range("a" & nFila), .Range("a:a"), 0)
nCols = Application.CountIf(.Range("a:a"), Range("a" & nFila))
If nCols > 1 Then
Range("b" & nFila).Resize(, nCols).Value = _
Application.Transpose(.Range("b" & Inicio).Resize(nCols).Value)
Else: Range("b" & nFila) = .Range("b" & Inicio)
End If
Next
End With
End Sub

saludos,
hector.

__ OP __
... archivo de excel... con datos de contactos en varias columnas que se repiten en varias filas
... son al rededor 8,000... se repiten... debido a que existen datos distintos por cada contacto ejemplo:
A(Nombre del contacto) B (Telefono contacto)
Contacto 1 12345678
Contacto 1 23456789
Contacto 1 34567890
Contacto 2 98765432
Contacto 2 87654321

En este momento solo me interesa a traves de alguna macro
que en otra hoja solo queden datos unicos del contacto con sus telefonos, es decir:

A(Nombre del contacto) B (Tel 1) C (Tel 2) D (Tel 3)
Contacto 1 12345678 23456789 34567890
Contacto 2 98765432 87654321

Todos los contactos tienen al menos un telefono ...
Respuesta Responder a este mensaje
#2 Héctor Miguel
26/02/2009 - 00:48 | Informe spam
hola, Adrian !

prueba con una macro +/- como la siguiente, ejecutada desde la hoja con tu listado original
(agrega una hoja con los datos en su nuevo arreglo, pero te dejo de tarea los titulos para las columnas de telefonos)

Sub Unificar_contactos()
Application.ScreenUpdating = False
Dim Inicio As Long, nCols As Byte, nFila As Integer
With ActiveSheet
Worksheets.Add(After:=Worksheets(.Index)).Name = "Conjunto"
.Range(.[a1], .[a65536].End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=[a1], Unique:=True
[a:a].Sort Key1:=[a2], Order1:=xlAscending, Header:=True
For nFila = 2 To [a65536].End(xlUp).Row
Inicio = Application.Match(Range("a" & nFila), .Range("a:a"), 0)
nCols = Application.CountIf(.Range("a:a"), Range("a" & nFila))
If nCols > 1 Then
Range("b" & nFila).Resize(, nCols).Value = _
Application.Transpose(.Range("b" & Inicio).Resize(nCols).Value)
Else: Range("b" & nFila) = .Range("b" & Inicio)
End If
Next
End With
End Sub

saludos,
hector.

__ OP __
... archivo de excel... con datos de contactos en varias columnas que se repiten en varias filas
... son al rededor 8,000... se repiten... debido a que existen datos distintos por cada contacto ejemplo:
A(Nombre del contacto) B (Telefono contacto)
Contacto 1 12345678
Contacto 1 23456789
Contacto 1 34567890
Contacto 2 98765432
Contacto 2 87654321

En este momento solo me interesa a traves de alguna macro
que en otra hoja solo queden datos unicos del contacto con sus telefonos, es decir:

A(Nombre del contacto) B (Tel 1) C (Tel 2) D (Tel 3)
Contacto 1 12345678 23456789 34567890
Contacto 2 98765432 87654321

Todos los contactos tienen al menos un telefono ...
Respuesta Responder a este mensaje
#3 Anonimo
26/02/2009 - 11:03 | Informe spam
Un saludo. Hector, yo he probado con datos en una hoja excel 2007 y la
verdad, no me sale. No se si hare algun paso mal, pero en principio me crea
una hoja nueva, pero en la hoja1 me borra los datos de la columna "A"
excepto el primero, me deja los datos de la columna "B", sin embargo en la
hoja que me crea no me hace nada de nada.


"Adrian V." escribió en el mensaje de
noticias news:
Buenas tardes a todos, espero alguien pueda ayudarme a resolver un
problema
que tengo y es el siguiente:

Tengo un archivo de excel (2002) con datos de contactos en varias columnas
que se repiten en varias filas, en total son al rededor 8,000 el motivo
por
el cual se repiten es debido a que existen datos distintos por cada
contacto,
ejemplo:

A(Nombre del contacto) B (Teléfono contacto)
Contacto 1 12345678
Contacto 1 23456789
Contacto 1 34567890
Contacto 2 98765432
Contacto 2 87654321

En este momento sólo me interesa a traves de alguna macro, que en otra
hoja
sólo queden datos únicos del contacto con sus teléfonos, es decir:

A(Nombre del contacto) B (Tel 1) C (Tel 2) D (Tel 3)
Contacto 1 12345678 23456789 34567890
Contacto 2 98765432 87654321

Todos los contactos tienen al menos un teléfono, ojala me puedan ayudar
Gracias

Respuesta Responder a este mensaje
#4 Adrian V.
26/02/2009 - 17:17 | Informe spam
Hector, de antemano gracias por la ayuda, pero al copiar (y pegar en VBA de
la hoja) y ejecutar el código que me envías, me manda un error que únicamente
dice "400", también crea otra hoja pero sin datos.

Lo único que cambié en el código fué el nombre del archivo:

dice: Worksheets.Add(After:=Worksheets(.Index)).Name = "Conjunto"
lo cambié a: Worksheets.Add(After:=Worksheets(.Index)).Name = "Sheet1"

No se si estoy haciendo algo mal, podrías orientarme?, en espera de tus
comentarios, gracias nuevamente.


"Héctor Miguel" escribió:

hola, Adrian !

prueba con una macro +/- como la siguiente, ejecutada desde la hoja con tu listado original
(agrega una hoja con los datos en su nuevo arreglo, pero te dejo de tarea los titulos para las columnas de telefonos)

Sub Unificar_contactos()
Application.ScreenUpdating = False
Dim Inicio As Long, nCols As Byte, nFila As Integer
With ActiveSheet
Worksheets.Add(After:=Worksheets(.Index)).Name = "Conjunto"
.Range(.[a1], .[a65536].End(xlUp)).AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=[a1], Unique:=True
[a:a].Sort Key1:=[a2], Order1:=xlAscending, Header:=True
For nFila = 2 To [a65536].End(xlUp).Row
Inicio = Application.Match(Range("a" & nFila), .Range("a:a"), 0)
nCols = Application.CountIf(.Range("a:a"), Range("a" & nFila))
If nCols > 1 Then
Range("b" & nFila).Resize(, nCols).Value = _
Application.Transpose(.Range("b" & Inicio).Resize(nCols).Value)
Else: Range("b" & nFila) = .Range("b" & Inicio)
End If
Next
End With
End Sub

saludos,
hector.

__ OP __
> ... archivo de excel... con datos de contactos en varias columnas que se repiten en varias filas
> ... son al rededor 8,000... se repiten... debido a que existen datos distintos por cada contacto ejemplo:
> A(Nombre del contacto) B (Telefono contacto)
> Contacto 1 12345678
> Contacto 1 23456789
> Contacto 1 34567890
> Contacto 2 98765432
> Contacto 2 87654321
>
> En este momento solo me interesa a traves de alguna macro
> que en otra hoja solo queden datos unicos del contacto con sus telefonos, es decir:
>
> A(Nombre del contacto) B (Tel 1) C (Tel 2) D (Tel 3)
> Contacto 1 12345678 23456789 34567890
> Contacto 2 98765432 87654321
>
> Todos los contactos tienen al menos un telefono ...



Respuesta Responder a este mensaje
#5 Héctor Miguel
26/02/2009 - 17:42 | Informe spam
hola, !

... he probado con datos en una hoja excel 2007 y la verdad, no me sale. No se si hare algun paso mal
pero en principio me crea una hoja nueva, pero en la hoja1 me borra los datos de la columna "A"
excepto el primero, me deja los datos de la columna "B", sin embargo en la hoja que me crea no me hace nada de nada.



como es el "arreglo" de tus datos ?

con los datos de OP, la misma macro me ha funcionado igual en la version 2007 -?-
- nombres repetidos en la columna A con telefonos diferentes en la columna B
- macro ejecutada con "esta" hoja como la hoja activa

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida