计算唯一行的出现次数并在表

时间:2018-03-28 10:05:26

标签: excel vba excel-vba

我正在尝试在VBA和Excel中生成一个宏,它可以计算行的唯一出现次数,打开一个新的Excel工作表并粘贴包含出现次数的摘要顺序列表。

我是VBA的新手,我还在使用Excel VBA for Dummies阅读它。因此,非常感谢任何有关如何开始的帮助。我已经阅读了其他帖子,并尝试使用SUM和COUNT.IF取得了一定程度的成功。

基本上,我正在处理过程设备和仪器的订单列表,例如阀门,压力计等。列表已填写,并且在一大堆信息中将出现具有唯一部件号的相同项目的多个副本。因此,难以计算要订购的唯一物品的数量,并且很容易发生错误。目标可归纳如下:

  • 根据唯一标签编号计算行的出现次数(唯一部分) (例如图像)
  • 生成一个汇总表,可以单独打印(最好是在新的表格中),其中包含一行和每个唯一的项目(可能是从顶部开始的唯一行的第一次出现)以及整个范围内相应的出现次数

举个例子,我为不同的连锁超市准备了水果订单,如下图所示。

enter image description here

提前致谢!

1 个答案:

答案 0 :(得分:0)

我意识到我原来的问题研究得很糟糕,我自己也想出了问题的答案。如果有人碰巧读到这个并想要一个答案,那么代码的核心就像是这样(根据另一个案例直接从我的代码中复制,因此它不会自行运行):

Dim i As Long
Dim nr_rows As Long

Sheets("Ark1").Cells(1, 1).Select
Sheets("Ark1").UsedRange.Clear

'Counts number of occurances based on two criteria: the connection type and model number

With ActiveSheet
nr_rows = Cells(Rows.Count, 1).End(xlUp).Row

For i = 1 To nr_rows 'Cells(i, 7) indicates destination column
      Cells(i, 7).Formula = "=SUM(COUNTIFS(B1:B200,B1:B200,F1:F200,F1:F200))"
Next i

End With

'Removes duplicates based on all columns
Application.Calculation = xlCalculationManual

ActiveCell.Range("A1:G200").Select
ActiveSheet.Range("$A$1:$G$200").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7), Header:=xlNo

'Sorts the range alphabetically based on Column E, the manufacturer
Range("A1:G50").Sort Key1:=Range("E:E")