Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在不更改总和的情况下重新排序_Excel_Vba - Fatal编程技术网

Excel 如何在不更改总和的情况下重新排序

Excel 如何在不更改总和的情况下重新排序,excel,vba,Excel,Vba,下面的代码对一张工作表中特定范围内的一组值进行重新排序,以匹配另一张工作表(在透视表中)。 问题是,当它重新排序时,会更改相邻行中的求和公式。我怎样才能防止这种情况 Sub Reorder() Dim First As String Dim Range1 As Range Dim Range2 As Range Dim lRow As Long Dim Count As Long Dim Net As String Dim Line As Range Dim Netrng As Range

下面的代码对一张工作表中特定范围内的一组值进行重新排序,以匹配另一张工作表(在透视表中)。 问题是,当它重新排序时,会更改相邻行中的求和公式。我怎样才能防止这种情况


Sub Reorder()


Dim First As String
Dim Range1 As Range
Dim Range2 As Range
Dim lRow As Long
Dim Count As Long
Dim Net As String
Dim Line As Range
Dim Netrng As Range
Dim Swith As Range

    If ActiveCell.Column = 2 Then
    First = ActiveCell.Address
    ActiveWindow.ActivatePrevious

    ActiveSheet.Range("B5").Activate
    lRow = Cells(Rows.Count, 1).End(xlUp).row - 6
    Set Range2 = Range(ActiveCell.Offset(3, -1), ActiveCell.Offset(lRow, -1))


    Count = 1
      While Count <= Range2.Count
      Set Line = Range2.Rows(Count)
      Net = Line.Value


      ActiveWindow.ActivatePrevious

      Set Range1 = Range(First, Range(First).End(xlDown))
      Range1.Activate
      Set Netrng = Range1.Find(What:=Net, After:=ActiveCell, LookIn:=xlValues, _
      LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
      MatchCase:=False, SearchFormat:=False)


      If Not Netrng Is Nothing And Netrng.row <> Range1.Rows(Count).row Then
       Rows(Netrng.row & ":" & Netrng.row).Select
       Selection.Cut
       Rows(Range1.Rows(Count).row & ":" & Range1.Rows(Count).row).Select
       Selection.Insert Shift:=xlDown
      End If
      ActiveWindow.ActivatePrevious
      Count = Count + 1
      Wend
 Else
MsgBox "Please select correct column"
End If


End Sub



次级再订购()
先调暗为弦
变暗范围1作为范围
变暗范围2作为范围
暗淡的光线和长的一样
不算长
暗网如弦
暗线作为射程
调光网络范围
暗开关范围
如果ActiveCell.Column=2,则
First=ActiveCell.Address
ActiveWindow.ActivatePrevious
ActiveSheet.范围(“B5”).激活
lRow=单元格(Rows.Count,1)。结束(xlUp)。第6行
设置范围2=范围(ActiveCell.Offset(3,-1),ActiveCell.Offset(lRow,-1))
计数=1

虽然计算之前和之后的示例屏幕截图在这里可能会有所帮助。旁注-
While…Wend
已过时。使用
Do While…Loop
。不要使用
Cut
——这是问题的根源。旁注:一般来说,。你想在你的代码中输入OK,那么如果我不使用Cut,我会怎么做呢?