Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Como Buscar por Cliente Rango de Fechas y Totalizar en Formula


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

En el post se muestra una macro a pedido de un suscriptor de nuestro canal de YouTube, donde requeria saber Como Filtrar por Cliente Rango de Fecha y Totalizar Importes, en este caso se suman los importes de la última columna del listbox y se presentan los totales en dos textbox del formulario, en el siguiente ejemplo se totalizarán los importes y se mostrarán los totales en el mismo r

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.

  
El vídeo verás la macro en acción con una explicación más detallada de su codificación y funcionamiento, 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 Recorre fila buscando y comparando datos de dos columnas en hojas distintasbuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mail, trabajando con filas, celdas, columnas, rangos y muchos ejemplos más.

function onYtEvent(payload) {
if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}



 
Al abrir el libro de Excel con el ejemplo se puede observar un botón, presionando el mismo se muestra un formulario, en dicho formulario se puede filtrar por clientes, por rango de fechas o por cliente y rango de fechas, tiene la particularidad que en dos textbox que se encuentran en el formulario se suman los datos de la última columna con importes del listbox.

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

Quizá sea de utilidad también

Como buscar datos por rango de número y cargar en listbox automáticamente

Como enviar mail con archivo Excel y PDF mediante Outlook con Excel

Como Convertir con macro una tabla de Excel en Una Tabla WEB

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛⇛

En el ejemplo denominado Como Buscar por Cliente Entre Fecha y Fecha se explica en detalle como se puede filtrar por cliente y rango de fecha, en este ejemplo solo se detendrá en explicar como totalizar importes en el textbox del formulario.

Al buscar por cliente, rango de fecha o Cliente y Rango de Fecha se filtran los datos coincidentes y en los textbox que se encuentran en el formulario se totaliza los importes, para contar la cantidad de registros se usa el siguiente código, que luego se escribe en el Textbox4 del Userform de Excel.

UserForm1.TextBox4 = UserForm1.ListBox1.ListCount – 1

Para sumar los importes se utiliza el siguiente código:

For x = 0 To UserForm1.ListBox1.ListCount – 1
t = CDec(UserForm1.ListBox1.List(x, 6))
tot = tot + t
t = 0
Next x
UserForm1.TextBox5 = Format(tot, «#,##0.00 «»U$S»»»)

Lo que hace el código anterior es sumar todos los importes o valores de la última columna del listbox, en este caso es la columna 6 del listbox, esto lo hacer recorriendo todas las filas del listbox con un bucle y va sumando los importes a medida que se recorren los registros, una vez recorridos todos los registros se obtiene la sumatoria de los importes que luego son cargados en el Textobox5, dando un formato de moneda.

A continuación se muestra el código completo del ejemplo llamado Como buscar por Cliente Rango de Fechas y Totalizar en Formulario, seguidamente al código se muestra el link de donde se puede descargar el ejemplo en forma gratuita.

Código que se inserta en un formulario

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub CommandButton2_Click()
On Error Resume Next
Set b = Sheets(«Hoja1»)
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
dato1 = CDate(TextBox2)
dato2 = CDate(TextBox3)
If dato2 = Empty Or dato1 = emtpy Then
MsgBox («Debe ingresar datos para consulta entre rango de fechas»), vbCritical, «AVISO»
Exit Sub
End If
If dato2 < dato1 Then
MsgBox («La fecha final no puede ser mayor a la fecha inicial»), vbCritical, «AVISO»
Exit Sub
End If

b.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear

‘Adiciona un item al listbox reservado para la cabecera
UserForm1.ListBox1.AddItem

If dato1 = Empty Or dato2 = Empty Then

For i = 2 To uf
   dato0 = CDate(b.Cells(i, 2).Value)
   If dato0 >= dato1 And dato0 <= dato2 Then
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 4) = b.Cells(i, 5)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 5) = b.Cells(i, 6)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 6) = b.Cells(i, 7)
   End If
Next i

Else

