Написание текстового сообщения (с условиями) - VBA

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, как можно написать текстовое сообщение в экселе по условию? например, есть таблица
ФИО наименование янв.16 фев.16 мар.16 апр.16 май.16
чел1 показатель1 1 2 3 2 1
чел1 показатель2 3 3 3 3 3
чел1 показатель3 3 3 3 3 3
чел1 показатель4 3 3 3 3 3
чел1 показатель5 3 3 3 3 3
чел1 показатель6 5 4 3 5 6
чел1 показатель7 2 1 1 1 1
чел2 показатель1 3 3 3 3 3
чел2 показатель2 3 3 3 3 3
чел2 показатель6 3 3 3 3 3
как написать текст по условию максимального значения последнего месяца, т.е. код должен определить максимальное значение по показателю 6 в последнем месяце и написать например такой текст в пустой ячейке где нибудь снизу "Максимальное значение по показателю 6 наблюдается у чел1 - 6 ведер в май.16 " - т.е. 4 ячейки по условию должны попасть в текст - и пожалуйста, расшифруйте свой код, чтоб мне легче разобраться было - где условия и т.п.

Решение задачи: «Написание текстового сообщения (с условиями)»

textual
Листинг программы
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 16.09.2016 (User)
'
 
    firstRow = 6 'Первая строка
    lastRow = 15 'Последняя строка
    
    lastMonthColumn = 6 'Колонка последнего месяца
    pocazatelColumn = 2 'Колонка имен показателей
    pocazatelNumber = 6 'Номер показателя
    chelColumn = 1 'Колонка человеков
    
    maxValRow = 0 'строка, содержащая максимальное значение, будем ее искать
    maxValue = 0 'максимальное значение
    
    For r = firstRow To lastRow 'Цикл от первой до последней строки
        
        'В текущей строке r в колонке показателя проверяем что это нужный нам показатель
        If Лист1.Cells(r, pocazatelColumn).Value = "показатель" + Trim(Str(pocazatelNumber)) Then
            
            currValue = Лист1.Cells(r, lastMonthColumn).Value 'Получаем значение из колонки последней месяца
            
            If currValue > maxValue Then 'Сравниваем значение с максимальным
                
                maxValue = currValue 'если больше то запоминаем максимальное значение
                maxValRow = r 'и запоминаем номер строки, где это значение найдено
                
            End If
            
        End If
            
    Next
    
    chel = Лист1.Cells(maxValRow, chelColumn).Value 'считываем человека из колонки людей в максимальной строке
    veder = maxValue 'присваиваем переменной veder количество ведер из MaxValue
    monthTitle = Лист1.Cells(firstRow - 1, lastMonthColumn).Value 'Считываем значение месяца из
        'строки предшествующей первой и колонки последнего месяца
    
    'осталось лишь сплюсовать это все в активную ячейку
    ActiveCell.Value = "Наибольшее значение по показателю " + _
        Trim(Str(pocazatelNumber)) + " наблюдается у " + chel + _
        " -" + Str(veder) + " ведер " + " в " + Format(monthTitle, "mmm yyyy")
    
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5