Excel 根据范围内的数据组织/排序工作簿工作表
我需要根据特定规则对Excel 2010中的一些工作表进行排序。在运行宏的工作簿(工作簿0)中,我有一个单词列表,例如,所有单词都在一行中,每列一个Excel 根据范围内的数据组织/排序工作簿工作表,excel,vba,Excel,Vba,我需要根据特定规则对Excel 2010中的一些工作表进行排序。在运行宏的工作簿(工作簿0)中,我有一个单词列表,例如,所有单词都在一行中,每列一个 A:“芒果”B:“苹果”C:“香蕉”。我将此范围保存在变量 类型范围 “我的宏”创建一个新工作簿(工作簿_1),其中的工作表名为 “苹果计数”、“苹果平均值”、“香蕉计数”、“香蕉平均值”, “芒果计数”、“芒果平均值” 我想做的是根据工作簿_0中指定的顺序对工作簿_1中的工作表进行排序。在这个例子中,我将获得 “芒果计数”、“芒果平均值
- A:“芒果”B:“苹果”C:“香蕉”。我将此范围保存在变量 类型范围
- “苹果计数”、“苹果平均值”、“香蕉计数”、“香蕉平均值”, “芒果计数”、“芒果平均值”
- “芒果计数”、“芒果平均值”、“苹果计数”、“苹果平均值”, “香蕉计数”、“香蕉平均值”
这里有一个相当简单的方法——不确定如果你有很多床单,速度会有多快,但试一下:
Sub SortSheets()
Dim rngAll As Range, rngTemp As Range
Dim shtTemp As Worksheet, shtFound As Worksheet
Set rngAll = Sheet1.Range("A1:A3")
Set shtFound = Sheets(1)
'Sort _count sheets
For Each rngTemp In rngAll
For Each shtTemp In ThisWorkbook.Worksheets
If shtTemp.Name = rngTemp.Value & "_count" Then
shtTemp.Move , shtFound
Set shtFound = shtTemp
End If
Next
Next
'Move _avg sheets to the right of correctly ordered _count sheets
For Each rngTemp In rngAll
For Each shtTemp In ThisWorkbook.Worksheets
If shtTemp.Name = rngTemp.Value & "_avg" Then
shtTemp.Move , Sheets(rngTemp & "_count")
End If
Next
Next
End Sub
谢谢,看起来应该有用,我要试试。如果我要使搜索案例独立,我可以使用
Lcase()
函数,对吗?谢谢@MattCrum,你做到了,甚至比你想象的还要好!我需要排序的工作表只是整个工作表的一个子集。您的代码不会干扰需要排序的工作表之前或之后的工作表。我只做了一些我在上面报告的小修改。特别是,在第二次排序期间,我用Sheets(rngTemp.value和“\u count”)
替换了Sheets(rngTemp.value和“\u count”)
Sub SortSheets()
Dim rngAll As Range, rngTemp As Range
Dim shtTemp As Worksheet, shtFound As Worksheet
Set rngAll = Sheet1.Range("A1:A3")
Set shtFound = Sheets(1)
'Sort _count sheets
For Each rngTemp In rngAll
For Each shtTemp In ThisWorkbook.Worksheets
If shtTemp.Name = rngTemp.Value & "_count" Then
shtTemp.Move , shtFound
Set shtFound = shtTemp
End If
Next
Next
'Move _avg sheets to the right of correctly ordered _count sheets
For Each rngTemp In rngAll
For Each shtTemp In ThisWorkbook.Worksheets
If shtTemp.Name = rngTemp.Value & "_avg" Then
shtTemp.Move , Sheets(rngTemp & "_count")
End If
Next
Next
End Sub