如何根据用户定义的值对Excel中的范围进行排序

时间:2017-01-09 09:42:06

标签: excel vba sorting

在"表1和#34;中,单个列中有20个单元格,这些单元格是用户选择值(材料列表中的材料)的下拉框。每种材料都有一个属性,高或低。

我想要发生什么:

  • 当细胞的范围(包含原料的名称)时 方式)粘贴到" New Sheet",我希望它们立即排序 进入"高"和"低"类别。所以"高"材料是 在顶部和"底部"范围。

例如在表1中:

Material A

Material B

Material C

Material D

.. and so on

此列表处于随机的高/低顺序。

在"新表"中,我希望:

Material D

Material A

Material C

Material B

其中D和A是"高"而C和B是"低"

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

只要数据在A1:B20范围内,您就可以通过这个简单的宏实现您想要的...

Sub Macro4()



Range("A1:B20").Copy
Sheets.Add After:=ActiveSheet
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Range("B1:B20").Select
Application.CutCopyMode = False
ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("B1"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.ActiveSheet.Sort
    .SetRange Range("A1:B20")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub