【问题标题】:VBA Code to insert new rows with merged cells使用合并单元格插入新行的 VBA 代码
【发布时间】:2014-01-28 16:17:39
【问题描述】:

全部,

我需要一些认真的帮助。我没有创建 Excel 电子表格,但我正在尝试为朋友更正它。

问题出在这里,该电子表格被公司中的许多人使用,并且它并不总是包含相同数量的行。

我使用以下 VBA 代码插入了一个新行,该行复制了上面的单元格并粘贴到新行。问题是它没有合并单元格,也没有将公式带到 AM Column 的下一行。

如何修改现有的 VBA 代码以合并单元格并保留上一行的格式并修改下一行的公式

我找不到在哪里附加我正在使用的数据库的副本,以便您可以看到该数据库。请帮忙解决这个问题

以下是我目前使用的代码:(顺便说一句)---我是 VBA Stupid,所以请尽量保持简单。下面的代码是从别人那里借来的以满足我的需要。

下面是 AM 列中需要为下一行复制和修改的公式:

=IFERROR(INDEX(Sheet3!A2:D5,MATCH($AK$13,(Sheet3!A1:D1),0),MATCH($AL$13,(Sheet3!E2:E5),0)),0 )

下面是下一个公式的内容:

=IFERROR(INDEX(Sheet3!A2:D5,MATCH($AK$14,(Sheet3!A1:D1),0),MATCH($AL$14,(Sheet3!E2:E5),0)),0 )

Sub InsertRowFormulas()
Application.ScreenUpdating = False
Dim cell As Range
Selection.EntireRow.Insert
For Each cell In Intersect(ActiveSheet.UsedRange, Selection.Offset(-1, 0).EntireRow)
If cell.HasFormula Then
cell.Copy cell.Offset(1, 0)
End If
Next
Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • 单元格是否仅合并?我问是因为您的问题写得就像您一次只需要复制一行一样。
  • 是的,我一次只在行上做。这将允许人员只添加他们需要的行数。
  • 我的意思是问是否有任何垂直合并的单元格。听起来您只有水平合并的单元格。
  • 需要合并居中的Cell有B-H、I-S、T-X、Y-AI
  • 仅横向合并跨行的特定单元格

标签: vba excel


【解决方案1】:

您需要解决两个问题。

首先,您需要将公式设置为具有correct reference locking,这样当您在新行中自动填充公式时,引用就会正确更新。如果您希望在复制公式时不调整行或列引用,请在其前面加上 $。

=IFERROR(INDEX(Sheet3!$A$2:$D$5,
               MATCH($AK13,Sheet3!$A$1:$D$1,0),
               MATCH($AL13,Sheet3!$E$2:$E$5,0)),0)

使用正确的锁定,您只需复制整行即可保留合并的单元格。我不确定这是否需要宏 - 培训电子表格的用户如何复制行可能会更容易,这在 Excel 中是一个非常简单的操作。

Dim dest As Range

Selection.EntireRow.Insert
Set dest = Selection.Worksheet.Cells(Selection.Row, 1)
dest.Offset(1).Resize(, dest.Worksheet.UsedRange.Columns.Count).Copy dest

【讨论】:

  • 我尝试使用上面的公式但是它没有引用正确的单元格,所以我更正它以引用单元格,但问题是生成下一行时,公式不是添加一个值以引用下一个行号。如:=IFERROR(INDEX(Sheet3!$A$2:$D$5,MATCH($AK$52,Sheet3!$A$1:$D$1,0),MATCH($AL$52,Sheet3!$E$2 :$E$5,0)),0) 然后下一行应该是: =IFERROR(INDEX(Sheet3!$A$2:$D$5,MATCH($AK$53,Sheet3!$A$1:$D$1, 0),MATCH($AL$53,Sheet3!$E$2:$E$5,0)),0)
  • 在复制公式时从您要更改的行或列之前删除 $。
  • 非常感谢您的帮助。我现在完美地工作了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多