Здравствуйте! Подскажите пожалуйста как можно автоматически обновить лист при поступлении новых данных и в чем у меня возможная ошибка. Описание на скриншоте.
Сам код, не знаю в чем ошибка. Спец. я довольно слабый пока.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, j As Integer 'Application.Calculate 'If Not Intersect(Target, Range("C2:C21")) Is Nothing Then 'Application.EnableEvents = False
For j = 1 To Cells(2, 12).Value For i = 1 To 20
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then If Cells(1 + i, 1).Value <> 0 Then Cells(1 + j, 5).Value = Cells(1 + j, 5).Value + Cells(1 + i, 1).Value Cells(1 + i, 1).Value = 0 End If End If Next Next 'Application.EnableEvents = True 'End If
' If Not Intersect(Target, Range("A2:A21")) Is Nothing Then ' Application.EnableEvents = False For i = 1 To 20 For j = 1 To Cells(2, 12).Value If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then If Cells(1 + i, 3).Value <> 0 Then Cells(1 + j, 7).Value = Cells(1 + j, 7).Value + Cells(1 + i, 3).Value Cells(1 + i, 3).Value = 0 End If End If Next Next 'Application.EnableEvents = True 'End If End Sub
[/vba]
И сам файл.
Здравствуйте! Подскажите пожалуйста как можно автоматически обновить лист при поступлении новых данных и в чем у меня возможная ошибка. Описание на скриншоте.
Сам код, не знаю в чем ошибка. Спец. я довольно слабый пока.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer, j As Integer 'Application.Calculate 'If Not Intersect(Target, Range("C2:C21")) Is Nothing Then 'Application.EnableEvents = False
For j = 1 To Cells(2, 12).Value For i = 1 To 20
If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then If Cells(1 + i, 1).Value <> 0 Then Cells(1 + j, 5).Value = Cells(1 + j, 5).Value + Cells(1 + i, 1).Value Cells(1 + i, 1).Value = 0 End If End If Next Next 'Application.EnableEvents = True 'End If
' If Not Intersect(Target, Range("A2:A21")) Is Nothing Then ' Application.EnableEvents = False For i = 1 To 20 For j = 1 To Cells(2, 12).Value If Cells(1 + j, 6).Value = Cells(1 + i, 2).Value Then If Cells(1 + i, 3).Value <> 0 Then Cells(1 + j, 7).Value = Cells(1 + j, 7).Value + Cells(1 + i, 3).Value Cells(1 + i, 3).Value = 0 End If End If Next Next 'Application.EnableEvents = True 'End If End Sub
У Вас в столбце Страйк числа с 12-13 знаками после запятой, а в столбце Цена - с 2 знаками. Похоже, их никак не сравнить. Страйк можно округлить до 2-х знаков?
У Вас в столбце Страйк числа с 12-13 знаками после запятой, а в столбце Цена - с 2 знаками. Похоже, их никак не сравнить. Страйк можно округлить до 2-х знаков?nilem
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A2:C21")) Is Nothing Then Exit Sub Dim j As Long, r As Range: Application.EnableEvents = False With Columns(6) For Each r In Target.Cells j = r.Column If j <> 2 Then With .Find(Cells(r.Row, 2), lookat:=xlWhole)(1, IIf(j = 1, 0, 2)) .Value = .Value + r End With End If Next End With Application.EnableEvents = True End Sub
[/vba]
вот так попробуйте [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A2:C21")) Is Nothing Then Exit Sub Dim j As Long, r As Range: Application.EnableEvents = False With Columns(6) For Each r In Target.Cells j = r.Column If j <> 2 Then With .Find(Cells(r.Row, 2), lookat:=xlWhole)(1, IIf(j = 1, 0, 2)) .Value = .Value + r End With End If Next End With Application.EnableEvents = True End Sub
Это поправимо Только сначала надо выяснить. Ошибка происходит, потому что в столбце Страйк нет значения из столбца Цена. По условиям вашей работы возможно такое несоответствие между Цена и Страйк?
Это поправимо Только сначала надо выяснить. Ошибка происходит, потому что в столбце Страйк нет значения из столбца Цена. По условиям вашей работы возможно такое несоответствие между Цена и Страйк?nilem