Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Ordenar datos insertar filas

Un amigo lector del foro me pregunta sobre como ordenar datos en Excel y realizar un Código o Macro de VBA para manipular los mismos. Para ello se requiere ordenar los datos por proveedor, una vez realizado este paso se debía insertar filas en el caso en estudio, dos filas desde el último proveedor ordenado y por cada uno de ellos, como así también agregar un total en una de las filas, en base a esa pregunta prepare este ejemplo que se adapta perfectamente a lo que necesita nuestro amigo, en ordenar datos automáticamente, ordenar datos al activar hoja y ordenar datos automáticamente en base a varios criterios; se puede observar otros ejemplos sobre como ordenar datos mediante macros de VBA.

A los fines de dar más utilidad a la macro para ordenar registros, se determina en forma variable cual es la última fila con datos, como así también cual es la última columna con datos, ya que en programación de VBA es muy común realizar bucles hasta la última fila o columna con datos, aquí se muestra como se determinan en forma variable, la ventaja radica que que no tenemos que estar agregando manualmente el número de filas o columnas a analizar, es decir puede servir para una base de datos de pocos registro como para una base de datos de 30.000 o más registros, no interesa ya que el rango a ordenar se determina mediante variables..

Esta macro se relación con otros post los cuales se sugiere ver a los fines de complementar, como ordenar datos, determinar la última fila o columna con datos, insertar filas, recorrer filas mediante un bucle, estos son algunos de los ejemplos donde se puede observar como se utilizan los códigos de VBA o macros de Excel a los fines de obtener el resultado deseado, en  la categoría Macros VBA encontrarás muchos ejemplos que puedes adaptar a tu proyecto.

En código de VBA que se presenta más abajo cuyo archivo de ejemplo puedes descargar del link del final, encontrarás primero la forma de ordenar los datos mediante VBA, es decir se tiene un listado de proveedores y otros datos , se intenta ordenar por proveedor y que debajo de cada proveedor se inserte un total dejando otra fila más en blanco.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Para proceder a ordenar se crean variables asignado la la dirección de la última fila con datos como así también la última columna con datos, una vez realizado este procedimiento, se procede a insertar dos filas debajo del último proveedor ordenado y listado, insertada las dos filas en una de ellas se agrega el total de de la suma del campo total de cada proveedor, también se agrega formato de negrita.

Si se agregan más proveedores o datos a la base de datos, no se tiene más que apretar el botón para correr la macro y automáticamente se ordena por proveedor y agrega totales a cada proveedor, apretado el botón para correr la macro, primero se quitan todos los totales y filas vacías, y luego se procede a ordenar mediante VBA e insertar tal cual se describe en párrafos anteriores, para probar su funcionamiento sólo agrega otros datos a la base y haz click en el botón, automáticamente se ordena, se insertan las filas, se agrega el total y se pone el formato negrita al total.

Una explicación más detallada y gráfica de la macro presentada se muestra en el vídeo que se muestra seguidamente, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo Como cerrar libro dependiendo de fecha de caducidadbuscar en listbox mientras escribes en textboxComo conectar Excel con Word crear archivo e insertar textoComo crear un autonumerico en Excel y muchos ejemplos más.

Código que se insertar en un módulo


Sub Ordena()
Application.ScreenUpdating = False
Dim uf, uff, r1, r3, r, conta, k1, co, fila, fila2, conta1 As String
Dim x As Integer
Dim sum As Currency
‘determines last row with data
uf = Sheets(«hoja1»).Range(«A» & Rows.Count).End(xlUp).Row
uc = Sheets(«hoja1»).Cells(«1,» & Columns.Count).End(xlToRight).Address(False, False)
uc = Mid(uc, 1, 1)
r = 1
conta = 0
fila = 2
fila2 = 2
sum = 0
conta1 = 0
x = 2
‘Antes de ordenar, elimina filas vacias
uff = Sheets(«hoja1»).Range(«E» & Rows.Count).End(xlUp).Row
While x <= uff

MASTERCARD PAYONEER

If Sheets(«hoja1»).Cells(x, 1) = Empty Then
Sheets(«hoja1»).Cells(x, 1).EntireRow.Delete
x = x – 1
GoTo aqui:
End If
x = x + 1
aqui:
uff = Sheets(«hoja1»).Range(«E» & Rows.Count).End(xlUp).Row
Wend

While Sheets(«hoja1»).Cells(1, r) <> Empty And conta = 0
If Sheets(«hoja1»).Cells(1, r) = «Proveedor» Then
k = Sheets(«hoja1»).Cells(1, r).Address(False, False)
co = Sheets(«hoja1»).Cells(1, r).Column
conta = 1
End If
r = r + 1
Wend
k1 = Mid(k, 1, 1)

