2017-01-09 50 views
-1

在“工作表1”中,单列中有20个单元格,这些单元格是用户选择值(材料列表中的材料)的下拉框。每种材料都有一个属性,无论是高还是低。如何根据用户定义的值对Excel中的范围进行排序

我希望发生什么:

  • 当细胞(其包含由 方式原材料的名称)的范围内被粘贴到“新表”,我希望他们能够立即解决 成“高”和“低”类别。因此,所有“高”材料都是 位于该范围的顶部和“底部”。

因此,例如在第1页:

Material A 

Material B 

Material C 

Material D 

.. and so on 

而且这个名单是随机的高/低的顺序。

在 “新表”,我想有:

Material D 

Material A 

Material C 

Material B 

其中d和A是 “高”,C和B都是 “低”

任何帮助,将不胜感激。

+0

当你说高和低的你是什么意思是什么呢?引入的价值高于特定价值?或者材料有相关的高/低值?如果你可以对这个例子更具体,那么知道你想要做什么会更容易。 –

+0

是第二个选项。每种材料都有一个属性,可以用高或低来描述 –

+0

,这似乎很清楚,他的意思是“高”和“低”值,尽管确切的值对于问题本身来说并不相关。不同的方式来做到这一点,一个快速和肮脏的将在这里http://stackoverflow.com/questions/15017717/sort-a-range-before-pasting-excel-vba –

回答

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 
相关问题