根据多个条件计数

时间:2015-09-24 17:20:29

标签: excel vba excel-vba

所以我看了数&但是没有看到我想要完成的事情。基本上我有3列数据。 销售人员,城市,日期

数据可能如下所示:

SM1     City1    07/01/2010
SM2     City1    07/01/2010
SM1     City2    07/01/2010
SM3     City1    07/01/2010

我想添加第4列,显示该日期有多少销售人员访问该城市的计数。 所以我想最终得到:

SM1     City1    07/01/2010     3
SM2     City1    07/01/2010     3
SM1     City2    07/01/2010     1
SM3     City1    07/01/2010     3

所以我需要根据城市和日期计算出数量。 任何帮助,将不胜感激。只是一些指示将是最受欢迎的。 我想使用VBA并能够动态确定行数,因为它不会是静态的。

2 个答案:

答案 0 :(得分:2)

我不确定为什么你需要VBA,一个简单的COUNTIFS公式将适合你。使用您提供的示例数据,在单元格D1中使用此公式并复制:

=COUNTIFS(B:B,B1,C:C,C1)

答案 1 :(得分:0)

我同意@tigeravatar公式=COUNTIFS(B:B,B1,C:C,C1)将为您做到这一点。只需双击D列最后一行的右下角,然后让你填写。

如果你因为某种原因而不愿意使用VBA,你可以试试这样的事情,假设你已经在D栏的最后一行中有上述公式:

Sub countIf()

'Get the last row in the sheet, presumably where your A/B/C columns end
sheetLastRow = ActiveSheet.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

'Get the last row of the D column where your formula should be
countIfLastrow = ActiveSheet.Range("D" & Rows.Count).End(xlUp).Row

'Copy the formula down the D column to the end of your A/B/C columns,
'    just like clicking the corner of the cell
ActiveSheet.Range("D" & countIfLastrow).AutoFill Destination:=ActiveSheet.Range("D" & countIfLastrow & ":D" & sheetLastRow)

End Sub