worksheets worksheetfunction functions excel worksheet-function

excel - functions - worksheetfunction countif



Caso FunciĆ³n Equivalente en Excel (8)

Tengo un desafío interesante: necesito verificar los siguientes datos en Excel:

| A - B - C - D | |------|------|------|------| | 36 | 0 | 0 | x | | 0 | 600 | 700 | x | |___________________________|

Tendrás que excusar mi arte ASCII maravillosamente malo. Entonces necesito la columna D (x) para ejecutar una verificación contra las celdas adyacentes, luego convierta los valores si es necesario. Aquí está el criterio:

Si la columna B es mayor que 0, todo funciona bien y puedo tomar café. Si no cumple con ese requisito, entonces necesito convertir A1 según una tabla; por ejemplo, 32 = 1420 y colocarlo en D Lamentablemente, no existe una relación entre A y lo que necesita para convertirse, por lo que la creación de un cálculo está fuera de cuestión.

Una sentencia case o switch sería perfecta en este escenario, pero no creo que sea una función nativa en Excel. También creo que sería una locura encadenar un montón de declaraciones =IF() juntas, lo que hice unas cuatro veces antes de decidir que era una mala idea (historia de mi vida).


¡Suena como un trabajo para VLOOKUP !

Puede colocar sus 32 -> 1420 asignaciones de tipo en un par de columnas en alguna parte, luego use la función VLOOKUP para realizar la búsqueda.


Entiendo que esta es una respuesta a una publicación anterior

Me gusta la función If () combinada con Index () / Match ():

=IF(B2>0,"x",INDEX($H$2:$I$9,MATCH(A2,$H$2:$H$9,0),2))

La función if compara lo que está en la columna b y si es mayor que 0, devuelve x, si no usa la matriz (tabla de información) identificada por la función Index () y seleccionada por Match () para devolver el valor que a corresponde a.

La matriz de índice tiene la ubicación absoluta establecida $H$2:$I$9 (los signos de dólar) para que el lugar al que apunta no cambie a medida que se copia la fórmula. La fila con el valor que desea devolver se identifica mediante la función Match (). Match () tiene el valor agregado de no necesitar una lista ordenada para examinar que Vlookup () requiere. Match () puede encontrar el valor con un valor: 1 menos que, 0 exacto, -1 mayor que. Puse un cero después de la matriz absoluta Match () $H$2:$H$9 para encontrar la coincidencia exacta. Para la columna, se ingresa el valor de la matriz Index () que desea devolver. Ingresé un 2 porque en mi matriz el valor de retorno estaba en la segunda columna. Debajo mi matriz de índice se veía así:

32 1420 36 1650 40 1790 44 1860 55 2010

El valor en su columna ''a'' para buscar en la lista está en la primera columna en mi ejemplo y el valor correspondiente que se debe devolver está a la derecha. La tabla de consulta / referencia puede estar en cualquier pestaña del libro de trabajo, o incluso en otro archivo. -Book2 es el nombre del archivo y Sheet2 es el nombre de "otra pestaña".

=IF(B2>0,"x",INDEX([Book2]Sheet2!$A$1:$B$8,MATCH(A2,[Book2]Sheet2!$A$1:$A$8,0),2))

Si no quiere que x regrese cuando el valor de b es mayor que cero, elimine la x para un equivalente ''en blanco'' / nulo o tal vez ponga un 0 - no estoy seguro de qué es lo que quiere.

A continuación se inicia la función con la x eliminada.