‘will help determine ranges to sort data
r1 = k & «:» & k1 & uf
r3 = «A1:» & uc & uf
‘sorts the data
 ActiveWorkbook.Worksheets(«hoja1»).Sort.SortFields.Clear
 ActiveWorkbook.Worksheets(«hoja1»).Sort.SortFields.Add Key:=Range(r1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
 With ActiveWorkbook.Worksheets(«hoja1»).Sort
        .SetRange Range(r3)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
 End With
Application.ScreenUpdating = False

While Sheets(«hoja1»).Cells(fila, co) <> Empty
 dato1 = Sheets(«hoja1»).Cells(fila, co)

 While Sheets(«hoja1»).Cells(fila, co) <> Empty And conta1 = 0
      dato2 = Sheets(«hoja1»).Cells(fila2, co)
      If dato1 = dato2 Then
      sum = sum + Sheets(«hoja1»).Cells(fila2, 5).Value
      Else
       Sheets(«hoja1»).Cells(fila2, co).EntireRow.Insert
       Sheets(«hoja1»).Cells(fila2, co).EntireRow.Insert
       Sheets(«hoja1»).Cells(fila2, co) = «SUMATORIA»
       Sheets(«hoja1»).Cells(fila2, co).Select
       Selection.Font.Bold = True
       Sheets(«hoja1»).Cells(fila2, 5) = sum
       Sheets(«hoja1»).Cells(fila2, 5).Select
       Selection.Font.Bold = True
       conta1 = 1
      End If
 fila2 = fila2 + 1
 Wend
 
fila = fila2 + 1
fila2 = fila
conta1 = 0
sum = 0
Wend
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


(adsbygoogle = window.adsbygoogle || []).push({});

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Entradas relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comentarios (32)

I am the manager of JustCBD Store company (justcbdstore.com) and am seeking to grow my wholesale side of business. It would be great if anybody at targetdomain give me some advice ! I thought that the best way to do this would be to connect to vape companies and cbd retailers. I was really hoping if anybody at all could recommend a reliable web site where I can get Vape Shop B2B Marketing List I am presently examining creativebeartech.com, theeliquidboutique.co.uk and wowitloveithaveit.com. On the fence which one would be the best choice and would appreciate any guidance on this. Or would it be simpler for me to scrape my own leads? Ideas?

Responder

Помощь юристов налоги можно не платить ликвидация ООО а так же альтернативная ликвидация ооо

Responder

I’m amazed, I have to admit. Seldom do I encounter a blog that’s both educative and entertaining, and without a doubt, you have hit the nail on the head. The issue is an issue that too few people are speaking intelligently about. I am very happy I stumbled across this in my search for something relating to this.

Responder

After I originally left a comment I appear to have clicked on the -Notify me when new comments are added- checkbox and from now on whenever a comment is added I get 4 emails with the exact same comment. Is there an easy method you are able to remove me from that service? Many thanks!

Responder

Greetings! Very useful advice within this article! It is the little changes that make the most significant changes. Thanks a lot for sharing!

Responder

Spot on with this write-up, I seriously think this amazing site needs a great deal more attention. I’ll probably be back again to read more, thanks for the info!

Responder

Very good blog post. I absolutely love this site. Thanks!

Responder

Having read this I believed it was really enlightening. I appreciate you finding the time and energy to put this article together. I once again find myself personally spending a significant amount of time both reading and commenting. But so what, it was still worthwhile!

Responder

Aw, this was an exceptionally good post. Finding the time and actual effort to create a good article… but what can I say… I hesitate a lot and never manage to get nearly anything done.

Responder

There’s definately a great deal to know about this topic. I really like all the points you made.

Responder

Very nice article. I absolutely appreciate this site. Keep it up!

Responder

Good blog post. I definitely love this website. Keep writing!

Responder

Great article. I am experiencing some of these issues as well..

Responder

This is a topic that is close to my heart… Take care! Exactly where are your contact details though?

Responder

After looking into a few of the blog posts on your site, I seriously like your technique of writing a blog. I saved as a favorite it to my bookmark webpage list and will be checking back in the near future. Please visit my web site too and let me know how you feel.

Responder

I quite like reading through a post that can make men and women think. Also, thank you for allowing for me to comment!

Responder

I blog frequently and I seriously appreciate your content. This article has truly peaked my interest. I will take a note of your website and keep checking for new information about once a week. I opted in for your Feed too.

Responder

May I simply say what a comfort to uncover someone who genuinely knows what they’re discussing online. You certainly know how to bring a problem to light and make it important. More people should look at this and understand this side of your story. I was surprised that you are not more popular since you most certainly possess the gift.

Responder

This is a topic that’s close to my heart… Cheers! Where are your contact details though?

Responder

Everyone loves it when people get together and share thoughts. Great site, keep it up!

Responder

I need to to thank you for this great read!! I absolutely loved every little bit of it. I have got you bookmarked to check out new stuff you post…

Responder

I truly love your website.. Very nice colors & theme. Did you build this site yourself? Please reply back as I’m trying to create my own blog and want to learn where you got this from or just what the theme is called. Appreciate it!

Responder

Oh my goodness! Awesome article dude! Many thanks, However I am having troubles with your RSS. I don’t know why I am unable to join it. Is there anybody else getting identical RSS issues? Anyone who knows the answer can you kindly respond? Thanx!!

Responder

Pretty! This was a really wonderful article. Thanks for providing this information.

Responder

Very good article! We are linking to this particularly great post on our website. Keep up the great writing.

Responder

Hi, I do think this is an excellent website. I stumbledupon it 😉 I will return once again since I bookmarked it. Money and freedom is the greatest way to change, may you be rich and continue to guide others.

Responder

You’re so awesome! I do not think I’ve truly read a single thing like this before. So wonderful to discover someone with a few original thoughts on this issue. Really.. thank you for starting this up. This website is something that is required on the internet, someone with a little originality!

Responder

Good info. Lucky me I recently found your blog by chance (stumbleupon). I have saved as a favorite for later!

Responder

Very good post. I will be going through a few of these issues as well..

Responder

I got this site from my buddy who shared with me on the topic of this web site and now this time I am browsing this web page and reading very informative content
at this time.

Responder

Spot on with this write-up, I honestly feel this amazing site needs far more attention. I’ll probably be returning to read more, thanks for the advice!

Responder

We stumbled over here by a different website and thought I might as well check things out.
I like what I see so now i’m following you. Look forward to checking out
your web page repeatedly.

Responder