La Función Abs obtiene el valor absoluto de un número.
Para utilizarla en Excel se va a la barra de fórmulas matemáticas y se elige la opción ABS, solo se debe especificar el número o la celda que se quiere hallar. Ahora en VBA se puede generar una macro de modo que se ejecute directamente.
Ejemplo 1: Valor Absoluto de un número
Sub Abs_Número()
Range("B1") = Abs(Range("A1"))
End Sub
Ejemplo 2: Valor Absoluto para un rango de valores
Sub Abs_Rango()
Range("B1") = "=+ABS(RC[-1])"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B3")
Range("B1:B3").Select
End Sub
Ejemplo 3: Valor Absoluto con condicionales
Primero se tiene una lista de valores, a los cuales se saca el valor absoluto, de aquí se obtiene el total (suma de valores absolutos) y se puede agregar un condicional, siempre que sea mayor (o menor) a un valor especifico (en el ejemplo 16), nos saldrá como un Exceso (o Déficit), de acuerdo a lo que se especifique en la macros.
Sub Abs_Condicional()
Range("B1") = "=+ABS(RC[-1])"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B3")
Range("B1:B3").Select
Range("B4") = "=SUM(R[-3]C:R[-1]C)"
If Range("B4") > 16 Then Range("B4").Value = "Exceso"
End Sub
20/03/2013 a las 9:34 am
El ejmplo 2 me ha aportado un nuevo conocimiento, el autocompletar un rango mediante AutoFill mediante la sentencia
Selection.AutoFill Destination:=Range(“B1:B3″)
Le veo bastante aplicación sobre todo para el completado de tablas que normalemnte se usan en Excel a modo de base de datos; sin embargo, el problema es que siendo una base de datos la cantidad de registros es variable y se requiere de una forma de saber cuál es la última fila de la hoja.
Yo normalmente lo hago recorriendo la tabla de la siguiente manera:
Sub otraforma()
Range("A1").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(0, 1).Value = "=+ABS(RC[-1])"
ActiveCell.Offset(1, 0).Activate
Loop
Range("B4") = "=SUM(R[-3]C:R[-1]C)"
If Range("B4") > 16 Then Range("B4").Value = "Exceso"
End Sub
pero esto tiene el problema del tiempo o uso de memoria si la tabla es muy grande. Estimo que esto debe poder solucionarse con una función que identifique la última fila de la tabla.
Agradeceré su apoyo.
Saludos,
Wilbert Ríos
24/03/2013 a las 11:41 pm
Buenas, en mi caso tengo la misma duda de como hacer que repita el proceso hasta un determinado o celda, pero como creo que esto se lograría con la funcion FOR y DO y con un condional If si la celda tiene un valor seguir si no acabar ahi.
19/05/2013 a las 10:28 pm
Bueno te comento Alan lo que yo generalmente hago:
1. Determino la última celda con una variable, de dos maneras:
1)
y = 13 (última fila conocida)
y = Worksheets("Hoja1").Range("A" & Worksheets("Hoja1").Rows.Count).End(xlUp).Row (última fila desconocida)
2. Se digita el FOR
For i = 1 to y
"aquí va el código que ejecuta la actividad"
next i
19/05/2013 a las 10:58 pm
Bueno te comento Alan lo que yo generalmente hago:
1. Determino la última celda con una variable, de dos maneras:
a)
y = 13 (última fila conocida)
b)
y = Worksheets("Hoja1").Range("A" & Worksheets("Hoja1").Rows.Count).End(xlUp).Row (última fila desconocida)
2. Se digita el FOR
For i = 1 to y
"aquí va el código que ejecuta la actividad"
next i
19/05/2013 a las 10:57 pm
Bueno te comento Alan lo que yo generalmente hago:
1. Determino la última celda con una variable, de dos maneras:
a)
y = 13 (última fila conocida)
b)
y = Worksheets("Hoja1").Range("A" & Worksheets("Hoja1").Rows.Count).End(xlUp).Row (última fila desconocida)
2. Se digita el FOR
For i = 1 to y
"aquí va el código que ejecuta la actividad"
next i
25/05/2013 a las 10:15 pm
Como seria el codigo para una sumatoria de una columna de valores absolutos. Entiendase que cada valor absoluto es resultado de una diferencia.
25/03/2015 a las 3:01 pm
tengo una Excel de datos donde las columnas a,b,c y d tienen fórmulas y de la columna e a la ah son datos que voy añadiendo, me gustaría saber si me pueden mandar el texto de una macro en la que conforme se añadan filas de datos las celdas de las columnas a,b,c y d se autocopien las fórmulas de la fila anterior.
gracias
05/02/2019 a las 10:14 am
De hecho con esta instrucción
Selection.AutoFill Destination:=Range(“B1:B3″)
del ejercicio 2 se puede, no lo sabia, pero ahora ya lo se.
saludos