我正在使用此代码:
Sub CopyUniqueCityList()
Dim rCityList As Range
With Sheets("MasterSheet")
With .Range(.Range("F1"), .Range("F1").End(xlDown))
.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Set rCityList = .SpecialCells(xlCellTypeVisible)
End With
.ShowAllData
End With
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Visible = xlSheetVisible And ws.Name <> "MasterSheet" Then
rCityList.Copy ws.Range("F1")
End If
Next
End Sub
获取复制到不同工作表的唯一列表。一切正常。 (谢谢斯科特......: - ))
无论如何,现在我正试图对这个独特的清单进行排序。
我正在尝试在for中进行排序,但是我应该尝试使用With吗?
无论如何,我仍然会遇到错误。我开始录制宏并进入这里:
ws.Range("F1:F").Sort key1:=Columns(6), order1:=xlAscending, Header:=xlYes
但这种情况仍然无法实现。
答案 0 :(得分:0)
尝试用key1:= ws.Columns(“F1”)替换key1:= Columns(6)。
这里不应该有什么不同,但假设您的数据在F列中没有其他任何内容,您可以使用VBA查找F列中的最后一行数据。看起来像 - &gt; ws.Range(“F1:F”&amp; ws.Cells(ws.Rows.Count,“F”)。End(xlUp).Row)。
答案 1 :(得分:0)
首先,“F1:F”不是有效范围。要么对整列使用“F:F”,要么对列的一部分使用“F1:F100”。
此外,如果你有ws.Range(“F:F”)...,你实际上想要整理你正在排序的表,而不仅仅是你要排序的列。因此,例如,如果您想要按F列排序的右侧列,请使用相同的代码,但以ws.Range(“F:G”)开头......
如果将其放在“With”块中,则仅在Master Sheet上完成。我猜你想要它在For循环中,除了MasterSheet
之外,每个工作表都要做一次