0

我有一个代码可以满足我的需要。问题是我必须手动进行范围选择我想创建一个条件循环。

这是我到目前为止使用的代码

Sub Worksheet_functions()
    Dim Sumtotal As Long
    Sumtotal = WorksheetFunction.Sum(Selection)
    Range("e2").Value = Sumtotal
    Range("h2").Value = Range("e2") + Range("h2")
End Sub

这就是我的数据的样子

         Price Volume     E   H
          10    100
          10    50
          10    80
          9     100
          9     50
          8     100
          8     100
          10    50
          10    250

目前,我正在根据价格列中的值从上到下手动选择交易量列。

条件是

  1. 如果价格相同,请继续选择它们,直到它们不同

  2. 如果价格下跌,那么这些选定的单元格应在 e4 中求和并添加到 h4

  3. 如果价格上涨,那么这些选定的单元格应在 e2 中求和并添加到 h4

对于我的示例,这看起来像:

              ( H2: 100+50+80  +50+250 = 530 )
              ( H4: 100+50  +100+100   = 350 )

               Price Volume     
               ( 10    100               
   100+50+80 < ( 10    50                
               ( 10    80
           Above volume to H2
                (9     100               
     100+50   < (9     50
           Above volume to H4 ( because 10>9)
                (8     100
      100+100 < (8     100
            Above volume to H4 ( because 9>8)    
                (10    50
       50+250 < (10    250              
             Above volume to H2 ( because 8<10)

关于任何建议

  1. 如何使用条件使其循环?

  2. 如何编写考虑到最后价格的代码?

4

1 回答 1

0

这是一种得到你想要的东西的方法。
创建loopNested If's做到这一点非常困难。
我让Excel做这项工作并Formula改为使用。

假设您的数据位于A1:B10.

E2编辑栏中输入这个。

=IF(A2=A3,IF(ISNUMBER(A1),IF(A1<A2,1,IF(A1=A2,E1,0)),1),IF(ISNUMBER(A1),IF(A1<A2,1,IF(A1=A2,E1,0)),1))

一直复制公式,直到E10或直到您拥有数据的位置。

H2中,在公式栏中键入:

=SUMIF(E:E,1,B:B)

同样H4,在编辑栏中键入:

=SUMIF(E:E,0,B:B)

但是,您想要下面的 VBA 代码也使用上面的公式:

Dim ws as Worksheet, lrow as long

Set ws = Thisworkbook.Sheets("Sheet1")'assuming your data is in Sheet1

With ws
    lrow = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("E2:E" & lrow).Formula = "=IF(A2=A3,IF(ISNUMBER(A1),IF(A1<A2,1,IF(A1=A2,E1,0)),1),IF(ISNUMBER(A1),IF(A1<A2,1,IF(A1=A2,E1,0)),1))"
    .Range("E2:E" & lrow).Value = .Range("E2:E" & lrow).Value
    .Range("H2").Formula = "=SUMIF(E:E,1,B:B)"
    .Range("H2").Value = .Range("H2").Value
    .Range("H4").Formula = "=SUMIF(E:E,0,B:B)"
    .Range("H4").Value = .Range("H4").Value
End With

End Sub

有点晚了,但我希望这是你想要的。

于 2013-11-19T05:16:14.413 回答