如何对预选区域进行排序

时间:2019-07-02 00:19:25

标签: excel vba sorting

我每天都会运行报告,然后将数据粘贴到正在进行的Excel电子表格中。我想使用宏对数据进行排序(按颜色排序,尽管这并不重要),所以我可以选择需要保留的记录;其余的都被删除。
每次执行此操作时,新数据都会粘贴到电子表格的下方。问题是,我可以找到的所有代码示例都假设要排序的数据始于已知单元格。我只想对碰巧被选中的范围进行排序。

这是我到目前为止的代码:

Sub SortByColor2()

Dim rngPasted As Range
Dim SortGreen As String
Dim SortRed As String

Set rngPasted = Selection
SortGreen = "C585"
SortRed = "D585"

ActiveWorkbook.Worksheets("Orders").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Orders").Sort.SortFields.Add(Range(SortGreen), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(198, 239, 206)
ActiveWorkbook.Worksheets("Orders").Sort.SortFields.Add(Range(SortRed), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 199, 206)

With ActiveWorkbook.Worksheets("Orders").Sort
.SetRange rngPasted
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

End Sub

此代码的工作方式是执行排序。我需要知道的是如何将变量SortGreen和SortRed设置为“所选区域中列C的第一个单元格”(对于SortRed,则为D),而不是将其值设置为特定单元格。 我发现使用“ Selection(3)”的建议,但是当我尝试SortGreen = Selection(3)时,出现运行时错误“ 1004”:对象“ _Global”的方法“ Range”失败。 我有一种感觉,我在这里错过了一些基本和根本的东西。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我假设您的选择从A列开始。您可以在此处使用awk 'NR==FNR{a[$0]=1;next} !a[$0]' idontneed.txt goodruns.txt 09989 09996 属性:

.Cells

如果您的选择不是以A列开头(因此是B或C),请使用以下代码(无论哪种情况都可以):

Set rngPasted = Selection
SortGreen = Selection.Cells(1, 3).Address
SortRed = Selection.Cells(1, 4).Address