sábado, 27 de agosto de 2016
viernes, 26 de agosto de 2016
Macros para buscar palabras en un texto
jueves, 25 de agosto de 2016
Macros para contar celdas en blanco o con datos
miércoles, 24 de agosto de 2016
Macros para contar y sumar condicionalmente usando funciones de Excel
Contenidos
- 1 Función Countif
- 2 Función CountIfs
- 3 Función SumIf
- 4 Función SumIfs
Para los siguientes ejemplos, se han considerado nombrar los siguientes rangos en la tabla anterior:
- Región: A2:A10
- Estado. B2:B10
- Ventas: C2:C10
Función Countif
- Una condición
- CountIf(rango, criterio)
- Los criterios se pueden expresar como 100, "100", ">100", "Norte", A1
- Los criterios para buscar textos pueden utilizar comodines como el * (asterisco) y ? (signo de interrogación)
Contar el número de renglones de la columna "Región" = "Norte"
Sub Contar1()
MsgBox Application.WorksheetFunction.CountIf(Range("Región"), "Norte")
End Sub
Contar el número de renglones de la columna "Estado" que empiecen con la letra "C"
Sub Contar2()
MsgBox Application.WorksheetFunction.CountIf(Range("Estado"), "C*")
End Sub
Contar el número de renglones de la columna "Ventas " >= 200
Sub Contar3()
MsgBox Application.WorksheetFunction.CountIf(Range("Ventas"), ">=200")
End Sub
Función CountIfs
- Varias condiciones
- CountIfs(rango_1, criterio_1, rango_2, criterio_2)
- Se aceptan hasta 127 pares de rangos y criterios
- Los criterios se pueden expresar como 100, "100", ">100", "Norte", A1
- Los criterios para buscar textos pueden utilizar comodines como el * (asterisco) y ? (signo de interrogación)
Contar el número renglones que en la columna "Región" = "Norte" y en columna "Ventas" >= 200
Sub Contar4()
MsgBox Application.WorksheetFunction.CountIfs(Range("Región"), "Norte", Range("Ventas"), ">=200")
End Sub
Función SumIf
- Una condición
- SumIf(rango, criterio)
- Los criterios se pueden expresar como 100, "100", ">100", "Norte", A1
- Los criterios para buscar textos pueden utilizar comodines como el * (asterisco) y ? (signo de interrogación)
Sumar los renglones de la columna "Ventas" >=200
Sub Sumar1()
MsgBox Application.WorksheetFunction.SumIf(Range("Ventas"), ">=200")
End Sub
- Varias condiciones
- (rango_de_trabajo, rango_1, criterio_1, rango_2, criterio_2)
- Los criterios se pueden expresar como 100, "100", ">100", "Norte", A1
- Los criterios para buscar textos pueden utilizar comodines como el * (asterisco) y ? (signo de interrogación)
Sumar los renglones de la columna "Ventas", donde la columna "Región" = "Norte" y la columna "Estado" comience con "C*"
Sub Sumar2()
MsgBox Application.WorksheetFunction.SumIfs(Range("Ventas"), Range("Región"), "Norte", Range("Estado"), "C*")
End Sub
Sumar la columna "Ventas", donde las "Ventas" sean >= 200 y <= 250
Sub Sumar3()
MsgBox Application.WorksheetFunction.SumIfs(Range("Ventas"), Range("Ventas"), ">=200", Range("Ventas"), "<=250")
End Sub
MsgBox Application.WorksheetFunction.SumIfs(Range("Ventas"), Range("Ventas"), ">=200", Range("Ventas"), "<=250")
End Sub
Macros para contar objetos de una colección
Contenidos
1 Contar el número de filas en una selección dada
2 Contar el número de columnas de una selección dada
3 Total de filas en el rango utilizado en la hoja activa
4 Total de columnas en el rango utilizado en la hoja activa
5 Primera Fila en el rango utilizado en la hoja activa
6 Total de hojas en el libro de trabajo activo
7 Número de libros abiertos
Contar el número de filas en una selección dada
Sub ContarFilas()
' Contar el número de filas de una selección dada
Dim Filas As Double
Filas = Selection.Rows.Count
MsgBox Filas
End Sub
Contar el número de columnas de una selección dada
Sub ContarColumnas()
' Contar el número de columnas de una selección dada
Dim Columnas As Double
Columnas = Selection.Columns.Count
MsgBox Columnas
End Sub
Total de filas en el rango utilizado en la hoja activa
Sub TotalFilas()
'Total de filas en el rango utilizado en la hoja activa
Dim Filas As Double
MsgBox ActiveSheet.UsedRange.Rows.Count
End Sub
Total de columnas en el rango utilizado en la hoja activa
Sub TotalColumnas()
'Total de columnas en el rango utilizado en la hoja activa
MsgBox ActiveSheet.UsedRange.Columns.Count
End Sub
Primera Fila en el rango utilizado en la hoja activa
Sub PrimeraFila()
'Primera fila en el rango utilizado en la hoja activa
MsgBox ActiveSheet.UsedRange.Row
End Sub
Total de hojas en el libro de trabajo activo
Sub TotalHojas()
'Total de hojas en el libro de trabajo
MsgBox ActiveWorkbook.Sheets.Count
End Sub
Número de libros abiertos
Sub LibrosAbiertos()
MsgBox Workbooks.Count
End Sub
1 Contar el número de filas en una selección dada
2 Contar el número de columnas de una selección dada
3 Total de filas en el rango utilizado en la hoja activa
4 Total de columnas en el rango utilizado en la hoja activa
5 Primera Fila en el rango utilizado en la hoja activa
6 Total de hojas en el libro de trabajo activo
7 Número de libros abiertos
Contar el número de filas en una selección dada
Sub ContarFilas()
' Contar el número de filas de una selección dada
Dim Filas As Double
Filas = Selection.Rows.Count
MsgBox Filas
End Sub
Contar el número de columnas de una selección dada
Sub ContarColumnas()
' Contar el número de columnas de una selección dada
Dim Columnas As Double
Columnas = Selection.Columns.Count
MsgBox Columnas
End Sub
Total de filas en el rango utilizado en la hoja activa
Sub TotalFilas()
'Total de filas en el rango utilizado en la hoja activa
Dim Filas As Double
MsgBox ActiveSheet.UsedRange.Rows.Count
End Sub
Total de columnas en el rango utilizado en la hoja activa
Sub TotalColumnas()
'Total de columnas en el rango utilizado en la hoja activa
MsgBox ActiveSheet.UsedRange.Columns.Count
End Sub
Primera Fila en el rango utilizado en la hoja activa
Sub PrimeraFila()
'Primera fila en el rango utilizado en la hoja activa
MsgBox ActiveSheet.UsedRange.Row
End Sub
Total de hojas en el libro de trabajo activo
Sub TotalHojas()
'Total de hojas en el libro de trabajo
MsgBox ActiveWorkbook.Sheets.Count
End Sub
Número de libros abiertos
Sub LibrosAbiertos()
MsgBox Workbooks.Count
End Sub
lunes, 22 de agosto de 2016
Trucos de Excel Avanzado
Para revisar mas trucos de macros puede examinar la lista disponible en
http://www.excel-avanzado.com/trucos-de-excel-avanzado
Macros de la clase AQUI
sábado, 20 de agosto de 2016
Macro para enviar emails desde Excel
Figura 1. Enviar correo a lista de clientes.
Para esta macro tendremos un texto prefenido que se enviará a cada cliente y el cuerpo del mail cambiará los datos con relación a cada cliente. Los datos que cambiarán son los relativos a las columnas de la tabla.
Esta macro no usará un formulario de Outlook para hacer los envíos, sino que desde el mismo código le definiremos los parámetros del email que se enviarán.
Los parámetros que se usarán son:
- Asunto (del correo).
- Correo (el emai del cliente).
- Destinatario (el nombre del cliente).
- Saldo.
- Fecha de vencimiento.
El texto que se enviará lo definimos dentro del código vba y va concatenado con los valores de cada cliente en la tabla. El texto que se enviará es el siguiente:
Apreciable [nombre]Queremos informarle que su fecha de pago venció el día [fecha].El saldo que debe liquidar es [saldo].Atentamente:
Tarjetas de crédito.
Código vba
Para que el código funcione, dentro del IDE de vba deberemos marcar la referencia de Outlook Object Library. Para marcarla elegimos el menú Herramientas > Referencias.
Sub EnviarEmail() ' ' Declaramos variables ' Dim OutlookApp As Outlook.Application Dim MItem As Outlook.MailItem Dim cell As Range Dim Asunto As String Dim Correo As String Dim Destinatario As String Dim Saldo As String Dim Msg As String ' Set OutlookApp = New Outlook.Application ' 'Recorremos la columna EMAIL ' For Each cell In Range("B11:B23") ' 'Asignamos valor a las variables ' Asunto = "Saldo vencido" Destinatario = cell.Offset(0, -1).Value Correo = cell.Value Saldo = Format(cell.Offset(0, 1).Value, "$#,##0") FechaVencimiento = Format(cell.Offset(0, 2).Value, "dd/mmm/yyyy") ' 'Cuerpo del mensaje ' Msg = "Apreciable " & Destinatario & vbNewLine & vbNewLine Msg = Msg & "Queremos informarle que su fecha de pago venció el día " Msg = Msg & FechaVencimiento & "." & vbNewLine & vbNewLine Msg = Msg & "El saldo que debe liquidar es " Msg = Msg & Saldo & vbNewLine & vbNewLine Msg = Msg & "Atentamente:" & vbNewLine Msg = Msg & "Tarjetas de crédito." ' Set MItem = OutlookApp.CreateItem(olMailItem) With MItem .To = Correo .Subject = Asunto .Body = Msg .Send ' End With ' Next ' End Sub
Suscribirse a:
Entradas (Atom)








