Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Реализация в VBA: ВПР + МАКС_ЕСЛИ - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Реализация в VBA: ВПР + МАКС_ЕСЛИ (Макросы/Sub)
Реализация в VBA: ВПР + МАКС_ЕСЛИ
Allock Дата: Среда, 01.07.2015, 18:16 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 1
Репутация: 0 ±
Замечаний: 20% ±

Excel 2013
Добрый день.

Сразу оговорюсь, что с VBA мое знакомство длится чуть более 2-х недель, поэтому каких-то (пусть даже самых элементарных) вещей могу не знать :)

Есть задача, которую при помощи формул я решил. Подробное описание задачи и решение во вложенном файле.

Возникло желание реализовать это решение в VBA.

Аналог "МАКС_ЕСЛИ" я вроде был написал:



А вот что делать дальше - не понятно.

P.S. Предвосхищая вопросы типа "а зачем тебе это вообще надо в VBA, когда это можно сделать средствами самого excel?!" скажу, что интересно разобраться.
К сообщению приложен файл: Allock--VlookUP.xlsm (92.6 Kb)


Сообщение отредактировал Manyasha - Среда, 01.07.2015, 18:47
 
Ответить
СообщениеДобрый день.

Сразу оговорюсь, что с VBA мое знакомство длится чуть более 2-х недель, поэтому каких-то (пусть даже самых элементарных) вещей могу не знать :)

Есть задача, которую при помощи формул я решил. Подробное описание задачи и решение во вложенном файле.

Возникло желание реализовать это решение в VBA.

Аналог "МАКС_ЕСЛИ" я вроде был написал:



А вот что делать дальше - не понятно.

P.S. Предвосхищая вопросы типа "а зачем тебе это вообще надо в VBA, когда это можно сделать средствами самого excel?!" скажу, что интересно разобраться.

Автор - Allock
Дата добавления - 01.07.2015 в 18:16
Kuzmich Дата: Среда, 01.07.2015, 19:04 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 712
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
реализовать это решение в VBA

Попробуйте так
Макрос в модуль листа Задание, при изменении культуры в ячейке С17 подставляется
значение урожайности, интересно - разбирайтесь
[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Kultura As String
Dim FoundKultura As Range
Dim FirstAdr As String
Dim iRow As Long
Dim iDate As Date
Dim MaxDate As Date
     If Target.Cells.Count > 1 Then Exit Sub 'выделено больше одной ячейки
     If Not Intersect(Target, Range("C17")) Is Nothing Then
       Application.EnableEvents = False
         Kultura = Target
        Set FoundKultura = Columns("B").Find(Kultura, , xlValues, xlWhole)
         If Not FoundKultura Is Nothing Then
                FirstAdr = FoundKultura.Address
                iRow = FoundKultura.Row
             Do
              iDate = Cells(FoundKultura.Row, 1)
              If iDate > MaxDate Then MaxDate = iDate: iRow = FoundKultura.Row
                 Set FoundKultura = Columns("B").FindNext(FoundKultura)
             Loop While FoundKultura.Address <> FirstAdr
         End If
     End If
       Range("D17") = Cells(iRow, 3)
       Application.EnableEvents = True
End Sub
[/vba]
 
Ответить
Сообщение
Цитата
реализовать это решение в VBA

Попробуйте так
Макрос в модуль листа Задание, при изменении культуры в ячейке С17 подставляется
значение урожайности, интересно - разбирайтесь
[vba]
Код

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Kultura As String
Dim FoundKultura As Range
Dim FirstAdr As String
Dim iRow As Long
Dim iDate As Date
Dim MaxDate As Date
     If Target.Cells.Count > 1 Then Exit Sub 'выделено больше одной ячейки
     If Not Intersect(Target, Range("C17")) Is Nothing Then
       Application.EnableEvents = False
         Kultura = Target
        Set FoundKultura = Columns("B").Find(Kultura, , xlValues, xlWhole)
         If Not FoundKultura Is Nothing Then
                FirstAdr = FoundKultura.Address
                iRow = FoundKultura.Row
             Do
              iDate = Cells(FoundKultura.Row, 1)
              If iDate > MaxDate Then MaxDate = iDate: iRow = FoundKultura.Row
                 Set FoundKultura = Columns("B").FindNext(FoundKultura)
             Loop While FoundKultura.Address <> FirstAdr
         End If
     End If
       Range("D17") = Cells(iRow, 3)
       Application.EnableEvents = True
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 01.07.2015 в 19:04
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Реализация в VBA: ВПР + МАКС_ЕСЛИ (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!