20

我有一排,其中有使用同一行值的公式。下一行是空的,只是背景颜色不同。

现在,如果我插入一个新行(通过右键单击空行并“插入”),我会得到一个没有背景颜色的新行(这是我想要的),但该行也不包含任何公式:创建新行时,如何让 Excel 变得更智能并从上一行复制公式?

还有一条信息:插入新行时复制数据验证信息(即下拉列表)。

谢谢。

4

5 回答 5

24

将包含数据和公式的区域设为表格:

在此处输入图像描述

然后在下一行中添加新信息将复制该表中的所有公式以用于新行。数据验证也将应用于新行,就像对整列一样。这确实是 Excel 对您的数据更加智能。

无需 VBA...

于 2012-12-13T10:28:51.123 回答
2

关于在表中复制行,我发现的另一件事是需要激活您正在处理的工作表。如果您有一个包含多个工作表的工作簿,则需要保存从中调用宏的工作表,然后使用表格激活工作表。完成后,您可以重新激活原始工作表。

您可以使用 Application.ScreenUpdating = False 确保用户看不到您正在宏内切换工作表。

如果您没有激活工作表,则副本似乎无法正常工作,即某些东西似乎可以工作,而其他东西则不能??

于 2015-02-06T21:16:54.890 回答
2

您需要插入新行,然后从源行复制到新插入的行。Excel 允许您粘贴特殊的公式。所以在 Excel 中:

  • 插入新行
  • 复制源行
  • 选择新创建的目标行,右键粘贴特殊
  • 粘贴为公式

VBA 如果需要,以 Rows("1:1") 为源,Rows("2:2") 为目标:

Rows("2:2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Rows("2:2").Clear

Rows("1:1").Copy
Rows("2:2").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone
于 2012-12-12T22:32:47.607 回答
1

Private Sub Worksheet_Change(ByVal Target As Range)

'data starts on row 3 which has the formulas
'the sheet is protected - input cells not locked - formula cells locked
'this routine is triggered on change of any cell on the worksheet so first check if
' it's a cell that we're interested in - and the row doesn't already have formulas
If Target.Column = 3 And Target.Row > 3 _
And Range("M" & Target.Row).Formula = "" Then

    On Error GoTo ERROR_OCCURRED

    'unprotect the sheet - otherwise can't copy and paste
    ActiveSheet.Unprotect
    'disable events - this prevents this routine from triggering again when
    'copy and paste below changes the cell values
    Application.EnableEvents = False

    'copy col D (with validation list) from row above to new row (not locked)
    Range("D" & Target.Row - 1).Copy
    Range("D" & Target.Row).PasteSpecial

    'copy col M to P (with formulas) from row above to new row
    Range("M" & Target.Row - 1 & ":P" & Target.Row - 1).Copy
    Range("M" & Target.Row).PasteSpecial

'确保重新启用(或不发生)错误事件并重新保护工作表

发生了错误:

    If Err.Number <> 0 Then
        MsgBox "An error occurred. Formulas may not have been copied." & vbCrLf & vbCrLf & _
            Err.Number & " - " & Err.Description
    End If

    're-enable events
    Application.EnableEvents = True
    're-protect the sheet
    ActiveSheet.Protect

    'put focus back on the next cell after routine was triggered
    Range("D" & Target.Row).Select

End If

结束子

于 2019-04-22T01:28:12.713 回答
0

如果您的工作表有很多行都包含公式,到目前为止,最简单的方法是复制没有数据的行(但它确实包含公式),然后在您所在行的下方/上方“插入复制的单元格”想补充。公式仍然存在。在紧要关头,可以使用包含数据的行。粘贴后清除或覆盖即可。

于 2017-04-25T17:07:23.633 回答