2017-02-10 6 views
-2

Picture of excel sheet困難なコードが

これは日の一部に、何の取引が発生しないので、株式の価格(リターン)がないことを意味し、薄く取引株式の一例であるが返されます変更(たとえ在庫が実際の価値を変えるかもしれないが)。したがって、日々の間のリターンを赤でマークされたセルに分割する必要があります。例:在庫Aを参照してください。範囲(B3:B6)から在庫の返品額は20%ですが、この返品を4日間に均等に分割したいと考えています。上の図を参照してください。

各列では、列内のゼロとは異なる次の数値の平均で、すべての赤色のマーキングされたセル(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