Excel - Ayuda con Excel

   
Vista:

Ayuda con Excel

Publicado por Panther (3 intervenciones) el 10/07/2008 16:42:44
Que onda raza tengo el siguiente duda.

tengo una serie de datos que estan repetidos con informacion diferente. y lo que ocupo es poner esos datos repetidos en un solo renglon mediante una funcion para que sea mas rapido ya que si es una buena cantidad de informacion y hacerla manual me llevaria mucho tiempo...
aqui el ejemplo
A1 B1 C1 D1
PEPE 50 100 50
PEPE 60 70 30
PEPE 10 30 20
JUAN 10 20 50
JUAN 15 20 25
PEDRO 10 15 25
PEDRO 15 10 15
IVAN 10 10 10
IVAN 15 40 50

asi tengo mis datos y lo que kiero obtener como resultado es la siguiente estructura
A1 B1 C1 D1 E1 F1 G1 H1 I1 J1
PEPE 50 100 50 60 70 30 10 30 20
JUAN 10 20 50 15 20 25
PEDRO 10 15 25 15 10 15
IVAN 10 10 10 15 40 50

realmente necesito de su ayuda para que no me corran de la chamba jjejeje bueno no tanto asi pero si alguien conoce alguna funcion que me pueda ayudar se los agradeceria.

saludos
rock
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

RE:Ayuda con Excel

Publicado por Javier R. (37 intervenciones) el 10/07/2008 23:05:11
Hola, una sugerencia sería que partiendo de tu ejemplo podemos realizar el siguiente proceso:
1.- Ordenar la base por Nombre,
2.- Insertar una columna al inicio que se llame NUMERO, esta palabra quedará escrita en la celda A1,
3.- Escribir la fórmula =SI(B2<>B1,1,0) en la celda A2 y copiarla hacia abajo,
4.- En la columna 4 (F) escribir la fórmula =SI($B3=$B2,C3,"") y copiarla hacia la derecha tantas columnas como sea necesario (Número de veces que más se repite un nombre X Número de columnas con datos originales – el Número de columnas originales), para este ejemplo sería 3 veces que se repite PEPE por 3 COLUMNAS = 9 menos 3 Columnas Originales = 6 Columnas hacia la derecha que hay que copiar, (Hasta la columna K).
5.- Copiar el rango F2:K2 hacia abajo.
6.- Finalmente aplicamos Autofiltro y en la columna NUMERO escogemos las que tengan 1. Con el rango así filtrado copiamos esos datos visibles y los pegamos en otra hoja.
Y Listo.

NUMERO NOMBRE COL 1 COL 2 COL 3 COL 4
=SI(B2<>B1,1,0) PEPE 50 100 50 =SI($B3=$B2,C3,"")
=SI(B3<>B2,1,0) PEPE 60 70 30
=SI(B4<>B3,1,0) PEPE 10 30 20
=SI(B5<>B4,1,0) JUAN 10 20 50
=SI(B6<>B5,1,0) JUAN 15 20 25
=SI(B7<>B6,1,0) PEDRO 10 15 25
=SI(B8<>B7,1,0) PEDRO 15 10 15
=SI(B9<>B8,1,0) IVAN 10 10 10
=SI(B10<>B9,1,0) IVAN 15 40 50

Ojalá esto te ayude a resolver tu problema,
Saludos,
Javier 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

RE:Ayuda con Excel

Publicado por Octavio Illescas (46 intervenciones) el 10/07/2008 23:09:57
Ponte este codigo en un modulo
Option Explicit

Sub ResumirDetalle()
'Agrupa filas iguales y resume el detalle

Dim rango As Range
Dim filaAnterior As Range, fila As Range
Dim compararAnterior As Range, comparar As Range
Dim detalleAnterior As Range, detalle As Range
Dim indice As Integer, numColumnas As Integer

Set rango = ActiveCell.CurrentRegion
numColumnas = rango.Columns.Count
Set filaAnterior = rango.Rows(1)
indice = 2

Do While indice <= rango.Rows.Count
Set fila = rango.Rows(indice)

'Obtener todas las celdas de la fila menos la última
Set comparar = fila.Resize(1, numColumnas - 1)
Set compararAnterior = filaAnterior.Resize(1, numColumnas - 1)

If RangosIguales(comparar, compararAnterior) Then

'Consideramos que el detalle es la última celda de la fila
Set detalle = fila.Cells(numColumnas) 'Set detalle = fila.Offset(0, numColumnas - 1).Resize(1, 1)
Set detalleAnterior = filaAnterior.Cells(numColumnas) 'Set detalleAnterior = filaAnterior.Offset(0, numColumnas - 1).Resize(1, 1)

'Agrupar el detalle y borrar la fila
detalleAnterior.Value = detalleAnterior.Value & ", " & detalle.Value
fila.Delete
Else
Set filaAnterior = fila
indice = indice + 1
End If
Loop

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