2013-03-27 75 views
2

我有下面的代码到目前为止减去从另一个一列,但随后需要采取这一结果,如果D然后F = D + F其他E = E + DVBA计算添加列基于一个列回答

Sub PopCol() 
     Range("D3:D19").Formula = "=RC[-1]-RC[-2]" 'D=C-B 

我迷路了!一直在尝试不同的格式范围,并没有运气 - 帮助!

谢谢!

回答

1

这是你正在尝试?

Sub PopCol() 
    Dim rng As Range, aCell As Range 

    Set rng = Range("D3:D19") 

    rng.Formula = "=RC[-1]-RC[-2]" 

    For Each aCell In rng 
     Select Case aCell.Value 

     Case Is < 0 '<~~ If value in D is negative 
      '~~> F = F + D 
      aCell.Offset(, 2).Value = aCell.Offset(, 2).Value + aCell.Value 
     Case Else 
      '~~> E = E + D 
      aCell.Offset(, 1).Value = aCell.Offset(, 1).Value + aCell.Value 
     End Select 
    Next 
End Sub 
+0

太棒了!我无法想出一个方法来说这个,这里有两种不同的格式!我认为我更喜欢使用Case(s),但主要是因为这只是我需要编写的更大代码的一个组件。谢谢你给我展示的方式! – user1941320 2013-03-28 12:15:34

0

试试下面的代码:

Sub PopCol() 
    For i = 3 To 19 
     Range("D" & i) = CLng(Range("C" & i) - Range("B" & i)) 
     If (Range("D" & i) < 0) Then 
      Range("F" & i) = Range("D" & i) + Range("F" & i) 
     Else 
      Range("E" & i) = Range("E" & i) + Range("D" & i) 
     End If 
    Next 
End Sub 
+0

这真是太棒了 - 我讨厌我只是不知道如何说话才能完成任务! – user1941320 2013-03-28 12:13:26

+0

@ user1941320请接受/投票解决方案。 – 2013-03-28 12:17:16