Написание текстового сообщения (с условиями) - VBA
Формулировка задачи:
Подскажите пожалуйста, как можно написать текстовое сообщение в экселе по условию?
например, есть таблица
как написать текст по условию максимального значения последнего месяца, т.е. код должен определить максимальное значение по показателю 6 в последнем месяце и написать например такой текст в пустой ячейке где нибудь снизу "Максимальное значение по показателю 6 наблюдается у чел1 - 6 ведер в май.16 " - т.е. 4 ячейки по условию должны попасть в текст - и пожалуйста, расшифруйте свой код, чтоб мне легче разобраться было - где условия и т.п.
ФИО | наименование | янв.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 |
Решение задачи: «Написание текстового сообщения (с условиями)»
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д