我想创建一个Excel宏,它将执行以下操作: 以A列中的任意长度的数字列表形式 将唯一值列D D 用COUNTIF公式填充列E,该公式将显示每个唯一编号的发生次数(因此它将具有D中的唯一编号以及E中发生的次数) 将列D的值和E从最高到最低,基于列E' s值创建一个没有重复的新列,计算一个数字的频率并对列进行排序
我知道如何使用Excel GUI执行每个这些步骤,但我想写一个VBA宏来完成这些步骤。迄今为止,对我而言最困难的部分是使COUNTIF公式的地址长度为任意长度。任何想法如何实现?
编辑: 这里是我的最新记录代码:
Range("A1:A1000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range(_
"D1:D2000"), Unique:=True
Range("E2").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(R2C1:R1000C1,RC[-1])"
Selection.AutoFill Destination:=Range("E2:E1000"), Type:=xlFillDefault
Columns("D:E").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E2:E1000") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("D1:E1000")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
我手动设置的范围为最大的1000,但其实我是想使其无论最后一个单元格的数据。我认为我可以为复制和粘贴零件做类似Range(“A1”,Range(“A1”)。End(xlDown))的操作,但是COUNTIF不会接受该记号吗?
第一步:如果您知道如何使用GUI进行操作,但不知道如何在代码中执行此操作,请录制宏! (http://www.excel-easy.com/vba/examples/macro-recorder.html)这会给你一个代码的起点。从那里,你可以编辑代码以完全按照你想要的方式行事。 – Mikegrann