2014-01-28 130 views
0

所有插入新行,VBA代碼與合併單元格

我需要一些嚴重的援助。我沒有創建excel電子表格,但我正在嘗試爲朋友進行更正。

這是一個問題,這個電子表格被公司裏的衆多人使用,它並不總是包含相同數量的行。

我使用了下面的VBA代碼來插入一個複製上面的單元格並粘貼到新行的新行。問題在於它沒有合併單元格,也沒有將公式帶到AM列的下一行。

如何修改現有的VBA代碼合併的單元格,並從上面的一行保留原來的格式和修改公式下一行

我找不到附着到哪裏,我的數據庫的副本使用這樣你就可以看到數據庫。請在此幫忙

下面是我目前使用的代碼:(順便說一句)---我是VBA愚蠢的,所以請儘量保持簡單。下面的代碼是從別人那裏借來的,以滿足我的需求。

下面是需要複製或修改後用於下一行中的列AM下式:

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

這裏是下一個公式應該讀什麼!

= IFERROR(INDEX(表Sheet 3 A2 :D5,MATCH($ AK $ 14(表Sheet 3!A1:D1),0),MATCH($ AL $ 14(表Sheet 3 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 
+0

這些單元格是否只在整個區域合併?我問,因爲你的問題是像你一樣只需要複製一行。 – Tmdean

+0

是的,我一次只做一行。這將允許人員只添加他們需要的行數。 – user3245314

+0

我打算詢問是否有任何單元格被垂直合併。這聽起來像你只有水平合併單元格。 – Tmdean

回答

0

您需要解決兩個問題。

首先,您需要將公式設置爲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 
+0

我試圖使用上面的公式,但它沒有引用正確的單元格,所以我糾正它以引用單元格,但問題是當生成下一行時,公式不會添加一個值來引用下一個行號。如下所示:= 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) – user3245314

+0

在複製公式時想要更改的行或列之前刪除$。 – Tmdean

+0

非常感謝您的幫助。我已經完美地工作了 – user3245314