Формула для заполнения ячеек в планировщике задач (Excel 2013) - PullRequest
0 голосов
/ 14 марта 2019

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

+--------+-------+-----+-------+-----+-----+-----+-----+-----+
| Task   | Jan   | Feb | Mar   | Apr | May | Jun | Jul | Aug |
+--------+-------+-----+-------+-----+-----+-----+-----+-----+
| Task A | Start |     |       |     | End |     |     |     |
+--------+-------+-----+-------+-----+-----+-----+-----+-----+
| Task B |       |     | Start | End |     |     |     |     |
+--------+-------+-----+-------+-----+-----+-----+-----+-----+
| Task C | Start |     |       |     |     | End |     |     |
+--------+-------+-----+-------+-----+-----+-----+-----+-----+

Для «Задачи А» я бы хотел, чтобы ячейки находились в промежутке между январем - может иметь какой-то текст типа «Работа» или что-то подобное.

Итак, финальный стол будет выглядеть так:

+--------+-------+------+-------+------+------+-----+-----+-----+
| Task   | Jan   | Feb  | Mar   | Apr  | May  | Jun | Jul | Aug |
+--------+-------+------+-------+------+------+-----+-----+-----+
| Task A | Start | Work | Work  | Work | End  |     |     |     |
+--------+-------+------+-------+------+------+-----+-----+-----+
| Task B |       |      | Start | End  |      |     |     |     |
+--------+-------+------+-------+------+------+-----+-----+-----+
| Task C | Start | Work | Work  | Work | Work | End |     |     |
+--------+-------+------+-------+------+------+-----+-----+-----+

Это динамически изменяемая таблица, поэтому жесткое кодирование текста там невозможно.

Обновление:

Поскольку эта таблица является динамической, эта таблица связана с таблицей на другой вкладке. Он извлекает данные с помощью простой формулы «= Sheet1! B2», перетаскиваемой по таблице.

1 Ответ

2 голосов
/ 14 марта 2019

Предполагается, что ваши данные начинаются в ячейке A1.Вам нужно будет изменить циклы for для счетчика строк и столбцов, если это не так.

Sub fillTask()
Dim intRow As Integer, intStartFlg As Integer
Dim mySht As Worksheet

Set mySht = Sheets("Sheet1")
intStartFlg = 0

'get last row
intRow = mySht.Cells(mySht.Rows.Count, "A").End(xlUp).Row

'loop through each task
For i = 2 To intRow
    'Clear previous loop
    For j = 2 To 13
        If mySht.Cells(i, j) <> "Start" Or mySht.Cells(i, j) <> "End" Then mySht.Cells(i, j).ClearContents
    Next j

    'loop through each month
    For j = 2 To 13
        If mySht.Cells(i, j) = "end" Then Exit For
        If intStartFlg = 1 Then mySht.Cells(i, j) = "Work"
        If mySht.Cells(i, j) = "Start" Then intStartFlg = 1
    Next j
    intStartFlg = 0
Next i

End Sub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...