2017-02-10 62 views
-2

Picture of excel sheet困難的代碼到大張的股票返回

這是一個薄交易股票的一個例子,這意味着在一些天,不發生的交易,因此,價格(返回)的股票不改變(儘管股票在現實生活中可能會改變價值)。因此,我們必須將日子之間的回報分成標有紅色的單元格。示例:參見股票A.從範圍(B3:B6),股票的回報等於20%,但是,我們希望將回報平均分配到四天。見上圖。

在每一列中,我希望每個紅色標記的單元格(等於0%)填充列中不同於零的下一個數的平均值(每天沒有交易的平均值)。

爲了使它更加棘手,我想改變你找到的平均數的單元格值,以及等於平均數。

圖片只是一個例子 - 我們在另一張紙上有超過5000只股票。

回答

0

你可以試試這個

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 
+0

謝謝!我會試試:) – KH321

+0

不客氣。讓我知道。 – user3598756