|
1、先不说你你描述,你不觉得你这几个数据有七百多k很不正常吗?不觉得打开特别卡吗?按下筛选,都到XFZ列(16372列)了。给你精简了。
2、不要惜字如金,说的不明不白,只能猜。不知道你移动下来的那部分要怎么搞,看下附件效果吧,提供两种方案。- Sub 插入1()
- '这是根据版主大大的改的,正向循环了
- Application.ScreenUpdating = False
- Application.Calculation = xlManual
- r = Cells(Rows.Count, 4).End(3).Row
- arr = [a1].Resize(r, 9)
- For j = 2 To r 'UBound(arr) ' To 2 Step -1
- If Sheet1.Cells(j, 4) - Sheet1.Cells(j, 8) > 0 Then
- Cells(j, 1).Resize(1, 4).Insert
- Else
- If Sheet1.Cells(j, 4) - Sheet1.Cells(j, 8) < 0 Then
- Cells(j, 6).Resize(1, 3).Insert
- End If
- End If
- Next j
- r = Cells(Rows.Count, 6).End(3).Row
- For j = 2 To r
- Sheet1.Cells(j, 9) = Sheet1.Cells(j, 4) - Sheet1.Cells(j, 8)
- Next
- Application.Calculation = xlAutomatic
- Application.ScreenUpdating = True
- End Sub
- Sub 插入2()
- '本来也想循环的,但是实在不知道怎么重新给循环截止次数重新赋值,有会的老师指导一下吗?
- Application.ScreenUpdating = False
- Application.Calculation = xlManual
- r = Cells(Rows.Count, 4).End(3).Row
- arr = [a1].Resize(r, 9)
- a = 2
- f = 2
- x:
- If Sheet1.Cells(a, 4) - Sheet1.Cells(a, 8) > 0 Then
- Cells(a, 1).Resize(1, 4).Insert
- a = a + 1
- x = x + 1
- Else
- If Sheet1.Cells(a, 4) - Sheet1.Cells(a, 8) < 0 Then
- Cells(a, 6).Resize(1, 3).Insert
- f = f + 1
- End If
- End If
- a = a + 1
- f = f + 1
- If a > r + x Then
- GoTo y
- Else
- GoTo x
- End If
- y:
- r = Cells(Rows.Count, 6).End(3).Row
- For j = 2 To r
- Sheet1.Cells(j, 9) = Sheet1.Cells(j, 4) - Sheet1.Cells(j, 8)
- Next
- Application.Calculation = xlAutomatic
- Application.ScreenUpdating = True
- End Sub
复制代码 |
|