2009-02-05 15 views
6

Tengo dos columnas en Excel, así:¿Puedo usar COUNTIF en dos columnas para comparar valores?

A B 
0.5 0.4 
0.6 0.59 
0.1 0.2 
0.3 0.29 

quiero contar cuántos de los valores de B son inferiores a sus valores correspondientes en A. En este caso, la respuesta es 3.

Puedo hacer esto agregando una columna adicional, B-A y luego haciendo COUNTIF(RANGE, "<0"), pero me pregunto si hay una manera de hacerlo sin agregar una columna adicional.

Me doy cuenta de que esto está al margen de lo que uno podría considerar programar, pero con suerte está justo en el lado derecho de la línea, en lugar de estar en el lado equivocado.

Respuesta

17

Esto se puede hacer utilizando fórmulas de matriz de Excel.Trate de hacer algo como esto:

=SUM(IF(A1:A5 > B1:B5, 1, 0)) 

El muy muy importante parte, es presionar CTRL-SHIFT-ENTER en lugar de sólo ENTER cuando se acabe de introducir la fórmula. De lo contrario, no entenderá que desea tratar los datos como una matriz.

+0

Muy limpio. ¡Gracias! – Ben

1

Existe una solución, pero todavía implica 2 celdas adicionales: DCOUNT.

El siguiente es un ejemplo (insertar en las celdas especificadas el texto exacto después de los dos puntos):

A1: Condición

A2: = B4> A4

A3: A

B3: B

A4: 700

B4: 5000

A5: 700

B5: 600

A6: 7000

B6: 6000

A7: 700

B7: 701

celular con fórmula recuento : = DCOUNT (A3: B7, "B", A1: A2)

+0

Perfecto - eso hizo el trabajo. ¡Gracias! Nunca me hubiera encontrado DCOUNT antes. – Ben

+0

Lo siento: había aceptado su respuesta, pero en realidad la respuesta de Scraimer es un poco mejor para mí. – Ben

+0

Acepto, ¡las fórmulas de matriz son una buena idea para saber! (Hasta ahora no sabía nada de ellas). –

1

En realidad esto es algo I haría hacer con un programa.

crear una macro para:.

  • columna inserto C.
  • gama conjunto ("NC") valor a "= BN-aN" para todo n valor donde el rango ("un"). <> "".
  • haga su cálculo de conteo e introdúzcalo en una celda (no columna C).
  • columna de borrado C.

Puede haber una manera no la programación más fácil pero no lo saben (y luego su pregunta sería cerrada de todos modos).

0

scraimer solution is ok. Pero para una diversión,

También puede escribir una macro como el siguiente y asignar

=myOwnFunction(A1:A5,B1:B5) 

este enfoque se puede extender a cualquier otra función lógica como A * B + C < C + D * E etc ....

Function myOwnFunction(R1 As Range, S1 As Range) 

    Dim J As Integer 

    Dim Size As Integer 

    Dim myCount As Integer 


    Size = R1.Cells.Count 

    myCount = 0 

     For J = 1 To Size 

      If (R1.Cells(J) > S1.Cells(J)) Then 

      myCount = myCount + 1 

      End If 

     Next J 


    myOwnFunction = myCount 

End Function 
Cuestiones relacionadas