2011-08-01 56 views
0

如何使用VBA代码执行排序操作?任何已定义的宏来执行该操作?使用VBA进行排序操作?

我必须按升序对我的列B进行排序,其中包含值。和C列中有日期和时间最早到最新的时尚。

+2

请大家饶恕我们所有的乞讨和自嘲。我们都曾经是初学者。坚持这个问题,你已经尝试过。 –

+1

@niko:在发布之前,我建议阅读您的问题几次。旨在将句数减半,并尽可能使信息尽可能简洁紧凑。这比起呼吁人们的慷慨,特别是考虑到大多数开发人员的个性来说要好得多。 –

回答

5

我强烈建议你使用宏录像机玩耍。如果您在Excel中看不到开发人员选项卡,请转至Excel选项,并将其置于“热门”选项卡中。点击打开它。

按录制宏,然后做你想做的事情(如突出显示一列,按功能区上的排序和按升序排序),然后停止录制。进入VBA(Alt + F11)并查看生成的代码以了解如何编写相同函数的语法。

例如,对日期排序时会导致这样的事情:

Sub Macro1() 
    Columns("F:F").Select 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("F1:F5"), _ 
     SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .SetRange Range("F1:F5") 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
End Sub 

既然你已经选择要当您运行宏来排序的列,可以清理代码,使其像这样:

关键是要记住,你并不需要选择日:

Sub SortAscending() 
    With ActiveWorkbook.Worksheets("Sheet1").Sort 
     .Header = xlGuess 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
End Sub 

日期排序可以使用相同的代码,因为它的升序进行您已选择的代码中的范围。祝你好运,并与录音机玩得开心,这确实有助于这样的情况。

此外,还有很多关于Excel VBA的书籍,我建议您在书店或数字版上选择一本书。大多数书籍都会引导您了解VBA基础知识,主要关键字,使用记录器,然后最终完成得足够远,以便您可以编写自己的代码(记录器代码几乎没有优化或完美,但对学习措辞非常有用(语法)来完成一些工作表函数)。

+0

不客气,niko。如果我的答案有效,请检查答案旁边的箭头标记以接受答案。 :)至于第二个问题,恐怕我没有在驱动器中指定足够的文件来解决这个问题。我想我会在其他地方看到你的q,所以希望这里的其他用户最终会看到它并帮助你。 – aevanko

+0

很干净的答案。 –