На листе около 2000 записей, если записей менее 1000 то формула работает корректно, а вот после 1000 записи при внесении новго значения формула перестает работать, более того если кликнуть по ячейке с формулой и нажать Энтер, то данные подгружаются (т.е. формула срабатывает). Если записей слишком много то формула перестает работать, удаление всех записей в таблице не помогает, формула все равно не работает автоматически, только после ее активации. Из-за чего я пришел к выводу, что нужно запилить формулу на лист. Но дело в том, что диапазон откуда идет выбор динамический. И Я не могу сообразить Как заставить VBA Именованный диапазон Из столбца D преобразовать в именованный диапазон + символ "т", из из этого преобразованного диапазона произвести выбор ВПР. Думаю нужно использовать что то типо этого [vba]
[/vba] , но вот как заставить выборку проводить по именованному диапазону мозгов не хватает.
Добрый день. Есть формула в ячейке
Код
=ВПР($E451;ДВССЫЛ($D451&""&"т");2;ЛОЖЬ)
На листе около 2000 записей, если записей менее 1000 то формула работает корректно, а вот после 1000 записи при внесении новго значения формула перестает работать, более того если кликнуть по ячейке с формулой и нажать Энтер, то данные подгружаются (т.е. формула срабатывает). Если записей слишком много то формула перестает работать, удаление всех записей в таблице не помогает, формула все равно не работает автоматически, только после ее активации. Из-за чего я пришел к выводу, что нужно запилить формулу на лист. Но дело в том, что диапазон откуда идет выбор динамический. И Я не могу сообразить Как заставить VBA Именованный диапазон Из столбца D преобразовать в именованный диапазон + символ "т", из из этого преобразованного диапазона произвести выбор ВПР. Думаю нужно использовать что то типо этого [vba]
Sub ttt() Dim r As Range With Range("A2:C" & Cells(Rows.Count, 1).End(xlUp).Row) For Each r In .Columns(3).Cells r.FormulaR1C1 = "=vlookup(RC2," & r(1, -1).Value & "т" & ",2,0)" Next r End With End Sub
[/vba]
может как-то так: [vba]
Код
Sub ttt() Dim r As Range With Range("A2:C" & Cells(Rows.Count, 1).End(xlUp).Row) For Each r In .Columns(3).Cells r.FormulaR1C1 = "=vlookup(RC2," & r(1, -1).Value & "т" & ",2,0)" Next r End With End Sub
nilem, спасибо но это не совсем подходит, данная формула заполняет все ячейки только после запуска макроса, можно ли его как то запускать автоматически. Прост когда вносятся данные нужно что бы номера сразу же отображались. А данном примере получается, что сначала заполняешь всю таблицу данными и только потом отображаются номера. Можно как то это форму адаптировать на воркшетс? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("С:С")) Is Nothing Then
[/vba] Вот как то так запилить, я пробовал но у меня ругается код...
nilem, спасибо но это не совсем подходит, данная формула заполняет все ячейки только после запуска макроса, можно ли его как то запускать автоматически. Прост когда вносятся данные нужно что бы номера сразу же отображались. А данном примере получается, что сначала заполняешь всю таблицу данными и только потом отображаются номера. Можно как то это форму адаптировать на воркшетс? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("С:С")) Is Nothing Then
[/vba] Вот как то так запилить, я пробовал но у меня ругается код...Kamikadze_N
код не ругается, а мягко так намекает, мол, попробуйте по-другому: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column > 2 Then Exit Sub If Target.Count > 1 Then Exit Sub If Len(Cells(Target.Row, 1)) * Len(Cells(Target.Row, 2)) Then Cells(Target.Row, 3).FormulaR1C1 = "=vlookup(RC2," & Cells(Target.Row, 1).Value & "т" & ",2,0)" End If End Sub
[/vba]
код не ругается, а мягко так намекает, мол, попробуйте по-другому: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column > 2 Then Exit Sub If Target.Count > 1 Then Exit Sub If Len(Cells(Target.Row, 1)) * Len(Cells(Target.Row, 2)) Then Cells(Target.Row, 3).FormulaR1C1 = "=vlookup(RC2," & Cells(Target.Row, 1).Value & "т" & ",2,0)" End If End Sub