If dato2 < dato1 Then
MsgBox («La fecha final no puede ser mayor a la fecha inicial»), vbCritical, «AVISO»
Exit Sub
End If

For i = 2 To uf
   strg = b.Cells(i, 1).Value
   dato0 = CDate(b.Cells(i, 2).Value)
   If UCase(strg) Like UCase(TextBox1.Value) & «*» And dato0 >= dato1 And dato0 <= dato2 Then
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 4) = b.Cells(i, 5)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 5) = b.Cells(i, 6)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 6) = b.Cells(i, 7)
   End If
Next i

End If

‘Carga los datos de la cabecera en listbox
For ii = 0 To 7
UserForm1.ListBox1.List(0, ii) = Sheets(«Hoja1»).Cells(1, ii + 1)
Next ii

For x = 0 To UserForm1.ListBox1.ListCount – 1
t = CDec(UserForm1.ListBox1.List(x, 6))
tot = tot + t
t = 0
Next x

UserForm1.TextBox4 = UserForm1.ListBox1.ListCount – 1
UserForm1.TextBox5 = Format(tot, «#,##0.00 «»U$S»»»)

Me.ListBox1.ColumnWidths = «170 pt;50 pt;50 pt;50 pt;50 pt;50 pt;50 pt»
End Sub

Private Sub CommandButton3_Click()
Unload UserForm1
End Sub

Private Sub TextBox1_Change()
On Error Resume Next
Set b = Sheets(«Hoja1»)
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
If Trim(TextBox1.Value) = «» Then
   Me.ListBox1.RowSource = «Hoja1!A1:G» & uf
   UserForm1.TextBox4 = Clear
   UserForm1.TextBox5 = Clear
   Exit Sub
End If

b.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear
dato1 = CDate(TextBox2)
dato2 = CDate(TextBox3)
‘Adiciona un item al listbox reservado para la cabecera
UserForm1.ListBox1.AddItem

For i = 2 To uf
   strg = b.Cells(i, 1).Value
   If UCase(strg) Like UCase(TextBox1.Value) & «*» Then
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 1) = b.Cells(i, 2)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 2) = b.Cells(i, 3)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 3) = b.Cells(i, 4)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 4) = b.Cells(i, 5)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 5) = b.Cells(i, 6)
       Me.ListBox1.List(Me.ListBox1.ListCount – 1, 6) = b.Cells(i, 7)
   End If
Next i

‘Carga los datos de la cabecera en listbox
For ii = 0 To 7
UserForm1.ListBox1.List(0, ii) = Sheets(«Hoja1»).Cells(1, ii + 1)
Next ii

For x = 0 To UserForm1.ListBox1.ListCount – 1
t = CDec(UserForm1.ListBox1.List(x, 6))
tot = tot + t
t = 0
Next x

