Jump to content

Agrupación de fila y suma de su contenido


Recommended Posts

Buenas tardes.

Estoy trabajando con una base de datos muy grande en la cual tengo numerosos casos en los que el nombre de filas contiguas sólo se diferencia por la existencia de un número cardinal o romano.

Mi trabajo consiste en agrupar las mencionadas filas y sumar el contenido de una de sus columnas.

Os adjunto un ejemplo en el que creo que se explica con claridad.

Muchas gracias de antemano y perdón por mi ignorancia en este tipo de temas.

Ejemplo.xlsx

Link to post
Share on other sites
Sub Acumular()
Application.ScreenUpdating = False
Range("A:C").Copy Range("E1")
For x = Range("E" & Rows.Count).End(xlUp).Row To 3 Step -1
   i1 = InStrRev(Range("E" & x), " ")
   i2 = InStrRev(Range("E" & x - 1), " ")
   If i1 = 0 Then i1 = Len(Range("E" & x))
   If i2 = 0 Then i2 = Len(Range("E" & x - 1))
   If Left(Range("E" & x), i1) = Left(Range("E" & x - 1), i2) Then
      Range("E" & x - 1) = Left(Range("E" & x - 1), i2)
      Range("F" & x - 1) = Range("F" & x - 1) + Range("F" & x)
      Range("E" & x).Resize(1, 3).Delete
   End If
Next
End Sub

 

Edited by Antoni
Link to post
Share on other sites
Hace 10 minutos , Antoni dijo:

Sub Acumular()
Application.ScreenUpdating = False
Range("A:C").Copy Range("E1")
For x = Range("E" & Rows.Count).End(xlUp).Row To 3 Step -1
   i1 = InStrRev(Range("E" & x), " ")
   i2 = InStrRev(Range("E" & x - 1), " ")
   If i1 = 0 Then i1 = Len(Range("E" & x))
   If i2 = 0 Then i2 = Len(Range("E" & x - 1))
   If Left(Range("E" & x), i1) = Left(Range("E" & x - 1), i2) Then
      Range("E" & x - 1) = Left(Range("E" & x - 1), i2)
      Range("F" & x - 1) = Range("F" & x - 1) + Range("F" & x)
      Range("E" & x).Resize(1, 3).Delete
   End If
Next
End Sub

 

Muchas gracias Antoni. Dos cosas muy rápidas:

  1. ¿Podríamos hacer que, en vez de que esa "nueva" base de datos se ejecute al lado, se cree en una nueva hoja?
  2. No consigo hacerla funcionar en mi Excel, ¿podrías adjuntar el tuyo?

Reitero mi agradecimiento

Link to post
Share on other sites
Hace 21 minutos , Haplox dijo:

Ya que lo acababa de hacer te dejo mi solución (te adelantaste por la mano @Antoni 😉)

Copia de Ejemplo.xlsm 19.21 kB · 0 descargas

Muchísimas gracias.

Sin embargo, me siento inútil. Quiero adaptarla a esta hoja que adjunto y no soy capaz.

Las columnas que me interesan son:

  • Columna B: nombre
  • Columna G: potencia

El resto me gustaría que se quedaran "igual"

¿Cómo podría hacerlo?

Muchas gracias y perdona por todas las molestias

InformeInstalaciones-24_11_2020.xlsx

Link to post
Share on other sites
Hace 8 horas, alvaroballes dijo:

Estoy trabajando con una base de datos muy grande en la cual tengo numerosos casos en los que el nombre de filas contiguas sólo se diferencia por la existencia de un número cardinal o romano.

Mi trabajo consiste en agrupar las mencionadas filas y sumar el contenido de una de sus columnas.

Holas!

Tenia algo de aburrimiento y dejo 4 alternativas, usando power query, tabla dinamica, formulas y Vba, respecto a la tabla dinamica, lo que hago primero es procesar la tabla en power query, luego la cargo al modelo de datos de Excel, que en tu caso, es lo que mas se recomienda 

 

Saludos a todos!

Sumarizar power query - td - formulas -Vba_GP.xlsm

Link to post
Share on other sites
Hace 13 horas, Gerson Pineda dijo:

Holas!

