2009-04-21 6 views
25

Odio repetir funciones, particularmente en fórmulas de Excel. ¿Hay alguna manera de que pueda evitar algo como:¿Hay variables como las de una fórmula de Excel?

= IF (BUSCARV (A1, B: B, 1, 0)> 10, BUSCARV (A1, B: B, 1, 0) - 10, BUSCARV (A1, B: B, 1, 0))

[lo anterior es sólo un ejemplo sencillo del problema, y ​​no una fórmula particular que estoy trabajando con.]

Respuesta

30

Puede definir un nombre para la parte VLOOKUP de la fórmula.

  1. Resalte la celda que contiene esta fórmula
  2. En el menú Insertar, vaya nombre, y haga clic en Definir
  3. Introduzca un nombre para la variable (por ejemplo 'Valor')
  4. En el cuadro se refiere a , anotar la fórmula BUSCARV: =VLOOKUP(A1,B:B, 1, 0)
  5. Haga clic en Agregar y cerrar el diálogo
  6. En su fórmula original, reemplazar las partes BUSCARV con el nombre que acaba de definir: =IF(Value > 10, Value - 10, Value)

Paso (1) son importantes: Creo que en la segunda fila, desea que Excel para utilizar VLOOKUP(A2,B:B, 1, 0), la tercera fila VLOOKUP(A3,B:B, 1, 0), etc. Paso (4) logra esto mediante el uso de referencias relativas (A1 y B:B), no referencias absolutas ($A$1 y $B:$B).

+2

Para las versiones de Excel más recientes con la cinta, vaya a Fórmulas cinta -> Definir nombre. Es lo mismo después de eso. Además, para usar su nombre, puede hacer "Usar en fórmula", justo debajo de Definir nombre, mientras edita la fórmula, o bien empiece a escribirlo, y Excel le sugerirá el nombre. –

+5

Tenga en cuenta que cada vez que Excel encuentra un nombre en una fórmula de Excel evalúa el nombre. Por lo tanto, reemplazar sub-expresiones repetidas dentro de una fórmula usando un nombre le da una fórmula más concisa pero no ahorra ningún tiempo de cálculo (de hecho es un poco más lento porque Excel necesita encontrar la fórmula referida para el nombre antes de poder evaluarlo). –

+0

Gracias, esto fue útil. Creo que esto es básicamente lo que Michael estaba diciendo, pero los pasos solo se pueden resumir a: 1. Haga clic con el botón derecho en una celda y haga clic en ** Definir nombre ... ** 2. Ingrese un nombre y la fórmula que desea asociar con ese nombre/variable local 3. Usar la variable –

1

dos opciones:

  • VLOOKUP funcionan en su propia celda: =VLOOKUP(A1, B:B, 1, 0) (en, por ejemplo, C1), y luego hacen referencia a la fórmula C1: =IF(C1 > 10, C1 - 10, C1)
  • crear una UDF:

Function MyFunc(a1, a2, a3, a4) 
    Dim v as Variant 
    v = Application.WorksheetFunction.VLookup(a1, a2, a3, a4) 
    If v > 10 Then 
     MyFunc = v - 10 
    Else 
     MyFunc = v 
    End If 
End Function 
2

Se puede almacenar valores intermedios en una celda o columna (que se podía ocultar si lo desea)

C1: = VLOOKUP(A1, B:B, 1, 0) 
D1: = IF(C1 > 10, C1 - 10, C1) 
+0

¿Cómo diferencia Excel entre una referencia de columna estándar y una variable en su ejemplo? – 1owk3y

0

no hay una manera de definir una variable en la barra de fórmulas de Excel. Como solución, puede colocar la función en otra celda (opcionalmente, ocultando los contenidos o colocándolos en una hoja separada). De lo contrario, podría crear un VBA function.

0

Sí. Pero no directamente

manera más sencilla

  • puede publicar BUSCARV() en una celda y usar su dirección en donde se requiera. - Esta es quizás la única forma directa de usar variables en Excel.

O

  • Se podría definir VLOOKUP (referencia) -10 como una función de contenedor desde dentro VBE Macros. Presione Alt + f12 y use esa función
3

No se relaciona con las variables, su ejemplo también será resuelto por MOD:

=Mod(VLOOKUP(A1, B:B, 1, 0);10) 
+2

No del todo, restar 10 es solo lo mismo que Mod 10 si el valor está entre 10 y 20 ... Pero linda idea. – Floris

0

sé que es un poco fuera de tema, pero siguiendo con la solución presentada por Jonas Bøhmer, en realidad creo que MOD es la mejor solución para tu ejemplo.

Si su intención era limitar el resultado a un dígito, MOD es el mejor enfoque para lograrlo.

es decir. Supongamos que VLOOKUP (A1, B: B, 1, 0) devuelve 23. Su fórmula IF simplemente haría este cálculo: 23 - 10 y devolvería 13 como resultado.

Por otro lado, MOD (BUSCARV (A1, B: B, 1, 0), 10) dividiría 23 por 10 y mostrar el resto: 3.

Volviendo al tema principal, cuando Necesito usar una fórmula que repite una parte, generalmente la pongo en otra celda y luego la escondo como algunas personas ya lo sugirieron.

1

La definición de un NAME que contenga la búsqueda es una buena solución, SIN EMBARGO, siempre parece almacenar el nombre de la hoja con la referencia de la celda. Sin embargo, creo que si elimina el nombre de la hoja en las '' comillas, pero deja el "!", Puede funcionar.

Cuestiones relacionadas