Код |
---|
Option Explicit
Private Sub Worksheet_Calculate()
Dim rng_history As Range, c_rows As Byte, cnt As Byte, tmp
If Len([A2].Value) = 0 Then Exit Sub
Application.EnableEvents = False
Set rng_history = [B2:B11]
c_rows = rng_history.Rows.Count
On Error Resume Next
cnt = rng_history.SpecialCells(xlCellTypeConstants).Count
On Error GoTo 0
If cnt = 0 Then
rng_history.Resize(1).Value = [A2].Value
Else
tmp = rng_history.Resize(1).Offset(-1).End(xlDown).Value
If [A2].Value <> tmp Then
If c_rows = cnt Then rng_history.Resize(1).Delete shift:=xlShiftUp
rng_history.Resize(1).Offset(-1).End(xlDown).Offset(1).Value = [A2].Value
End If
End If
Application.EnableEvents = True
End Sub |
Понимающие помогите поправить , работает нормально , но зависает когда данные доходят до ячейки B11 , и если возможно сделать три ячейки такого типа которые сдвигают значение , и не плохо бы среднее значение у каждого своё. Пробовал менял
Код |
---|
Set rng_history = [B2:B11] |
на
Код |
---|
Set rng_history = [B2:B1000] |
виснет на том же месте B11 .
Значений нужно не меньше 1000 сдвигов , так сказать .