Соответственно они протянуты со второй строки и пока до 1500. в Месяц лист прибавляет по 300-400 строк. Как я себе представляю код можно вставить в модуль листа, что бы при изменении в ячейках столбца D в соответствующую ячейку столбца Е попадал результат вычисления первой функции, и при изменениях в столбцах F или G результат попадал в столбца Н соответствующего ряда
Прошу помочь
Уважаемые спецы! Хочу разгрузить лист от обилия однотипных формул, прошу подсказать как спрятать все вычисления в VBA
Соответственно они протянуты со второй строки и пока до 1500. в Месяц лист прибавляет по 300-400 строк. Как я себе представляю код можно вставить в модуль листа, что бы при изменении в ячейках столбца D в соответствующую ячейку столбца Е попадал результат вычисления первой функции, и при изменениях в столбцах F или G результат попадал в столбца Н соответствующего ряда
Литр, Файл пример бы от вас по структуре ориганла и несколько строк с данными (импровизированными) для тестирования. Лень самому создавать пример.
Литр, Файл пример бы от вас по структуре ориганла и несколько строк с данными (импровизированными) для тестирования. Лень самому создавать пример.MikeVol
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long If Target.Column = 4 Then i = Application.Match(Target.Value, Sheets("СПИСОК").Range("A1:A100"), 0) If i > 0 Then Range("E" & Target.Row) = Range("B" & i).Value End If If Not Intersect(Target, Columns("F:G")) Is Nothing Then If Range("F" & Target.Row) <> "" And Range("G" & Target.Row) <> "" Then Range("H" & Target.Row) = Range("F" & Target.Row).Value & " - " & Range("G" & Target.Row).Value End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long If Target.Column = 4 Then i = Application.Match(Target.Value, Sheets("СПИСОК").Range("A1:A100"), 0) If i > 0 Then Range("E" & Target.Row) = Range("B" & i).Value End If If Not Intersect(Target, Columns("F:G")) Is Nothing Then If Range("F" & Target.Row) <> "" And Range("G" & Target.Row) <> "" Then Range("H" & Target.Row) = Range("F" & Target.Row).Value & " - " & Range("G" & Target.Row).Value End If End Sub
gling, вторая часть с функцией СЦЕПИТЬ - работает как положено, а вот с первой частью с ПОИСКПОЗ из листа СПИСОК что то не так. Во вложенном примере в лист 2026 в Е2 должно быть значение из СПИСОК В7
gling, вторая часть с функцией СЦЕПИТЬ - работает как положено, а вот с первой частью с ПОИСКПОЗ из листа СПИСОК что то не так. Во вложенном примере в лист 2026 в Е2 должно быть значение из СПИСОК В7Литр
gling, как исправить: при выборе из выпадающего списка из колонки 4 (D) или при удалении из нее неверно введеного значения появляется ошибка VBA run time error 13
gling, как исправить: при выборе из выпадающего списка из колонки 4 (D) или при удалении из нее неверно введеного значения появляется ошибка VBA run time error 13Литр
Private Sub Worksheet_Change(ByVal Target As Range) If Target.CountLarge > 1 Then Exit Sub
If Target.Column = 4 Then
Dim res As Variant res = Application.Match(Target.Value, ThisWorkbook.Worksheets("СПИСОК").Range("A1:A100"), 0)
If Not IsError(res) Then Range("E" & Target.Row).Value = ThisWorkbook.Worksheets("СПИСОК").Range("B" & res).Value Else Range("E" & Target.Row).ClearContents End If
End If
If Not Intersect(Target, Columns("F:G")) Is Nothing Then If Range("F" & Target.Row) <> "" And Range("G" & Target.Row) <> "" Then Range("H" & Target.Row) = Range("F" & Target.Row).Value & " - " & Range("G" & Target.Row).Value End If
End Sub
[/vba]
[vba]
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) If Target.CountLarge > 1 Then Exit Sub
If Target.Column = 4 Then
Dim res As Variant res = Application.Match(Target.Value, ThisWorkbook.Worksheets("СПИСОК").Range("A1:A100"), 0)
If Not IsError(res) Then Range("E" & Target.Row).Value = ThisWorkbook.Worksheets("СПИСОК").Range("B" & res).Value Else Range("E" & Target.Row).ClearContents End If
End If
If Not Intersect(Target, Columns("F:G")) Is Nothing Then If Range("F" & Target.Row) <> "" And Range("G" & Target.Row) <> "" Then Range("H" & Target.Row) = Range("F" & Target.Row).Value & " - " & Range("G" & Target.Row).Value End If