Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/05/2012, 21:07
Avatar de mrocf
mrocf
 
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 19 años, 6 meses
Puntos: 88
De acuerdo Respuesta: Como concatener datos de una columna en archivo excel que se repite

Hola! CURIBER. Sigue los siguientes pasos:

a) Haz click derecho en la solapa de la hoja en la que deseas el efecto y selecciona: Ver código;

b) En la ventana que se te abrirá, copia y pega lo siguiente:

Código PHP:
Sub Concatenar()
Dim Mat1, Vec1, Mat2
Dim Rng 
As Range, i As Long, j As Long, TC As Long, Q As Long

On Error Resume Next
Set Rng 
= Application.InputBox("Selecciona el rango a procesar" & vbLf & "(por ejemplo: B2:D17)", "Resumen por concatenación", Type:=8)
If 
Rng Is Nothing Then Exit Sub

Mat1 
= Rng
Q 
= UBound(Mat1, 1)
ReDim Vec1(1 To Q, 1 To 1)
ReDim Mat2(1 To Q, 1 To 2)

For 
i = 1 To Q
  j 
= WorksheetFunction.Match(Mat1(i, 1), Vec1, 0)
  If 
Err.Number > 0 Then
    Err
.Clear
    TC 
= 1 + TC: j = TC
    Vec1
(j, 1) = Mat1(i, 1)
    
Mat2(j, 1) = Mat1(i, 2)
  
End If
  
Mat2(j, 2) = IIf(Mat2(j, 2) = Empty, "", Mat2(j, 2) & ";") & Mat1(i, 3)
Next i

On Error GoTo 0
With Rng
.Parent.Cells(Rng(1).Row, Rng(1).Column + 10)
  .
Offset(, 1).Resize(100 + Q, 3).Delete
  
.Offset(, 1).Resize(TC) = Vec1
  
.Offset(, 2).Resize(TC, 2) = Mat2
  
.Offset(, 1).CurrentRegion.Sort Key1:=.Offset(, 1), Order1:=xlAscending, Header:=False
  
.Offset(, 1).Resize(Q, 3).Columns.AutoFit
  Application
.Goto .Offset(, -2), True
End With
End Sub 
c) Cierra esa ventana del ambiente Visual Basic for Application en el que te encuentras, y retorna al Excel.

d) Ejecuta la macro recién incorporada: Concatenar.

e) La macro te solicita que selecciones el rango de tres columnas con los datos a procesar. Al cabo de unos instantes: ¡obtendrás lo pedido!

¿Te sirve la idea?...
Saludos, Cacho R.

Última edición por mrocf; 25/05/2012 a las 21:23