Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
0 / 0 / 0
Регистрация: 16.08.2018
Сообщений: 2
1
Excel

Выполнение макроса для определенного диапазона ячеек

16.08.2018, 15:01. Показов 5486. Ответов 2

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть таблица с графиком поверки приборов.
Написал макрос, который считает дату проведения следующего ТО для ячейки "S3"
Для расчета берутся значения:
Текущая дата - Ячейка "W1"
Межповерочный интервал - Ячейка "P3"
Дата последней поверки - Ячейка "O3"

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Macros()
 
'Расчет для 1 года
    If [P3] = 1 Then
'Первые 6 месяцев
    If [W1] - 203 < [O3] Then
    [S3].Formula = "=O3+203"
        Else
'Первый год
    If [W1] - 385 < [O3] Then
    [S3].Formula = "=O3+385"
        Else
    [S3] = "Просрочен"
        End If
        End If
End If
End Sub
Подскажите как посчитать значения для всего диапазона S3:S1547
Для расчета диапазона берутся значения:
Текущая дата - Ячейка "W1"
Межповерочный интервал - Диапазон "P3:P1547"
Дата последней поверки - Диапазон "O3:O1547"
Спасибо!
Вложения
Тип файла: xls ППР.xls (39.9 Кб, 12 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2018, 15:01
Ответы с готовыми решениями:

Выполнение макроса для всех ячеек столбца Excel
Здравствуйте! Мне нужно сделать так что бы макрос выполнялся для всех ячеек столбца. Этот пример...

Передача диапазона ячеек в формулу макроса
Хочу в макросе в выбранную ячейку вставить двойную формулу &quot;=СТАНДОТКЛОН(диапазон) /...

Сделать кнопку в excel с помощью basic, которая будет считать сумму определенного диапазона ячеек
Здравствуйте, прошу у вас помощи... Нужно сделать кнопку в excel с помощью basic, которая будет...

Выделение диапазона для запуска макроса
У меня такой вопрос: Есть простой макрос, выполняющий разбивку текст по столбцам. Но, нужно...

2
94 / 37 / 15
Регистрация: 02.04.2015
Сообщений: 235
16.08.2018, 18:18 2
Лучший ответ Сообщение было отмечено Miro20072 как решение

Решение

Miro20072, Все тоже самое, но обращайся к ячейкам не через квадратные скобки, а вот так, используя цикл:
Visual Basic
1
2
3
4
5
For i = 3 To 1547
If [W1] - 203 < Cells(i, "O") Then
  Cells(i, "S") = Cells(i, "O") + 385
End If
Next i
Это только для одного условия. Для остальных, я думаю, сами напишите.
1
0 / 0 / 0
Регистрация: 16.08.2018
Сообщений: 2
17.08.2018, 10:25  [ТС] 3
Спасибо большое, все работает
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Sub Macros()
'Первые 6 месяцев
For i = 3 To 1547
'Расчет для 1 года
    If Cells(i, "P") = 1 Then
    If [W1] - 203 < Cells(i, "O") Then
  Cells(i, "S") = Cells(i, "O") + 203
    Else
'Первый год
    If [W1] - 385 < Cells(i, "O") Then
  Cells(i, "S") = Cells(i, "O") + 385
    Else
    Cells(i, "S") = "Просрочен"
        End If
        End If
End If
'Расчет для 2 лет
    If Cells(i, "P") = 2 Then
'Первые 8 месяцев
    If [W1] - 265 < Cells(i, "O") Then
        Cells(i, "S") = Cells(i, "O") + 265
        Else
'Первые 16 месяцев
    If [W1] - 507 < Cells(i, "O") Then
        Cells(i, "S") = Cells(i, "O") + 507
        Else
'Второй год
    If [W1] - 749.5 < Cells(i, "O") Then
        Cells(i, "S") = Cells(i, "O") + 749.5
        Else
    Cells(i, "S") = "Просрочен"
        End If
        End If
        End If
End If
 
'Расчет для 3 лет
    If Cells(i, "P") = 3 Then
'Первый год
    If [W1] - 385 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 385
        Else
'Второй год
    If [W1] - 749.5 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 749.5
        Else
'Третий год
    If [W1] - 1116 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1116
        Else
    Cells(i, "S") = "Просрочен"
        End If
        End If
        End If
End If
 
'Расчет на 4 года
    If Cells(i, "P") = 4 Then
'Первый год
    If [W1] - 385 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 385
        Else
'Второй год
    If [W1] - 749.5 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 749.5
        Else
'Третий год
    If [W1] - 1116 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1116
    Else
'Четвертый год
    If [W1] - 1481 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1481
        Else
Cells(i, "S") = "Просрочен"
        End If
        End If
        End If
        End If
End If
 
'Расчет на 5 лет
    If Cells(i, "P") = 5 Then
'Первый год
    If [W1] - 385 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 385
        Else
'Второй год
    If [W1] - 749.5 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 749.5
        Else
'Третий год
    If [W1] - 1116 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1116
    Else
'Четвертый год
    If [W1] - 1481 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1481
        Else
'Пятый год
    If [W1] - 1846 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1846
        Else
Cells(i, "S") = "Просрочен"
        End If
        End If
        End If
        End If
        End If
End If
 
'Расчет на 6 лет
    If Cells(i, "P") = 6 Then
'Первый год
    If [W1] - 385 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 385
        Else
'Второй год
    If [W1] - 749.5 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 749.5
        Else
'Третий год
    If [W1] - 1116 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1116
    Else
'Четвертый год
    If [W1] - 1481 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1481
        Else
'Пятый год
    If [W1] - 1846 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 1846
        Else
'Шестой год
    If [W1] - 2211 < Cells(i, "O") Then
    Cells(i, "S") = Cells(i, "O") + 2211
        Else
Cells(i, "S") = "Просрочен"
        End If
        End If
        End If
        End If
        End If
        End If
End If
Next i
End Sub
0
17.08.2018, 10:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2018, 10:25
Помогаю со студенческими работами здесь

Range-Based for для определённого диапазона
Добрый вечер, мои хорошие! Вопросик такой... Не знаю простой или нет, но ответа не нашла. ...

Событие Worksheet_SelectionChange для диапазона ячеек
Добрый день. Помогите разобраться. Вот этот макрос - реагирует на выделение одной ячейки A1. ...

Объединение диапазона ячеек для фильтра
Добрый день. Интересует возможность фильтровать одну колонку по значению, и что бы при этом в...

Создание макроса для копирования некоторых форматированных ячеек в соседний столбец
Здравствуйте. Буду очень благодарна за помощь в создании макроса. Есть таблица, нужно, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru