Supongo que no sabrás donde poner la función para que te salga en el excel.
Yo uso el excel 2007, en esta y supongo que en las posteriores tambien
Hay un botón a la izquierda arriba del todo, es como el menú archivo,
donde creas un nuevo libro, abres un libro, etc
Dentro del menú abajo pone Opciones de Excel, lo señalas.
Vas a Personalizar, te salen los botones de la barra de herramientas que hay.
En el 1er combo te pondrá Comandos más utilizados, señalas la flecha que hay
y verás un listado, justo por en medio verás que pone Ficha Programador
Te han cambiado los botones que tenías antes y te ha puesto los botones que más usarias
para programar macros, señala el de visual Basic y dale al botón Agregar.
Ya tienes el botón visual Basic en la barra de herramientas, haces click
Seguramente tendrás el EuroTool (EUROTOOL.XLAM) o puede que no
Tu libro se muestra como VBAProject( Nombre de tu libro excel)
Tendra las diferentes hojas y una parte que pondra ThisWorkbook,
es para hacer macros con el libro de excel, como que en vez de que te salgan las hojas
estén protegidas y te salga un formulario y que la gente no vea los datos.
Señalas la parte de VBAProject ( nombre de tu libro excel), le das al botón derecho
señalas insertar y Módulo, te saldrá como una hoja en blanco.
En esa hoja en blanco has de pegar el código que hay más abajo, para que te salgan
las funciones que hayas hecho tu.
Entonces te pones en la celda donde quieres el número de Octas, pones =Oct
y te saldrán las 2 funciones.
Si haces click en el botón de fx, en la barra de funciones,
las funciones están abajo del todo donde pone Definidas por el usuario.
Si tienes dudas me envías un toque
---------------------------------------------------------------------------
Public Function Octas(x As Double, y As Double, az As Double, bz As Double, cz As Double) As Integer
' No se hasta que punto eres completamente novato
' lo que escribes después del apóstrofe indica que es un un comentario y no afecta a la función
' La x,y,az,bz y cz son variables
' el As Double que hay después de ellas indica que es un numero que usa decimales
' el Integer sería un numero entero sin decimales
Dim valorX As Integer '<--- Esto es una variable
If (x <= 1) Then valorX = 1
If ((x > 1) And (x <= (1 + az))) Then valorX = 2
If ((x > (1 + az)) And (x <= (1 + bz))) Then valorX = 3
If (x > (1 + cz)) Then valorX = 4
'Esto sirve para que según el valor de la variable valorX
'haga tal cosa u otra
Select Case (valorX)
Case (1):
If (y <= 0.5) Then Octas = 0
' Esto se leeria, estamos en el 1, que significa que x<=1, por los ifs de arriba
' entonces si (x<=1) y si (y<=0.5) entonces Octas=0
' Octas es el nombre de la funcion, como es una funcion has de devolver un algo
' al final de Public Function Octas, ves que pone Double) as Integer
' eso significa que la funcion devuelve un numero entero, un numero del (-32767 al 32767)
If ((y > 0.5) And (y <= 2)) Then Octas = 1
If (y > 2) Then Octas = 2
Case (2):
If (y <= 1) Then Octas = 1
If ((y > 1) And (y <= 2)) Then Octas = 2
If (y > 2) Then Octas = 3
Case (3):
If (y <= 1) Then Octas = 2
'-------------------PROBLEMA-----------------
' Si y es 3 pondra octas 4 porque 3 es mayor que 1
If (y > 1) Then Octas = 4
' Despues viene aqui y pone octas 5 porque 3 es menor de 4
If (y <= 4) Then Octas = 5
'--------------------------------------------
If (y > 4) Then Octas = 6
Case (4):
If (y <= 2) Then Octas = 8
If ((y > 2) And (y <= 8)) Then Octas = 7
If (y > 8) Then Octas = 6
End Select
End Function
' Otra forma de hacer todo esto sería, la forma más fácil
Public Function Octas2(x As Double, y As Double, az As Double, bz As Double, cz As Double) As Integer
' Esto es más corto si tienes pocos datos, usa la forma que quieras
If ((x <= 1) And (y <= 0.5)) Then Octas = 0
' Se leeria Si x es menor o igual a 1 e y es menor o igual a 0.5 entonces Octas es 0
If ((x <= 1) And (y > 0.5) And (y <= 2)) Then Octas = 1
If ((x <= 1) And (y > 2)) Then Octas = 2
If ((x > 1) And (x <= (1 + az)) And (y <= 1)) Then Octas = 1
If ((x > 1) And (x <= (1 + az)) And (y > 1) And (y <= 2)) Then Octas = 2
If ((x > 1) And (x <= (1 + az)) And (y > 2)) Then Octas = 3
If ((x > (1 + az)) And (x <= (1 + bz)) And (y <= 1)) Then Octas = 2
'----------------------HAY PROBLEMA AQUI CUANDO Y=3---------------
If ((x > (1 + az)) And (x <= (1 + bz)) And (y > 1)) Then Octas = 4
If ((x > (1 + az)) And (x <= (1 + bz)) And (y <= 4)) Then Octas = 5
'--------------------------------------------------------------
If ((x > (1 + az)) And (x <= (1 + bz)) And (y > 4)) Then Octas = 6
If ((x > (1 + cz)) And (y <= 2)) Then Octas = 8
If ((x > (1 + cz)) And (y > 2) And (y <= 8)) Then Octas = 7
If ((x > (1 + cz)) And (y > 8)) Then Octas = 6
End Function