根据其他单元格内容插入数据

时间:2017-02-20 17:22:48

标签: excel-vba vba excel

我对VBA了解一点,但我似乎无法绕过这个编程问题。

我有一张表格,我想要编制在任务结束前需要多少天。每个状态等于天数,例如,如果文件处于待定阶段,则总共需要180个完成。但我想要的是在每个阶段写下它将需要的天数。例如

状态写入范围E3:E160

如果范围内的单元格=等待  将4列偏移并写入20,并将5列偏移并写入35和偏移6列并写入50,并将7列偏移并写入25,并且将8列覆盖并写入15并将9列偏移并写入15最后,将10列偏移并写入20

但是,如果范围内的单元格=“计划”,则偏移5列并写入35,并将6列偏移并写入50,依此类推,直到偏移10列并写入20

目标是针对每种状态,偏移数量取决于状态。

希望这有帮助 我认为这将是一个循环或其他什么,但我真的无法弄明白。

此外,它还需要能够捕获范围内或范围外的任何新行。

感谢任何能够帮助我的人

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim LastRow As Long
Dim i As Long
LastRow = Range("E" & Rows.Count).End(xlUp).Row

For i = 3 To LastRow

    If Range("E" & i).Value = "Pending" Then

    Range("I" & i).Value = "20" And Range("J" & i).Value = 35 And Range("K" & i).Value = 50 And Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20

    ElseIf Range("E" & i).Value = "Planning" Then
    Range("J" & i).Value = 35 And Range("K" & i).Value = 50 And Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20

    ElseIf Range("E" & i).Value = "Screening" Then
    Range("K" & i).Value = 50 And Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20

    ElseIf Range("E" & i).Value = "Exam" Then
    Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20

    ElseIf Range("E" & i).Value = "Interview" Then
    Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20

    ElseIf Range("E" & i).Value = "References" Then
    Range("N" & i).Value = 15 And Range("O" & i).Value = 20

    ElseIf Range("E" & i).Value = "Closing" Then
    Range("O" & i).Value = 20

    End If
Next i

End Sub

1 个答案:

答案 0 :(得分:1)

If Range("E" & i).Value = "Pending" Then

    Range("I" & i).Value = 20
    Range("J" & i).Value = 35
    Range("K" & i).Value = 50
    Range("L" & i).Value = 25
    Range("M" & i).Value = 15
    Range("N" & i).Value = 15
    Range("O" & i).Value = 20

ElseIf Range("E" & i).Value = "Planning" Then
    Range("J" & i).Value = 35
    Range("K" & i).Value = 50
    Range("L" & i).Value = 25
    Range("M" & i).Value = 15
    Range("N" & i).Value = 15
    Range("O" & i).Value = 20`

您需要删除And子句中的所有Then语句。这是一个例子。你可以改变其余部分。您可能还想查看Case Select方法。