Macro copiar y pegar contenido agrupado

Saludos:
Tengo una lista de tipo:
Proyecto Equipos Valores
alpha audio 100.000
                                         Video Kjl.. 800.565
gamma jornales 750.000 (aquí pego la suma)
                                          Audio KGB 100.000
                                           Coaxial 70.500
necesito limpiar la base y dejarlo por línea, por ello debo sumar (y dejarlo en una fila, cosa que he hecho con unas macros sencillas, que he creado con clics, no con programación, porque no se hacerlo) consiste en: (sumar lo correspondiente, copiar ese valor y pegarlo en la fila que tiene el nombre del proyecto, así puedo borrar las cifras de abajo) y resulta.
El problema es que cuando quiero que copie los nombre de equipos y los deje en una sola fila así:
Gamma jornales, audio KGB, Coaxial (error! ) 920.500 (OK)
Porque ecuando la ejecuto siempre trabaja con los mismos campos en la que fue creada.
(Uso campos referenciales)
Agradezco me puedan ayudar, porque son más de 9.000 regustros mes a mes.
Atentamente
Adolfo Labarca (Chile)
{"Lat":-30.7512777762578,"Lng":-70.3125}

1 respuesta

Respuesta
1
Necesito más datos para poder ayudarte..
Envíame la macro que usas.
Si entiendo bien lo que quieres es reducir cada proyecto a una línea y que muestre toda la información de Equipos en esa Fila.
En efecto, que equipos quede en la misma linea y campo, separados por ";" como:
             A B C
1 20-C0165 ACTIVO FIJO POR ASIGNAR ; OTRO 126331862
2    20-C2174            ENCHUFE HEMBRA VOLANTE ; OTRO ; BASES           349035693
Aquí va una macro, como en algunos casos son 2,3,5,6, etc. equipos por cada código (columna "A"), hice una para cada cantidad y las nombre según cuantas filas suman, lo hago así:
Corto o copio uno a uno los equipos y los pego en la fila "1" separando por ";" (donde los quiero juntos, y luego ejecuto la macro en la columna "D" junto a la misma fila, entonces la macro suma los valores, pega el total en la fila "1" y elimina las filas vacías. (Bueno al ver la macro comprenderás)
PD insisto en que no las programé, porque no se hacerlo, sino sólo las cree mediante clics.
Agradezco tu interés y tu tan pronta respuesta.
Saludos.
Sub suma_2()
'
' suma_2 Macro
'
' Acceso directo: CTRL+w
'
ActiveCell.Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-1]:R[1]C[-1])"
ActiveCell.Select
Selection.Copy
ActiveCell.Offset(0, -1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, 1).Range("A1").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Offset(-1, 0).Rows("1:1").EntireRow.Select
End Sub
Prueba con el procedimiento que listo más abajo...
Eso si, debes seguir los siguientes supuestos.
La tabla debe tener la misma configuración que detallaste en el primer mensaje.
La tabla debe estar en la hoja 1 y el primer valor en la celda A1 (que es el titulo Proyecto).
Los resultados se muestran en la hoja 2.
La tabla debe terminar con una celda vacía en la columna A.
La tabla debe estar ordenada por proyecto.
Creo que es todo...
Avísame si te sirve...
Sub copiar_unaFILA()
Dim sumaToTal As Long
Dim nombreProyecto As String
Dim Equipos As String
Dim flagTermino As Boolean
Dim flagCambioProyecto As Boolean
Dim i As Long
Dim contadorImpresion As Long
contadorImpresion = 2
i = 2
sumaToTal = 0
nombreProyecto = ""
flagTermino = False
flagCambioProyecto = False
While (Not flagTermino)
sumaToTal = 0
nombreProyecto = ""
Equipos = ""
flagTermino = False
flagCambioProyecto = False
While (Not flagCambioProyecto)
With Worksheets(1)
If (.Cells(i, 1) = .Cells(i + 1, 1)) Then
nombreProyecto = .Cells(i, 1)
Equipos = Equipos + .Cells(i, 2)
Equipos = Equipos + ";"
sumaToTal = sumaToTal + .Cells(i, 3)
i = i + 1
Else
Equipos = Equipos + .Cells(i, 2)
sumaToTal = sumaToTal + .Cells(i, 3)
Worksheets(2).Cells(contadorImpresion, 1) = nombreProyecto
Worksheets(2).Cells(contadorImpresion, 2) = Equipos
Worksheets(2).Cells(contadorImpresion, 3) = sumaToTal
contadorImpresion = contadorImpresion + 1
flagCambioProyecto = True
i = i + 1
End If
End With
Wend
If (Cells(i, 1) = "") Then
flagTermino = True
End If
Wend
End Sub
Hola antes que nada muchísimas gracias por tu atención, la solución no me sirvió en un principio, leí mal, realice algunos cambios bajo los "supuestos" y Chan!
Genial
Excelente aporte Muchísimas gracias por tu tiempo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas