困难的代码到大张的股票返回
问题描述:
这是一个薄交易股票的一个例子,这意味着在一些天,不发生的交易,因此,价格(返回)的股票不改变(尽管股票在现实生活中可能会改变价值)。因此,我们必须将日子之间的回报分成标有红色的单元格。示例:参见股票A.从范围(B3:B6),股票的回报等于20%,但是,我们希望将回报平均分配到四天。见上图。
在每一列中,我希望每个红色标记的单元格(等于0%)填充列中不同于零的下一个数的平均值(每天没有交易的平均值)。
为了使它更加棘手,我想改变你找到的平均数的单元格值,以及等于平均数。
图片只是一个例子 - 我们在另一张纸上有超过5000只股票。
答
你可以试试这个
Sub main()
Dim col As Range, zerosRng As Range, area As Range
With Worksheets("Stocks") '<--| change "Stocks" to your actual worksheet name
For Each col In Intersect(.UsedRange, .Range("C1", .Cells(1, .Columns.count).End(xlToLeft)).SpecialCells(xlCellTypeConstants, xlTextValues).EntireColumn).Columns
With col
.AutoFilter field:=1, Criteria1:="0%"
If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then
Set zerosRng = .Resize(.Rows.count - 1).Offset(1).SpecialCells(xlCellTypeVisible)
.Parent.AutoFilterMode = False
For Each area In zerosRng.Areas
area.Resize(area.Rows.count + 1).Value = area.Cells(area.Rows.count + 1, 1).Value/(area.Rows.count + 1)
Next
End If
End With
Next
End With
End Sub
谢谢!我会试试:) – KH321
不客气。让我知道。 – user3598756