2

我正在尝试创建一个分配系统,虽然我在VBA这次卡住之前已经编程了!

我有五列数据,其中的内容决定了我分配给他们的工作人员。

我需要做的是:

If column E = "a", then put name "xx" in column A (of same row)
If column E = "b", then put name "yy" in column A (of same row)
If column E is blank, then move to next criteria....

If column D is "c" then put name "zz" in column A (of same row)
If column D is "d" then move to next criteria....

If column A is blank then put name "ww" in column A.

提前致谢!!

4

2 回答 2

0
Sub Allocate()

    Dim i As Long

    For i = 1 To Range("E" & Rows.Count).End(xlUp).Row
        If Range("E" & i) = "a" Then
            Range("A" & i) = "xx"
        ElseIf Range("E" & i) = "b" Then
            Range("A" & i) = "yy"
        End If

        If Range("D" & i) = "c" Then
            Range("A" & i) = "zz"
        End If

        If IsEmpty(Range("A" & i)) Then
            Range("A" & i) = "ww"
        End If
    Next i

End Sub

注意

If column E is blank, then move to next criteria....

不包含在代码中的任何地方,没有必要在代码中实现它,因为它实际上什么都不做:)

于 2013-11-07T11:37:24.963 回答
0

就像我在您问题下的链接中提到的那样,您不需要循环。

如果您要使用 Excel 公式,那么您将使用类似这样的东西

=IF(E1="a","xx",IF(E1="b","yy",IF(D1="c","zz","ww")))

只需在 vba 代码中使用它

Option Explicit

Sub Sample()
    Dim lRow As Long

    '~~> Change this to the relevant sheet
    With ThisWorkbook.Sheets("Sheet1")
        lRow = .Range("E" & .Rows.Count).End(xlUp).Row

        .Range("A1:A" & lRow).Formula = "=IF(E1=""a"",""xx"",IF(E1=""b"",""yy"",IF(D1=""c"",""zz"",""ww"")))"

        .Range("A1:A" & lRow).Value = .Range("A1:A" & lRow).Value
    End With
End Sub

截图

在此处输入图像描述

于 2013-11-07T12:13:25.257 回答