Укажите итоговые суммы из столбца, перейдите к следующему названию заголовка в том же столбце строки, скопируйте и вставьте - PullRequest
0 голосов
/ 01 апреля 2019

Очень новый в сложных макросах, мой вопрос заключается в следующем.У меня есть заголовки столбцов в Excel sheet1, я пытаюсь скопировать все данные (Total SUM) в «Sheet2»;несколько столбцов объединили столбцы, и я хочу, чтобы мой макрос прочитал заголовок последней строки в столбце C38 и сопоставил копию с общей суммой на F38.

Пример: макрос предполагает чтение столбца заголовка,Строка C38 с заголовком «Итоговые активы» в столбце C, а затем поиск предоставленной суммы в столбце F38, однако столбцы F, G, H в настоящее время объединяются, F20 - через F38, G38, H38.

После перемещениявниз по пустой строке найдите следующий другой заголовок, например, «Всего средств», и повторите процесс.Я пробовал с 2 разных скриптов.Перечисленные ниже я предоставил свои макросы.Возможно, есть лучший способ собрать все данные по столбцам.

Макросценарий:

Sub Macro3()
    Application.CutCopyMode = False
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[18]C[-3],R[3]C[-3]:R[18]C[8],4,FALSE)"
    Selection.Copy
    Sheets("sheet2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
End Sub

1 Ответ

0 голосов
/ 01 апреля 2019

Если они остаются такими же, вам не нужен VBA, просто поместите =Sheet1!F38, =Sheet1!F45 и =Sheet1!F90 в соответствующие ячейки на Листе 2.

Если они переменные, вы можете перебирать ячейки Листа1 в поисках ваших титров следующим образом (если я правильно понял):

Sub CopyFromSheet1()
    Dim i as Long
    For i = 1 to Sheet1.Cells(Sheet1.Rows.Count, 6).End(xlUp).Row ' Last Cell of Column F
        Select Case CStr(Sheet1.Cells(i, 3).Value) ' Looks at the Value in Column C
        Case "Total Amount"
            Sheet2.Cells(1, 1).Value = Sheet1.Cells(i, 6).Value
        Case "Other Assets"
            Sheet2.Cells(2, 1).Value = Sheet1.Cells(i, 6).Value
        Case "Total Other Assets"
            Sheet2.Cells(3, 1).Value = Sheet1.Cells(i, 6).Value
        End Select
    Next i
End Sub

Этот цикл просматривает значения в столбце C, если он совпадает с «Общая сумма», «Прочие активы» или «Всего других активов» в копирует значения этой строки из столбца F из Sheet1 в Sheet2 в ячейки «А1», «А2» и «А3» соответственно. В этом коде Sheet1 и Sheet2 относятся к CodeName листов.

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