Могу ли я использовать COUNTIF в двух столбцах для сравнения значений? - PullRequest
8 голосов
/ 05 февраля 2009

У меня есть два столбца в Excel, например:

 A   B
0.5  0.4
0.6  0.59
0.1  0.2
0.3  0.29

Я хочу посчитать, сколько значений в B меньше, чем их соответствующие значения в A. В этом случае ответ равен 3.

Я могу сделать это, добавив дополнительный столбец B-A, а затем выполнить COUNTIF(RANGE, "<0"), но мне интересно, есть ли способ сделать это без добавления дополнительного столбца.

Я понимаю, что это на грани того, что можно было бы считать программированием, но, надеюсь, это только на правой стороне строки, а не на неправильной.

Ответы [ 5 ]

19 голосов
/ 05 февраля 2009

Это можно сделать с помощью формул массива Excel. Попробуйте сделать что-то вроде этого:

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

Очень очень важная часть состоит в том, чтобы нажать CTRL-SHIFT-ENTER вместо ENTER, когда вы закончите ввод формулы. В противном случае он не поймет, что вы хотите обрабатывать данные как массив.

1 голос
/ 05 февраля 2009

На самом деле это то, что я хотел бы сделать с программой.

Создать макрос для:

  • вставить столбец C.
  • установить диапазон ("cN"). Значение на "= bN-aN" для всех N, где диапазон ("aN"). Значение <> "".
  • сделайте подсчет контентов и поместите его в ячейку (, а не столбец C).
  • удалить столбец C.

Может быть более простой способ не программирования, но я не знаю его (и тогда ваш вопрос все равно будет закрыт).

1 голос
/ 05 февраля 2009

Существует решение, но оно все еще включает в себя 2 дополнительные ячейки: DCOUNT.

Ниже приведен пример (вставьте в указанные ячейки точный текст после двоеточий):

A1: Состояние

A2: B4 => A4

A3: A

B3: B

A4: 700

B4: 5000

A5: 700

B5: 600

A6: 7000

B6: 6000

A7: 700

B7: 701

Ячейка с формулой счета: = DCOUNT (A3: B7, «B», A1: A2)

0 голосов
/ 21 мая 2019

Решение Arrayformula от Shalom действительно хорошо, но я не мог заставить его работать с функцией AND, встроенной в IF, поэтому мне пришлось найти другое решение, и, наконец, я нашел его!

=ROWS(FILTER(A1:B4, A1:A4 > B1:B4))

Это решает исходную проблему в вопросе. С другой стороны, вы можете использовать несколько условий, при необходимости использовать сам отфильтрованный диапазон в других функциях.

(Это решение для Google Sheet, не пробовали его в Excel)

0 голосов
/ 05 февраля 2009

Раствор скреймера в порядке. Но для удовольствия,

Вы также можете написать макрос наподобие следующего и назначить

=myOwnFunction(A1:A5,B1:B5)

этот подход может быть расширен для любой другой логической функции, такой как A * B + C

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...