2009-02-05 3 views
6

Ho due colonne in Excel, in questo modo:Posso usare COUNTIF su due colonne per confrontare i valori?

A B 
0.5 0.4 
0.6 0.59 
0.1 0.2 
0.3 0.29 

voglio contare quanti dei valori di B sono meno dei loro valori corrispondenti in A. In questo caso, la risposta è 3.

Posso farlo aggiungendo una colonna in più, B-A e poi facendo COUNTIF(RANGE, "<0"), ma mi chiedo se c'è un modo per farlo senza aggiungere una colonna in più.

Mi rendo conto che questo è ai margini di ciò che si potrebbe considerare di programmare, ma si spera che sia solo sul lato destro della linea, piuttosto che sul lato sbagliato.

risposta

17

Questo può essere fatto utilizzando formule di array Excel.Prova a fare qualcosa di simile:

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

La stessa moltoimportante parte, è quello di premere CTRL-SHIFT-ENTER invece di ENTER quando hai finito inserendo la formula. Altrimenti non capirai che vuoi trattare i dati come una matrice.

+0

Molto pulito. Grazie! – Ben

1

C'è una soluzione, ma coinvolge ancora 2 celle aggiuntive: DCOUNT.

Il seguente è un esempio (inserire nelle celle specificate il testo esatto dopo i due punti):

A1: Condizione

A2: = B4> A4

A3: A

B3: B

A4: 700

B4: 5000

A5: 700

B5: 600

A6: 7000

B6: 6000

A7: 700

B7: 701

cellulare con formula conteggio : = DCOUNT (A3: B7, "B", A1: A2)

+0

Perfetto: questo ha fatto il lavoro. Grazie! Non avrei mai incontrato DCOUNT prima. – Ben

+0

Mi spiace: avevo accettato la tua risposta, ma in realtà la risposta di uno scraimer è un po 'meglio per me. – Ben

+0

Sono d'accordo, le formule di matrice sono una cosa carina da sapere! (Non ne sapevo nulla fino ad ora). –

1

In realtà questo è qualcosa che io farebbe fare con un programma.

Creare una macro per:.

  • colonna inserto C.
  • campo impostato ("cN") valore a "= BN-aN" per tutti gli N valore ove l'estensione ("aN"). <> "".
  • compila il tuo calcolo e lo inserisce in una cella (non colonna C).
  • colonna di eliminazione C.

Ci può essere un modo non-programmazione più semplice, ma non so che (e quindi la tua domanda sarebbe stato chiuso comunque).

0

soluzione scraimer è ok. Ma per un divertimento,

È possibile anche scrivere una macro come il seguente e assegnare

=myOwnFunction(A1:A5,B1:B5) 

questo approccio può essere esteso per qualsiasi altra funzione logica, come A * B + C < C + D * E ecc ....

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