美文网首页
VBA实现1秒完成收支报表

VBA实现1秒完成收支报表

作者: 王伯卿 | 来源:发表于2018-05-15 19:51 被阅读0次

不好意思,吹牛了,不是1秒。我实际测量过,大概需要……20秒左右。

然后美国站和欧洲站的报表数据不适用于此代码。因为我自己是日本站运营,因此是按着自己的源数据写的。另外看过欧洲站同事的后台数据,似乎没有像日本站后台那样收支非常明细。所以可能他们暂时是没办法享受到这样的方便快捷操作了。

先来看一下最后的实际效果。


1.png

马赛克处是我的SKU,请忽略我这可怜的销量。
这样可以把每个SKU的收支全部列出来。简直就是偷懒,阿呸……提高效率神器。以前1.5小时的任务,现在1分钟内就可以完成了。喜极而泣!

Sub dataOrg()

    Application.ScreenUpdating = False
    Dim rowNum, i As Integer
    rowNum = Application.WorksheetFunction.CountA(Range("g:g"))
    For i = rowNum To 1 Step -1
        If Cells(i, 7) = 0 Then
            Rows(i).Delete
        End If
    Next
    
    rowNum = Application.WorksheetFunction.CountA(Range("e:e"))
    For i = 1 To rowNum
        If Cells(i, 6) = "" Then
            Cells(i, 6) = Cells(i, 5)
        End If
    Next
    
    rowNum = Application.WorksheetFunction.CountA(Range("e:e"))
    For i = 1 To rowNum
        If Cells(i, 3) = "" Then
            Cells(i, 3) = "大类费用"
        End If
    Next
    
    rowNum = Application.WorksheetFunction.CountA(Range("e:e"))
    For i = 1 To rowNum
        If Cells(i, 6) = "促销返点" Then
            Cells(i, 8) = ""
        End If
    Next
    
    rowNum = Application.WorksheetFunction.CountA(Range("e:e"))
    For i = 1 To rowNum
        If Cells(i, 6) = "积分成本" Then
            Cells(i, 8) = ""
        End If
    Next
End Sub

其实逻辑简单的不行
(1) for循环查找价格为0的单元格(没有意义的垃圾数据)找到了便删除单元格所在行
(2)for循环查找付款明细列中为空的单元格,如果找到了,便填充左偏移量为1的值
(3)for循环查找SKU中为空的数据,如果找到了,就填充大类费用
(4)for循环查找某列中积分成本和促销返点的值

好久没写VBA了,今天有了新的需求,正好练练手。
说实话,解决问题是我工作中遇到最最最开心的事情,比我完成销售目标还开心。

相关文章

网友评论

      本文标题:VBA实现1秒完成收支报表

      本文链接:https://www.haomeiwen.com/subject/kfvydftx.html