=IF(B2>0,"",INDEX...


Incluso si es viejo, esta parece ser una pregunta popular, así que publicaré otra solución, que creo que es muy elegante:

http://fiveminutelessons.com/learn-microsoft-excel/using-multiple-if-statements-excel

Es elegante porque usa solo la función IF. Básicamente, se reduce a esto:

if ( condición , elige / usa un valor de la tabla , if ( condición , elige / usa otro valor de la tabla ...)

Y así

Funciona maravillosamente, incluso mejor que HLOOKUP o VLOOOKUP

pero ... Tenga cuidado: hay un límite en la cantidad de declaraciones anidadas que excel puede manejar.


La función Cambiar ahora está disponible, en Excel 2016 / Office 365

SWITCH (expresión, valor1, resultado1, [predeterminado o valor2, resultado2], ... [predeterminado o valor3, resultado3])

example: =SWITCH(A1,0,"FALSE",-1,"TRUE","Maybe")

Microsoft -Office Support


Prueba esto;

=IF(B1>=0, B1, OFFSET($X$1, MATCH(B1, $X:$X, Z) - 1, Y)

DÓNDE
X = Las columnas en las que está indexando
Y = El número de columnas a la izquierda (-Y) o a la derecha (Y) de la columna indexada para obtener el valor que está buscando
Z = 0 si coincide exactamente (si desea manejar errores)


Sé que es un poco tarde para responder, pero creo que este breve video te ayudará mucho.

http://www.xlninja.com/2012/07/25/excel-choose-function-explained/

Esencialmente está usando la función de elegir. Lo explica muy bien en el video, así que lo dejaré en lugar de escribir 20 páginas.

Otro video suyo explica cómo usar la validación de datos para completar un menú desplegable que puede seleccionar desde un rango limitado.

http://www.xlninja.com/2012/08/13/excel-data-validation-using-dependent-lists/

Puede combinar los dos y usar el valor en el menú desplegable como su índice para elegir la función. Si bien no mostró cómo combinarlos, estoy seguro de que podrías averiguarlo ya que sus videos son buenos. Si tiene problemas, hágamelo saber y actualizaré mi respuesta para mostrarle.


Sin hacer referencia al problema original (que sospecho que hace mucho que resolvió), descubrí hace poco un truco ingenioso que hace que la función Elegir funcione exactamente igual que una declaración de select case sin necesidad de modificar los datos. Solo hay una trampa: solo una de las condiciones de tu elección puede ser verdadera en cualquier momento.

La sintaxis es la siguiente:

CHOOSE( (1 * (CONDITION_1)) + (2 * (CONDITION_2)) + ... + (N * (CONDITION_N)), RESULT_1, RESULT_2, ... , RESULT_N )

En el supuesto de que solo una de las condiciones 1 a N será verdadera, todo lo demás es 0, lo que significa que el valor numérico corresponderá al resultado apropiado.

Si no estás 100% seguro de que todas las condiciones son mutuamente excluyentes, podrías preferir algo como:

CHOOSE( (1 * TEST1) + (2 * TEST2) + (4 * TEST3) + (8 * TEST4) ... (2^N * TESTN) OUT1, OUT2, , OUT3, , , , OUT4 , , <LOTS OF COMMAS> , OUT5 )

Dicho esto, si Excel tiene un límite superior en la cantidad de argumentos que una función puede tomar, la golpearás rápidamente.

Honestamente, no puedo creer que me haya tomado años resolverlo, pero no lo había visto antes, así que pensé que lo dejaría aquí para ayudar a otros.

EDITAR: Por comentario más abajo de @aTrusty: Se pueden eliminar números tontos de comas (y como resultado, la declaración de elegir funcionaría para hasta 254 casos) usando una fórmula de la siguiente forma:

CHOOSE( 1 + LOG(1 + (2*TEST1) + (4*TEST2) + (8*TEST3) + (16*TEST4),2), OTHERWISE, RESULT1, RESULT2, RESULT3, RESULT4 )

Tenga en cuenta el segundo argumento para la cláusula LOG , que lo coloca en la base 2 y hace que todo funcione.

Editar: Según la respuesta de David , ahora existe una declaración de cambio real si tienes la suerte de estar trabajando en la oficina 2016. Además de la dificultad para leer, esto también significa que obtienes la eficiencia del cambio, ¡no solo el comportamiento!


Utilicé esta solución para convertir códigos de color de una sola letra en sus descripciones:

=CHOOSE(FIND(H5,"GYR"),"Good","OK","Bad")

Básicamente busca el elemento que intenta decodificar en la matriz, luego usa CHOOSE() para elegir el elemento asociado. Es un poco más compacto que construir una tabla para VLOOKUP() .