2012-04-12 14 views
11

Estoy tratando de que Excel me haga una matriz haciendo OR en dos matrices. A modo de ejemplo, dejar que dos matrices A1: A3 sea 7, 8, -3 y B1: B3 ser 4, -8, -8Cómo aplicar un O lógico a una matriz en Excel

Esto debería ser bastante simple, pero parece que

OR (A1:A3 > 0 ; B1:B3 > 0) 

retornos TRUE en lugar de la matriz que estoy esperando (TRUE, TRUE, FALSE).

Por supuesto que podría utilizar un truco sucio como

(((A1:A3 > 0)*1 + (B1:B3 > 0)*1) >= 1) *1 

pero que quisiera mantener esa?

Además, probablemente hay algo para buscar alrededor de "CSE (Ctrl-Shift-Enter) Formulas" (http://www.mrexcel.com/articles/CSE-array-formulas-excel.php) pero realmente parece magia negra

¿Echo de menos algo fácil?

Para los curiosos, la fórmula real que intento crear es un poco más compleja, por supuesto. Está intentando contar (a través de SUMAPRODUCTO) todas las filas donde "(estado == A OR estado == B) Y Fecha = alguna celda". El OR que estoy buscando es solo una matriz de mi sumproducto y no está definido en las celdas (eso sería demasiado fácil)

Respuesta

13

Normalmente, no se puede usar OR o AND en "fórmulas de matriz" porque, como se descubiertos aquí, devuelven un solo resultado (Y es VERDADERO solo si todas las condiciones son VERDADERAS, O es VERDADERO es que alguno es VERDADERO, como era de esperar, por lo que en su ejemplo obtendrá VERDADERO mientras que al menos uno de los 6 valores es positivo).

que haría uso de algo similar a su sugerencia, usando + en lugar de o con eficacia, a pesar de que no es necesario los dos primeros * 1 + porque los compañeros de erces, por lo que este iba a ser suficiente

=((A1:A3 > 0) + (B1:B3 > 0) >0) *1

aunque si tiene una sola columna que puede ser una cosa u otra, entonces eso es mutuamente excluyentes, sin duda, así que quizás sólo necesita

=(A1:A3="A")+(A1:A3="B")

+0

+1 bien cubierto Barry – brettdj

+0

Gracias por la explicación. Sin embargo, aún espero una fórmula "limpia". – PPC

+0

Probablemente dependa de su definición de "limpiador" ... pero sospecho que no hay una manera más elegante ... quizás el uso de las funciones IF sea más transparente, p. Ej. '= IF (A1: A3> 0,1, IF (B1: B3> 0,1,0), 0)' ...... pero tendrías que "array enter" que, incluso dentro de SUMPRODUCT –

3

un limpio y relativel manera fácil y todo esto es utilizar if anidadas:

IF(A1:A3 > 0, TRUE, IF(B1:B3 > 0, TRUE, FALSE)) 

Esto devuelve VERDADERO si el número de A es mayor que 0, entonces, si no, devuelve TRUE si el número de B es mayor que 0, pero de lo contrario, devuelve FALSE.

Básicamente, usted está escribiendo su propia función OR. Usted podría hacer lo mismo con AND. Mientras tengas condicionales y no, puedes hacer todo lo demás con ellos.

2

Hice una fórmula de matriz para la mediana de ciertos datos dentro de una tabla. Por ejemplo, dentro de los datos había grupos X, Y y Z. Quería obtener la mediana para dos tipos de datos, X e Y, por lo que no podría usar la instrucción O dentro de la matriz.

Lo que hice fue crear una nueva columna en el conjunto de datos original.Fue IF columna A = X o A = Y, pantalla "1", IF No mostrar "0"

Luego escribí la fórmula de matriz basada en la nueva columna, ya que todos los grupos de datos se reclasificaron en esta columna como 1 o 0, ya no necesitaba la declaración OR dentro de la matriz.

Eso funcionó para mí, y puedo copiar y pegar fácilmente nuevos datos en la tabla original sin arruinar esta nueva instrucción IF, por lo que es fácil de actualizar.

Cuestiones relacionadas