我有一个工作簿(C:\ DOORS.xlsm),其中包含以下数据:
A B C D
100 Type A Description1 Remarks1
102 Type A Description1 Remarks1
103 Type C Description2 Remarks2
104 Type D Description3 Remarks3
我还在学习VBA,想知道我应该研究什么才能将上述数据排序为这样。
A B C D
100, 102 Type A Description1 Remarks1
103 Type C Description2 Remarks2
104 Type D Description3 Remarks3
我想我会使用一个循环来通过每个单元格并验证它是否与另一个条目匹配,仍然试图绕着循环的概念包围我,但我被告知如果可能的话避免使用它们。那么我相信你会在循环中使用像sort函数这样的东西?如果我可以改进我的问题或澄清任何事情,请告诉我。我想提出好的问题,并且会喜欢一些建设性的批评=)。
原标题:尝试学习VBA并需要帮助指出我正确的方向
答案 0 :(得分:1)
选项明确
Sub data_Rollup()
Dim rw为Long,strA为String,strB为String
很多人去这里 结束子
使用工作表(“Sheet1”)
使用.Cells(1,1).CurrentRegion
'这里所有的工作代码 以。结束 结束与
.Cells.Sort Key1:=。列(1),Order1:= xlAscending,_
方向:= xlTopToBottom,标题:= xlYes
.Cells.Sort Key1:=。列(2),Order1:= xlAscending,_
Key2:=。列(3),Order2:= xlAscending,_
Key3:=。列(4),Order3:= xlAscending,_
方向:= xlTopToBottom,标题:= xlYes
对于rw =.Rows.Count¹到2步-1 '更多来到这里
下一个rw
strA = Join(数组(.Cells(rw,2),. Cells(rw,3),. Cells(rw,4)),ChrW(8203))
strB = Join(数组(.Cells(rw - 1,2),. Cells(rw - 1,3),. Cells(rw - 1,4)),ChrW(8203))
如果LCase(strA)= LCase(strB)则为 .Cells(rw - 1,1)= Join(数组(.Cells(rw - 1,1),. Cell(rw,1)),“,”)
.Rows(RW).EntireRow.Delete
结束如果
没什么。
¹由于您在Range.CurrentRegion property内工作,.Rows.Count是.CurrentRegion中的总行数。