用vba插入形态转换单数据和写入转换数量

用vba把形态转换单分组后,还有小部分无规则的需要人工手动分组,全部分组完成后,用数据透视表和U8系统结存做对比,无误后我们就可以写代码用vba插入形态转换单数据和写入转换数量.

Sub 形态转换插入数据()

    Dim i, irow, j, k As Integer
    Dim y As Single
    
    

    irow = Range("i65536").End(xlUp).Row

    For i = 5 To 3500
        k = Range("I" & i).Offset(0, 2)
        
        If Range("L" & i) = "" And k <> 2 And Range("I" & i) = Range("I" & i + 2) And Range("H" & i) > 0 And Range("H" & i + 1) < 0 Then
            Range("I" & i).Select
            Rows(i).Copy
            Range("L" & i) = -Range("H" & i + 1)
            Range("L" & i + 1) = -Range("H" & i + 1)
            
            For j = 1 To k - 2
                ActiveCell.EntireRow.Offset(2, 0).Select
                Selection.Insert Shift:=xlShiftDown
                Range("L" & ActiveCell.Row) = -Range("H" & ActiveCell.Row + 1)
                Range("L" & ActiveCell.Row + 1) = -Range("H" & ActiveCell.Row + 1)
                ActiveCell.EntireRow.Copy
            Next
        
        ElseIf Range("L" & i) = "" And k <> 2 And Range("I" & i) = Range("I" & i + 2) And Range("H" & i) > 0 And Range("H" & i + 1) > 0 Then
            
            y = Application.WorksheetFunction.Sum(Range("H" & i).Resize(k, 1))
            Range("M" & i) = y
            
            Rows(i + k - 1).Select
            Rows(i + k - 1).Copy
            Range("L" & ActiveCell.Row) = (Range("H" & ActiveCell.Row - 1) * 1000 - y * 1000) / 1000   '为了解决浮点误差问题乘1000/1000
            Range("L" & ActiveCell.Row - 1) = (Range("H" & ActiveCell.Row - 1) * 1000 - y * 1000) / 1000
            y = 0
            For j = k - 2 To 1 Step -1
                
                Rows(i + j).Select
                Selection.Insert Shift:=xlShiftDown
                Range("L" & ActiveCell.Row) = Range("H" & ActiveCell.Row - 1)
                Range("L" & ActiveCell.Row - 1) = Range("H" & ActiveCell.Row - 1)
                ActiveCell.EntireRow.Copy
            
            Next    
            ElseIf Range("L" & i) = "" And k = 2 And Range("I" & i) = Range("I" & i + 1) And Range("H" & i) > 0 And Range("H" & i + 1) < 0 Then
        
            Range("L" & i) = -Range("H" & i + 1)
            Range("L" & i + 1) = -Range("H" & i + 1)
        
        
        
        End If
    
    Next
    irow = Range("i65536").End(xlUp).Row
    MsgBox "OK"
    
End Sub


展开阅读全文

页面更新:2024-03-19

标签:形态   数量   数据   浮点   误差   小部分   透视   规则   代码   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top