Найдите определенное значение в Excel и добавьте всю строку ниже, используя Vbscript - PullRequest
0 голосов
/ 05 октября 2010

Что я хотел бы сделать, так это написать макрос VB, который будет сканировать весь столбец (столбец F) для поиска «Итого года:», а затем вставит под ним целую строку.

У меня есть это:

Sub Macro2 () ' Макро2 Макро ' Сочетание клавиш: Ctrl + a

Dim C As Variant
Dim FirstRow As Integer

With Worksheets(1).Range("F1:F4000")
    Set C = .Find("Year Total:", LookIn:=xlValues)
    If Not C Is Nothing Then
        FirstRow = C.Row
        Do
            C.Offset(1, 0).Insert Shift:=xlDown
            Set C = .FindNext(C)
        Loop While Not C Is Nothing And C.Row <> FirstRow
    End If


End With

End Sub

Однако он добавляет только ячейки, а не всю строку.

Я также хотел бы добавить в код, чтобы он также выполнял поиск "Grand Total:" в том же столбце и также добавлял три строки под ним. Я просто собирался написать два сценария, однако, если бы я мог объединить их все в один, это было бы превосходно.

1 Ответ

1 голос
/ 06 октября 2010

Хорошо, вы идете, я только что проверил это, и это делает трюк.Я уверен, что есть более чистый способ сделать это, но похоже, что вы ищете быстрое и грязное решение, так что, надеюсь, это сработает для вас.:)

' Get last row
intLastRow = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row

' Loop till last row
intRow = 0
For Each strColFValue In ActiveSheet.Range("F1:F" & intLastRow).Value
    intRow = intRow + 1

    ' If found year, insert row below
    If InStr(UCase(strColFValue), "YEAR TOTAL:") > 0 Then
        Range("F" & intRow + 1).Select
        Selection.EntireRow.Insert
        intRow = intRow + 1
    End If

    ' If found grand total, insert 3 rows below
    If InStr(UCase(strColFValue), "GRAND TOTAL:") > 0 Then
        Range("F" & intRow + 1).Select
        Selection.EntireRow.Insert
        Selection.EntireRow.Insert
        Selection.EntireRow.Insert
        intRow = intRow + 3
    End If

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