我的目标是编写一个将获取数据的宏(这只是它的样本),并按行号(Shift 1,2,3)对每一行进行分组。
本质上,此工作表将成为我们工厂中记录的数据的数据库,因此其行尺寸将是动态的。
理想情况下,我可以找到一种方法让excel识别3种不同的移位,选择它们各自的行并用1行偏移将它们分开,从而可以很容易地从那里操作数据。
我最初的想法是导入所有数据,按照每个条件对其进行过滤,然后复制并粘贴一个偏移量,但这不起作用。
我在下面发布的代码只是一个测试,看看过滤方法是否有效。任何其他想法将不胜感激。
With objSheet.Cells(1,1).Font
.Bold = True
.Italic = True
End With
更新:这是我现在使用的确切代码。它可以很好地对所有数据进行排序,但不会分成组。
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Columns("A:J").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$J$51").AutoFilter Field:=3, Criteria1:="Shift 1"
Range("A8:J10").Copy
Worksheets("Sorter").AutoFilterMode = False
Range("A20").PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Columns("A:J").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$J$51").AutoFilter Field:=3, Criteria1:="Shift 2"
Range("A8:J10").Copy
Worksheets("Sorter").AutoFilterMode = False
Range("A25").PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Columns("A:J").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$J$51").AutoFilter Field:=3, Criteria1:="Shift 3"
Range("A8:J10").Copy
Worksheets("Sorter").AutoFilterMode = False
Range("A30 ").PasteSpecial (xlPasteAll)
Application.CutCopyMode = False
End Sub
答案 0 :(得分:1)
这是你在尝试的吗?
Sub Sample()
Dim ws As Worksheet
Dim aCell As Range, bCell As Range
'~~> Change this to the relevant sheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
.Columns("A:J").Sort Key1:=.Range("C1"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Set aCell = .Columns(3).Find(What:="Shift2")
.Rows(aCell.Row).Insert
Set aCell = .Columns(3).Find(What:="Shift3")
.Rows(aCell.Row).Insert
End With
End Sub
我的假设
Col 3有三个单词Shift1
,Shift2
,Shift3
。如果没有,那么您将不得不使用If aCell is Nothing
检查。
<强>逻辑强>