макрос для копирования и вставки в следующую пустую строку для столбцов B-S - PullRequest
0 голосов
/ 05 марта 2019

У меня есть текущий ежемесячный отчет для учета наших продаж.Каждый день я получаю наши продажи для каждого филиала в одном отчете.У меня есть формула Vlookup, сохраненная в ячейке E1 с формулой, которая будет перетаскивать информацию из отчета на другой лист в зависимости от того, над чем я работаю.Я могу скопировать E1 и вставить в каждую ячейку строки с диапазоном столбцов BS, а затем я снова копирую эту строку и вставляю значения, чтобы это не изменило мои суммы.На следующий день я повторяю процесс в следующей строке, чтобы он давал мне ежемесячные итоговые итоги по филиалам, а затем по компании в целом.Мой ежемесячный график всегда составляет около 23 строк. (Строки 6-28 в Excel)

Мне нужен макрос, который будет делать следующее: 1-го числа я запускаю макрос, и он копирует мою ячейку E1 и вставляетэто в строку B6 - S6, затем скопируйте эту строку и вставьте значения этой строки.Затем, 2-го числа месяца, я запускаю макрос, и он повторяется, но в строке B7-S7.Затем, 3-го числа месяца, я запускаю макрос, и он повторяется, но в строке B8-S8.

Возможно ли это?

Это то, что у меня есть только с записью макроса.

Sub Charges()
'
'Charges Macro
'Run Formula for charges
'
' Keyboard Shortcut: Ctrl+Shift+C
'
    Range("E1").Select
    Selection.Copy
    Range("B8:S8").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
 End Sub

1 Ответ

0 голосов
/ 05 марта 2019

Возможно, это? Вы можете передавать значения напрямую, избавляя от необходимости копировать и вставлять.

Прочтите о том, как сделать код более эффективным, избегая выбора / активации.

Sub Charges()

Dim n As Long

n = WorksheetFunction.Max(6, Range("B" & Rows.Count).End(xlUp).Row + 1)

Range("B" & n & ":S" & n).Value = Range("E1").Value

End Sub

Если вы хотите скопировать формулу, а затем перезаписать значение, вы можете использовать это

Sub Charges()

Dim n As Long

n = WorksheetFunction.Max(6, Range("B" & Rows.Count).End(xlUp).Row + 1)

Range("E1").Copy Range("B" & n & ":S" & n)

Range("B" & n & ":S" & n).Value = Range("B" & n & ":S" & n).Value

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