请帮我翻译一下EXCEL的VBA代码

Private Sub Worksheet_Change(ByVal Target As Range) Dim ar, br, str ar = Array("销售单", "救援单", "进货单", "销退单", "报销单", "其他单据") br = Array("XS01", "WX01", "JH01", "XT01", "BX01", "") Application.ScreenUpdating = False If Target.Count > 1 Then Exit Sub If Target.Row > 2 And Target.Column = 2 Then Target.EntireRow.Interior.Color = xlNone Target.Offset(0, -1) = Date Cells(Target.Row, "k").Resize(1, 6) = Array("=RC[-2]+RC[-1]", "=IF(RC[-10]=""销售单"",RC[-2]/COUNTA(RC[-8]:RC[-6]),IF(RC[-10]=""救援单"",RC[-2]/COUNTA(RC[-8]:RC[-6]),0))", Cells(Target.Row, "m"), "=RC[-3]-RC[-1]", "=IF(RC[-4]<>0,RC[-2]/RC[-4],0)", "=IF(RC[-1]>=100%,""已完结"",""未完结"")") If Cells(Target.Row, "o") < 1 Then Cells(Target.Row, 1).Resize(1, 17).EntireRow.Interior.Color = vbRed str = Format(Application.CountIf([c:c], br(Application.Match(Target, ar, 0) - 1) & Format(Date, "yyyymmdd") & "*") + 1, "000") Cells(Target.Row, "c") = "'" & br(Application.Match(Target, ar, 0) - 1) & Format(Date, "yyyymmdd") & str ElseIf Target.Row > 2 And InStr("9,10,13", Target.Column) Then If Application.Sum(Cells(Target.Row, 9).Resize(1, 2)) <> 0 Then If (Cells(Target.Row, "m") / Application.Sum(Cells(Target.Row, 9).Resize(1, 2))) >= 1 Then Target.EntireRow.Interior.Color = xlNone End If End If Application.ScreenUpdating = True End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ar, br, str
'定义三个变量
ar = Array("销售单", "救援单", "进货单", "销退单", "报销单", "其他单据")
'初始化静态数组
br = Array("XS01", "WX01", "JH01", "XT01", "BX01", "")
'初始化静态数组
    Application.ScreenUpdating = False
'关闭屏幕刷新,加快运行速度
        If Target.Count > 1 Then Exit Sub
        '如果选中的单元格只有一个退出进程,不往下执行
        If Target.Row > 2 And Target.Column = 2 Then
        '如果选中打的单元格在第二行以下,第二列以后则执行
        Target.EntireRow.Interior.Color = xlNone
        '被选中区域的整行底色清空
        Target.Offset(0, -1) = Date
        '被选中区域的左边单元格写入当前系统日期
        Cells(Target.Row, "k").Resize(1, 6) = Array("=RC[-2]+RC[-1]", "=IF(RC[-10]=""销售单"",RC[-2]/COUNTA(RC[-8]:RC[-6]),IF(RC[-10]=""救援单"",RC[-2]/COUNTA(RC[-8]:RC[-6]),0))", Cells(Target.Row, "m"), "=RC[-3]-RC[-1]", "=IF(RC[-4]<>0,RC[-2]/RC[-4],0)", "=IF(RC[-1]>=100%,""已完结"",""未完结"")")
        '在选中单元格的行的K列对应单元格往下六个单元格输入写入公式
        If Cells(Target.Row, "o") < 1 Then
        '如果选中单元格行对应O列的内容小于1
        Cells(Target.Row, 1).Resize(1, 17).EntireRow.Interior.Color = vbRed
        '则将选中单元格所在行填充红底色
        str = Format(Application.CountIf([c:c], br(Application.Match(Target, ar, 0) - 1) & Format(Date, "yyyymmdd") & "*") + 1, "000")
        '根据选中单元格的内容在AR,Br数组中查找返回BR代号后加上格式编号,并计算次编号在C列中出现的次数,将次数返回"000"的文本格式
        Cells(Target.Row, "c") = "'" & br(Application.Match(Target, ar, 0) - 1) & Format(Date, "yyyymmdd") & str
        '在选中单元格行的C列填充该编号及其在C列中出现次数的"000"格式
        ElseIf Target.Row > 2 And InStr("9,10,13", Target.Column) Then
        '如果选中单元格是在第二行以下,且不是I,J,M列
            If Application.Sum(Cells(Target.Row, 9).Resize(1, 2)) <> 0 Then
                '选中单元格所在行I列向下两个数值和不为零
                If (Cells(Target.Row, "m") / Application.Sum(Cells(Target.Row, 9).Resize(1, 2))) >= 1 Then Target.EntireRow.Interior.Color = xlNone
                '选中单元格行M列对应的值不比'选中单元格所在行I列向下两个数值和小 则选中单元格行底色清空
            End If
        End If
        End If
    Application.ScreenUpdating = True
'开启屏幕刷新,恢复Excel正常使用
End Sub

追问

高手啊!!能不能帮我改下代码?我的要求写的有点多。这里放不下,只能弄成照片吧。

温馨提示:答案为网友推荐,仅供参考
相似回答