COUNTIFS在一个范围内,单个单元格对应于具有多个单元格的另一个范围

时间:2015-08-06 19:45:59

标签: excel countif

例如:

http://i.imgur.com/41SS6l3.png

我想计算一个大于60且被诊断为HTN的条目。问题是可能存在多个诊断,并且似乎只计算排在最前面的那些。所以,如果我要进入:

=countifs(A2:A16,"Greater than 60",B2:B16,"HTN")

它只返回“1”,但如果我将HTN移到第三个条目的顶行,它将计为“2”

2 个答案:

答案 0 :(得分:1)

Excel将ColA中的合并单元格视为5个单独的单元格,其中顶部单元格的数据“大于60”,其余单元格为空白。由于您将空白与ColB中相应单元格中的空白进行比较,因此不符合COUNTIFS()的条件。一种解决方案是取消合并第一列,填充空白,然后继续使用COUNTIFS()。否则,可以编写宏来满足您的需求。

答案 1 :(得分:0)

使用excel解决难以解决的问题,因为您要检查不同行上的不同条件。超过60的IE可能出现在第2行,HTD可能出现在第3行。

我要解决这个问题的方法是编写一些VB脚本。以下作品:

Sub counter()

Destination = Range("C2").Address 'this is where the script will put the result

condition1 = "Greater than 60"

condition2 = "HTN"

'Please note, condition 1 (age) must be in column A of your spreadsheet and condition 2 (diagnosis) must be in column B.

'You can modify the code below if you want them in different columns

Range("B2").Select

counter = 0

For i = 1 To 500 'number of rows the script will check for

    If Range("A" & ActiveCell.Row).Value <> "" Then
        field1 = Range("A" & ActiveCell.Row).Value
    End If

    If field1 = condition1 And ActiveCell.Value = condition2 Then
        counter = counter + 1
    End If

    ActiveCell.Offset(1, 0).Select

Next i

Range(Destination).Value = counter

result = MsgBox(counter & " rows meet the specified conditions." & vbNewLine & " This result has been written to cell " & Destination & " on your spreadsheet")



End Sub

您可以通过点击alt + f11将此代码添加到电子表格中,在项目窗格中右键单击工作簿的名称,然后插入模块。然后,您可以剪切并粘贴此代码并在工作簿中运行它。值得注意的是,我写了脚本来检查500行,你可以通过将for i = 1到500的语句更改为这个检查的行数来增加它。