Прошу всех кто знает помочь. Необходимо создать пользовательскую функцию, которая будет работать согласно прописанной формуле в макросе. Внутри файла стоит формула. Необходимо ее прописать в макросе и сохранить как пользовательскую функцию, чтобы при наведении на код сразу отображался результат. Данная пользовательская функция необходима, чтобы файл меньше зависал из за длинной формулы, так как список большой. Спасибо
Добрый день,
Прошу всех кто знает помочь. Необходимо создать пользовательскую функцию, которая будет работать согласно прописанной формуле в макросе. Внутри файла стоит формула. Необходимо ее прописать в макросе и сохранить как пользовательскую функцию, чтобы при наведении на код сразу отображался результат. Данная пользовательская функция необходима, чтобы файл меньше зависал из за длинной формулы, так как список большой. СпасибоАналитик2012
- Прочитайте Правила форума - Исправьте название темы согласно п.2 Правил форума, конкретнее обозначьте проблему - Что в Вашем понимании означает "при наведении на код сразу отображался результат"? - Насколько большлй список в Лист2? Сколько примерно строк?
- Прочитайте Правила форума - Исправьте название темы согласно п.2 Правил форума, конкретнее обозначьте проблему - Что в Вашем понимании означает "при наведении на код сразу отображался результат"? - Насколько большлй список в Лист2? Сколько примерно строк?_Boroda_
. Хотелось бы прописать эту формулу в макросе создав пользовательскую функцию с одним аргументом (Code). К примеру назвать функцию "Категория" и указать код внутри функции и сразу вышел результат. - в листе 2 данные идут с пополнением (сейчас около 4000) и с каждым разом будет больше. Плюс столбцов больше по которым нужно установить пользовательскую функцию для вытягивания данных. Надеюсь, что смог объяснить в правильной форме.
_Boroda_,
- по первому пункту подкорректировал - по второму вашему вопросу: сейчас в листе 1 в ячейке С6 стоит формула
. Хотелось бы прописать эту формулу в макросе создав пользовательскую функцию с одним аргументом (Code). К примеру назвать функцию "Категория" и указать код внутри функции и сразу вышел результат. - в листе 2 данные идут с пополнением (сейчас около 4000) и с каждым разом будет больше. Плюс столбцов больше по которым нужно установить пользовательскую функцию для вытягивания данных. Надеюсь, что смог объяснить в правильной форме.Аналитик2012
Сообщение отредактировал Аналитик2012 - Среда, 26.06.2019, 10:43
Тема: Подтягивание дополнительных данных по событию ввода данных (ключа). Аналитик2012, пользовательская функция так же будет тормозить - разницы не будет. Вам нужно использовать подтягивание данных по событию (ввода кода).
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False Application.EnableEvents = False If Target.Count <> 1 Then Exit Sub If Target.Column = 2 And Target.Row > 5 Then If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0)) Then Target.Offset(, 1).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0) Else Target.Offset(, 1).Value = "проверить код" End If End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub
[/vba]
Тема: Подтягивание дополнительных данных по событию ввода данных (ключа). Аналитик2012, пользовательская функция так же будет тормозить - разницы не будет. Вам нужно использовать подтягивание данных по событию (ввода кода).
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False Application.EnableEvents = False If Target.Count <> 1 Then Exit Sub If Target.Column = 2 And Target.Row > 5 Then If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0)) Then Target.Offset(, 1).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0) Else Target.Offset(, 1).Value = "проверить код" End If End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub
skais, Спасибо большое. Только почему то при заполнении кода выходит рядом один результат "проверить код", хотя данная информация имеется в листе2. Можете пжл посмотреть
skais, Спасибо большое. Только почему то при заполнении кода выходит рядом один результат "проверить код", хотя данная информация имеется в листе2. Можете пжл посмотретьАналитик2012
Сообщение отредактировал Аналитик2012 - Среда, 26.06.2019, 10:34
Boroda_ я в курсе на свой манер, потому и сразу тему предложил - это для исправления первого замечания. А по второму, учитывая что автор прислушался к Вам, то второе замечание очевидно было, что исправит. То есть автор - порядочный. Но учту!
Boroda_ я в курсе на свой манер, потому и сразу тему предложил - это для исправления первого замечания. А по второму, учитывая что автор прислушался к Вам, то второе замечание очевидно было, что исправит. То есть автор - порядочный. Но учту!skais
Сообщение отредактировал skais - Среда, 26.06.2019, 11:19
Ваш "манер", предположения и попытки объяснений совершенно неинтересны. Про помощь в темах с нарушениями Правил не раз уже писали и все уже давно обговорили. Впрочем, как хотите. Я предупредил
Ваш "манер", предположения и попытки объяснений совершенно неинтересны. Про помощь в темах с нарушениями Правил не раз уже писали и все уже давно обговорили. Впрочем, как хотите. Я предупредил
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False Application.EnableEvents = False If Target.Count <> 1 Then Exit Sub If Target.Column = 2 And Target.Row > 5 Then If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0)) Then Target.Offset(, 1).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0) Else Target.Offset(, 1).Value = "проверить код"
If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 3, 0)) Then Target.Offset(, 2).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 3, 0) Else Target.Offset(, 2).Value = "проверить код"
End If End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub
[/vba]
можете подсказать, что неправильно записал? Думал, что в тело потом включи еще те столбцы, которые должны заполняться, но не работает.
skais, [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False Application.EnableEvents = False If Target.Count <> 1 Then Exit Sub If Target.Column = 2 And Target.Row > 5 Then If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0)) Then Target.Offset(, 1).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 2, 0) Else Target.Offset(, 1).Value = "проверить код"
If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 3, 0)) Then Target.Offset(, 2).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:C"), 3, 0) Else Target.Offset(, 2).Value = "проверить код"
End If End If Application.EnableEvents = True Application.ScreenUpdating = True End Sub
[/vba]
можете подсказать, что неправильно записал? Думал, что в тело потом включи еще те столбцы, которые должны заполняться, но не работает.Аналитик2012
Сообщение отредактировал Аналитик2012 - Среда, 26.06.2019, 11:52
в 12 строке неверно указан диапазон, нужно B:D! и end if тоже не на своем месте.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False Application.EnableEvents = False If Target.Count <> 1 Then Exit Sub If Target.Column = 2 And Target.Row > 5 Then If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 2, 0)) Then Target.Offset(, 1).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 2, 0) Target.Offset(, 2).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 3, 0) Else Target.Offset(, 1).Value = "проверить код" Target.Offset(, 2).Value = "проверить код" End If
Application.EnableEvents = True Application.ScreenUpdating = True End Sub
[/vba]
в 12 строке неверно указан диапазон, нужно B:D! и end if тоже не на своем месте.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Application.ScreenUpdating = False Application.EnableEvents = False If Target.Count <> 1 Then Exit Sub If Target.Column = 2 And Target.Row > 5 Then If Not IsError(Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 2, 0)) Then Target.Offset(, 1).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 2, 0) Target.Offset(, 2).Value = Application.VLookup(Target.Value, Sheets("Лист2").Range("B:D"), 3, 0) Else Target.Offset(, 1).Value = "проверить код" Target.Offset(, 2).Value = "проверить код" End If
Application.EnableEvents = True Application.ScreenUpdating = True End Sub