Mediante VBA puedes crear tus propias funciones para realizar cálculos complejos (Si no estás familiarizado con VBA puedes leer este articulo antes de continuar) En esta ocasión te mostraremos como hacer una función que calcule el impuesto de venta sobre cualquier celda a la que se aplique.
Lo primero que tienes que hacer es entrar al editor de VBA (Alt+F11), luego en nuestro libro hacemos clic derecho sobre Microsoft Excel Objetos, luego seleccionamos Insertar y hacemos clic sobre Modulo, esto nos creara una sección en la que podemos agregar funciones y macros.
Ahora hacemos doble clic sobre la nueva sección Módulo1 y agregamos este código:
Function CalculaImpuesto(Valor As Double) As Double
Dim calculo As Double
calculo = Valor * 0.13
CalculaImpuesto = calculo
End Function
Ahora ya tenemos la función disponible para nuestra hoja de cálculo.
Como utilizar la función en nuestra hoja de cálculo.
La función que hemos creado está ahora disponible como todas las demás funciones de Excel, para usarla ingresamos esto en cualquier celda
=CalculaImpuesto(A3)
Donde A3 puede ser cualquier valor numérico o celda que contenga algún número.
Explicación de la función.
Function CalculaImpuesto(Valor As Double) As Double
Dim calculo As Double
calculo = Valor * 0.13
CalculaImpuesto = calculo
End Function
Todas las funciones que creemos se deben colocar entre las secciones “Function …. End Function“, para este caso CalculaImpuesto, es el nombre de nuestra función y será el nombre que ocupemos para llamarla en nuestra hoja de cálculo.
La sección “(Valor As Double)” indica que la función recibe un parámetro (o valor) de tipo Double y con nombre Valor (Double es un tipo de datos numérico e indica que contendrá un número posiblemente con decimales), la parte As Double, indica que el resultado de la fórmula también será de tipo Double.
Dim calculo As Double, declara una variable llamada calculo y que será de tipo double, la línea calculo = Valor * 0.13, realiza el calculo de la fórmula multiplicando por 0.13 el valor que se recibe como parámetro y lo almacena en la variable Calculo.
Finalmente en la línea CalculaImpuesto = calculo, indica que la función regresa el valor almacenado en la variable calculo (esto es el resultado Valor * 0.13).
Para regresar un valor en la fórmula siempre debemos hacerlo de esta forma:
NombreFuncion = Valor_a_devolver
Nota: Cuando guardes el archivo deberás hacerlo habilitado para macros con extensión .xlsm si tienes Excel en versiones 2007 o superiores.
[Actualización]: Si además deseas agregar las descripciones a tus funciones, te lo explicamos fácil en este otro articulo.
hola, es posible crear una macro para buscar datos? como debería hacerlo? lo que suelo utilizar es la funcion si anidada con indice o buscav pero resulta que la funcion si me tolera 64 anidadas y tengo muchos datos mas que 64. He leido que haciendo una macro es posible, la pregunta es: como poder hacerlo?
saludos y muchas gracias
End SubSub Ocultar01()
‘
Application.ScreenUpdating = Falso
Range(“G21”).Select
For Each celda In Range(“G21:G600”)
If celda.Value = 1 Then
ActiveCell.EntireRow.Hidden = Falso
Else
ActiveCell.EntireRow.Hidden = True
End If
ActiveCell.Offset(1).Select
Next
‘ActiveSheet.Protect “mazua”
Range(“a1”).Select
End Sub
Necesito que en esta macro al llegar al valor de la celda
se pare y me deje poner otro valor distinto al 1 y siga ejecutándose la macro. Con eso me evitaría tener que hacer 85 botones.
Quiero crear una funcion que utiliza if-else if pero no he tenido éxito en implemetarlo, por favor agradecería mucho su ayuda, la función es como sigue:
function pat = ava(r,m)
if r >= m
pat = 1;
elseif r0
pat = r/m;
elseif r<m&m<0
pat = m/r;
elseif
pat = 0;
end
end
Corrijo la función es como esta:
function pat = ava(r,m)
if r >= m
pat = 1;
elseif r0
pat = r/m;
elseif (r<m&m<0)
pat = m/r;
else
pat = 0;
end
end
Muchas gracias. Me sirvió de mucho, sumamente explícito y entendible; sigue así amigo 🙂
Hola, me alegra que haya servido
Buena tarde
Agradeceria a la persona me pueda suministrar el codigo Visual Basic Excel 2013 para poder bloquear un archivo despues de una fecha determinada o un uso determinado.
Lo tengo en 2010 pero en 2013 me refleja error.
Muchas gracias.