背景:
我有一个名为RM的表,我正在通过一个循环将里程碑数据从一个名为Finance的表中提取出来(循环是每个表(“RM”))。一旦数据被前移,工作表就应该将项分组为两个小计:
1)对里程碑活动进行分组
2)将在循环过程中停下来的所有东西分组
以下是代码:
Dim i As Integer
Dim LR As Long, FR As Long
FR = Sheets("Finance").Cells(Sheets("Finance").Rows.Count, 1).End(xlUp).Row
Sheets("Finance").Cells(FR + 1, 1).Value = "Raw Materials"
Sheets("Finance").Cells(FR + 1, 7).Value = Sheets("RM").Cells(12, 2).Value
For i = 16 To 358 Step 18
LR = Sheets("Finance").Cells(Sheets("Finance").Rows.Count, 1).End(xlUp).Row
If Sheets("RM").Cells(i, 4) > 0 And Sheets("RM").Cells(i, 2) = "Fixed" Then
'Milestone row
Sheets("Finance").Cells(LR + 1, 1).Value = Sheets("RM").Cells(i, 1).Value
Sheets("Finance").Cells(LR + 1, 7).Value = Sheets("RM").Cells(i, 4).Value
Sheets("Finance").Rows(LR + 1).Font.Bold = True
'Number
Sheets("Finance").Range(Sheets("Finance").Cells(LR + 2, 1), Sheets("Finance").Cells(LR + 9, 1)).Value = Sheets("RM").Cells(i, 1).Value
'Removed middle section, which pulls over data from different columns
'Group Milestone subactivities
If Sheets("Finance").Cells(LR, 1).Value = Sheets("Finance").Cells(LR - 2, 1).Value Then
Sheets("Finance").Range(Sheets("Finance").Cells(LR + 2, 1), Sheets("Finance").Cells(LR + 9, 1)).EntireRow.Group
Else
End If
Else
End If
Next i
Sheets("Finance").Rows(FR + 1).Font.Bold = True
If LR - FR > 1 Then
Sheets("Finance").Range(Sheets("Finance").Rows(FR + 2), Sheets("Finance").Rows(LR)).EntireRow.Group
Else
End If发行:
里程碑事件的分组并不合适。当代码运行时,只有一些里程碑得到它们的分组,尽管总体分组是发生的。
在10个里程碑的列表中,1和10没有里程碑分组,而是2-9 do组。
我想我对If -语句本身有个问题,如果LR-FR>2,但是在穿行过程中,我发现了一些奇怪的东西。
当我逐步处理F8时,我意识到,只有在一个或两个循环发生之后,..copy/..pastespecial的数据才会出现。然后,分组显示粘贴的最后一个可视添加的数据。然后,随后的数据将显示到最后一位。
问题:
是否有办法强制粘贴显示数据?还有什么会导致Excel/VBA进行此活动的吗?
如能在决议上提供任何帮助,将不胜感激。
发布于 2017-08-17 14:42:00
有两件事发生在这个问题上--围绕这个问题:
1)我必须添加另一行,这样里程碑分组就不会结束在与节分组相同的行上(在本例中,在问题中发布的子例程中的循环之后)。
Dim LR as Long
LR = Sheets("Finance").Cells(Sheets("Finance").Rows.Count, 7).End(xlUp).Row
Sheets("Finance").Cells(LR + 1, 7).Value = "-"
Sheets("Finance").Rows(LR + 1).Font.Bold = True( 2)在循环之后,我把所有的分组都拉出来了。
分组代码最后看起来如下所示:
Dim a as Integer
LR = Sheets("Finance").Cells(Sheets("Finance").Rows.Count, 7).End(xlUp).Row
For i = 5 To LR
If Sheets("Finance").Cells(i, 1).Font.Bold = False Then
Sheets("Finance").Rows(i).EntireRow.Group
Else
End If
Next i
'Group between sheets
a = Sheets("Finance").Columns(1).Find(What:="Not Raw Materials", LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Row
Sheets("Finance").Range(Sheets("Finance").Rows(4), Sheets("Finance").Rows(a - 1)).EntireRow.Group最后,我必须确保分组从最小的增量到最大的增量,以确保我不会丢失大分组(小计)切换的功能。我经常会失去上一个里程碑的小计开关。
https://stackoverflow.com/questions/45722189
复制相似问题