UserForm1.TextBox4 = UserForm1.ListBox1.ListCount – 1
UserForm1.TextBox5 = Format(tot, » «»U$S»» #,##0.00 «)

UserForm1.TextBox2 = Clear
UserForm1.TextBox3 = Clear

Me.ListBox1.ColumnWidths = «170 pt;50 pt;50 pt;50 pt;50 pt;50 pt;50 pt»
End Sub

Private Sub TextBox2_Change()
If Len(UserForm1.TextBox2) = 10 Then UserForm1.TextBox3.SetFocus
End Sub

Private Sub TextBox3_Change()
If Len(UserForm1.TextBox3) = 10 Then UserForm1.CommandButton2.SetFocus
End Sub

Private Sub UserForm_Initialize()
Dim fila As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set b = Sheets(«Hoja1»)
uf = b.Range(«A» & Rows.Count).End(xlUp).Row
uc = b.Cells(1, Columns.Count).End(xlToLeft).Address
wc = Mid(uc, InStr(uc, «$») + 1, InStr(2, uc, «$») – 2)
With Me.ListBox1
    .ColumnCount = 7
    .ColumnWidths = «170 pt;50 pt;50 pt;50 pt;50 pt;50 pt;50 pt»
    .RowSource = «Hoja1!A1:» & wc & uf
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
On Error GoTo Fin
If CloseMode <> 1 Then Cancel = True
Fin:
End Sub

Código que se inserta en un módulo

Sub muestra1()
UserForm1.Show
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 (10)

I’m the manager of JustCBD Store brand (justcbdstore.com) and I’m presently trying to develop my wholesale side of business. I am hoping someone at targetdomain share some guidance 🙂 I considered that the most ideal way to accomplish this would be to reach out to vape stores and cbd retail stores. I was really hoping if anyone could suggest a reliable web-site where I can buy CBD Shops B2B Database with Email Addresses I am presently reviewing creativebeartech.com, theeliquidboutique.co.uk and wowitloveithaveit.com. Not sure which one would be the best solution and would appreciate any support on this. Or would it be much simpler for me to scrape my own leads? Suggestions?

Responder

Excellent article! We are linking to this particularly great content on our site. Keep up the good writing.

Responder

Excellent web site you’ve got here.. It’s hard to find quality writing like yours these days. I honestly appreciate individuals like you! Take care!!

Responder

Hello there! This article couldn’t be written any better! Going through this post reminds me of my previous roommate! He always kept talking about this. I will forward this post to him. Pretty sure he’s going to have a great read. Many thanks for sharing!

Responder

This excellent website certainly has all of the information and facts I wanted concerning this subject and didn’t know who to ask.

Responder

Saved as a favorite, I like your website!

Responder

Good post. I’m dealing with a few of these issues as well..

Responder

Hi there, There’s no doubt that your blog could possibly be having internet browser compatibility problems. Whenever I take a look at your blog in Safari, it looks fine however, if opening in IE, it has some overlapping issues. I just wanted to give you a quick heads up! Aside from that, fantastic site!

Responder

No challenege show up others might tell you, it uses
little dose of work to quick money online.
Your current products can put in a several hours of work, it’s fairly easy to
make your first $1,000 dollars web. The second part you need to complete in order to
make quick money online is your landing page setup.

If an individual in importance of some fast money, webpage for myself would recommend you find
out getting because they Wealth Discount
package. It has been the #1 most innovative product for home based business final results.
It goes over web in depth as well as a lot of ways to make multiple streams
of income with. Consists of shows you the way you can boost revenue through web site and even shows you other to help promote
your service for freely available.

There are three major search engines namely Google, Yahoo and MSN.
Submit all your site for inclusion in these three major motors
like google and keep submitting web site pages with search engines on a regular basis.
Do it manually or you may apply certain search engine submission software or service
which may help you by automatic submission.

Although do not count phrases of of rankings, you
still want to add these elements to your page
because your searchers discover the classification. The description along with the
metatags are located between the head tags in the very best of
the HTML official document.

The truth is, you can but it needs you extended to generate
a good page ranking and begin seeing profits. Working
your online business for only and hour or two
in your spare time every day does help, but you will need you months if
not years to get where need to continually
be.

Another strategy generate money from website is from google adsense.
You can totally free email with them for free and then put google ads to your blog subsequently whenever someone clicks on that ad you will get paid carrying
out amount from google. Numerous vairy originating from a ads plus it all might be the content
you display and you won’t of what people are financing those google advertisements.

This area is in order to Affiliate Marketing and advertising.
Affiliate marketing is a mind blowing way start off
making fast money. You basically pick a product to promote,
generate traffic to it, and when you create a sale anyone certainly get
a commission associated with it.

Link building is the biggest and most crucial regions of any search
engine optimization campaign. It can proven marketing
technique this also boost traffic and grow your sales.
However, it doesn’t happen overnight, you prefer to spend time searching for
and submitting to extremely best resources inside your niche.
Think long game, and will not go past an acceptable limit wrong.

Responder

An interesting discussion is definitely worth comment.

I believe that you ought to write more about this topic, it might not be a taboo matter but generally people do not
talk about these subjects. To the next! Many thanks!!

Responder