我想創建一個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