我有一个代码可以满足我的需求。问题是我必须手动进行范围选择我想创建一个条件循环。
这是我到目前为止使用的代码
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
目前,我是根据价格列中的值从上到下手动选择音量列。
条件是
如果价格相同,请继续选择它们,直到它们不是
如果价格下降,那么这些选定的单元格应该在e4中加总并添加到h4
如果价格上涨,那么这些选定的单元格应该在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)
有关
的任何建议如何使用条件使其循环?
如何编写考虑最后价格的代码?
答案 0 :(得分:0)
这是获得你想要的东西的方法
要创建loop
和Nested 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
有点迟了,但我希望这就是你想要的。