Как добавить новые строки и заполнить "0" в VBA? - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь помочь коллеге с их электронными таблицами (в MAC Excel V16.16.8), так как у меня есть некоторый опыт работы с кодированием, в основном на SQL, только очень очень базовый уровень VBA.

Они получают ежедневные данные (именно поэтому нужен VBA), которые мне удалось разделить на отдельные листы для них с помощью основных макросов.

Here is a screenshot of an example of what one sheet contains

Название листа в этом примере "Бирмингем".

Столбец B «Интервал» - это часы дня (24-часовой формат). Они получают данные только за те часы дня, когда данные действительно существуют в других столбцах. Однако для своих отчетов они должны добавлять / вставлять новые строки, даже если нет данных с 0-23 (полночь-11 вечера).

Столбцу «Интервал» требуется правильный час / число в этом порядке убывания, как показано в примере, причем столбцы Date и Campaign одинаковы во всем. И оставьте остальные ячейки для Total_Calls, Closed и т. Д., Содержащие «0».

Как добавить новые строки, «Интервалы» и «0»?

Я пробовал несколько разных способов, в основном, пытаясь объединить в основном пустую отдельную таблицу, содержащую только «Интервалы» 0-23. Тем не менее, я с треском провалился в каждом методе.

Я почти на 100% уверен, что есть относительно простой способ сделать это, но мне не хватает определенных знаний VBA.

Любая помощь будет наиболее ценной.

Спасибо

1 Ответ

1 голос
/ 19 марта 2019

Вы можете получить текущую дату и текущую кампанию и вставить недостающие строки, например:

Private Sub FillAllHours()
    Dim i As Long
    Dim myDate As Date      ' value from date column
    Dim myCampain As String ' value from campaign column

    With ActiveSheet
        myDate = .Cells(.Rows.Count, 1).End(xlUp).Value
        myCampain = .Cells(.Rows.Count, 3).End(xlUp).Value
        For i = 2 To 25
            If .Cells(i, "B") <> i - 2 Then ' if row is missing
                .Rows(i).Insert             ' insert row above
                .Cells(i, "B") = i - 2      ' insert hour number
                .Cells(i, "A") = myDate     ' insert date
                .Cells(i, "C") = mycampaign ' insert campaign
                .Cells(i, "D").Resize(1, 9).Value = 0 ' fill 9 cells with 0
            End If
        Next i
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...