Tenia algo de aburrimiento y dejo 4 alternativas, usando power query, tabla dinamica, formulas y Vba, respecto a la tabla dinamica, lo que hago primero es procesar la tabla en power query, luego la cargo al modelo de datos de Excel, que en tu caso, es lo que mas se recomienda 

 

Saludos a todos!

Sumarizar power query - td - formulas -Vba_GP.xlsm 193.44 kB · 2 descargas

Guau que nivel.

Muchas gracias.

Como comentaba anteriormente mi idea es adaptar la macro para insertar un botón en este archivo (adjunto) pero no soy capaz de hacer funcionar vuestras macros e ideas.

Las columnas que me interesan son:

  • Columna B: nombre
  • Columna G: potencia

El resto me gustaría que se quedaran "igual"

¿Cómo podría hacerlo?

Muchas gracias.

InformeInstalaciones-24_11_2020.xlsx

Link to post
Share on other sites
Hace 12 horas, Antoni dijo:

Abre el adjunto y pulsa sobre la flecha azul.

InformeInstalaciones-24_11_2020.xlsm 45.89 kB · 3 descargas

Analizando el archivo solo necesito añadir un pequeño detalle.

Sólo necesito agrupar aquellos nombres que sólo se diferencia en número, número romano, etc (como ahora hace) pero la condición que tengo que añadir es que sólo lo haga en aquellas que la la celda C sea idéntica (es decir, que sean del mismo municipio).

Muchas gracias y perdón por el contratiempo.

Link to post
Share on other sites

Basta con añadir una condición más a la macro:

Sub Acumular()
Application.ScreenUpdating = False
ActiveSheet.Copy after:=ActiveSheet
For x = Range("E" & Rows.Count).End(xlUp).Row To 3 Step -1
   i1 = InStrRev(Range("B" & x), " ")
   i2 = InStrRev(Range("B" & x - 1), " ")
   If i1 = 0 Then i1 = Len(Range("B" & x))
   If i2 = 0 Then i2 = Len(Range("B" & x - 1))
   If Left(Range("B" & x), i1) = Left(Range("B" & x - 1), i2) And _
      Range("C" & x) = Range("C" & x - 1) Then '<----- Condición añadida -----------
      Range("B" & x - 1) = Left(Range("B" & x - 1), i2)
      Range("G" & x - 1) = Range("G" & x - 1) + Range("G" & x)
      Rows(x).Delete
   End If
Next
Range("A1").Select
End Sub

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Crear macros Excel

  • Posts

    • Hola estimados amigos de ayuda excel quisiera pedirles de favor me ayuden con el siguiente problema: Tengo en la celda a1 de la hoja 1 un texto que puede ser mas largo eso no importa, he colocado un botón con un código que al presionar separa el texto en varias líneas pero el problema es que sustituye el contenido de la celda a1 de la hoja 1, me interesaría que la celda a1 de la hoja 1 quede intacta con la información que se muestra inicialmente y más bien que al presionar el botón del formulario se pueda copiar el contenido a la hoja 2 ahí si me interesa que se separe en líneas como actualmente lo hace, el código trabaja, pero, lo que quiero es que NO sustituya el código de la hoja1 esta información debe mantenerse ya que en el programa que trabajo actualmente se extrae esta información a un formulario, todo este texto, y ustedes comprenderán que al separarse me va a leer solo la primera linea y eso es lo que no quiero, por el contrario el texto separado en lineas necesito que vaya a la hoja2 ya que posteriormente colocare un botón para poder imprimir esa información separada en lineas considerando un rango determinado de celdas que podrian ser desde la a1:a20 , les adjunto el ejemplo para que por favor me colaboren...muchas gracias. Ayuda Copiar texto en Hoja 2.xlsm
    • te parece si adjuntas (una copia RE-DU-CI-DA de) TU modelo (EN archivo "de excel") ? solo asegura que se reproduce el comportamiento que describes
    • Ya los revise es por por que lo oculto el robbin, con otros codigos de vista de impresión suceden lo mismo.
    • la prueba hecha es con la cinta oculta y ejecutando (solamente)... y ya sea que pulse "atrás" o "esc" o mande la impresión, al regresar a la interfaz de usuario la cinta sigue oculta probablemente sea por otras instrucciones en otras partes de tus códigos ?
    • Ni cuenta me di que estaba en Word pero el problema es en Excel.
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy