2014-10-18 57 views
1

背景: 我已經創建了包含創建,其保持在所述第一尺寸的項目名稱和在第二維一個目標標題的陣列的例行程序的Word模板。此數組轉換爲Excel中的表格,用於創建時間軸/甘特圖。Excel中的ListObject表中插入行導致細胞公式誤差

問題: 轉置適當地放置在陣列信息到Excel表,並根據需要擴大該表的大小。單元格B5是DataBodyRange的開始和我想要粘貼數組信息的開始位置。

' paste headings from array into excel 
xlWS.Range("B5:C" & UBound(gHeadings, 2)) = xlApp.Transpose(gHeadings) 

什麼不以適當的方式發生在表中的後續數據單元格中。時間軸細胞具有以下公式:

=IF(AND(COLUMNS($H$5:H10)>=$E5,COLUMNS($H$5:H10)<=$F5),IF(COLUMNS($H$5:H10)-$E5<ROUND(($F5-$E5+1)*$G5,0),fillblock,""),"") 

當轉置完成,包含上是DataBodyRange原來最後一排表的行引用的公式錯誤細胞的一行。

=IF(AND(COLUMNS($H$5:H119)>=$E10,COLUMNS($H$5:H119)<=$F10),IF(COLUMNS($H$5:H119)-$E10<ROUND(($F10-$E10+1)*$G10,0),fillblock,""),"") 

任何想法或爲什麼發生這種情況的瞭解,以及如何預防:在該行,行10,公式會從什麼上面顯示的改變?

+0

確切的問題有點不清楚。公式是否改變了唯一的問題?如果沒有,請詳細說明。關於公式,你是不是可以在你不想改變的零件前加'$'? (例如,您不希望H10更改爲H119,因此將其更改爲$ H $ 10)如果這不是一個選項,您能否提供您的代碼正在處理的完整程序,甚至是一些陣列數據的示例? – 2014-10-19 04:26:25

+0

我對任何混亂表示歉意。讓我試着澄清。將數組轉換爲表格會自動將行插入表格中。上面顯示的這部分代碼按預期工作。問題是這樣的:該模板已經在單元格的列H開始有單元格公式。當新行被插入帶有轉置的表格中時,這些公式應該被複制到所有新行。所有插入行都會出現這種情況,除了所示的行之外。出於某種原因,Excel將此行的引用更改爲指向表的最後一行 – 2014-10-19 12:22:11

回答

0

總的答案,爲什麼Excel表格中我所描述的方式工作沒有回答。但是,這是我的解決方法。速度命中可以忽略不計。

' variable to hold the formula and fix the double-quote ("") issue in vba 
     sEmpty = Chr(34) & Chr(34) 
     sFormula = "=IF(AND(COLUMNS($H$5:H5)>=$E5,COLUMNS($H$5:H5)<=$F5),IF(COLUMNS($H$5:H5)-$E5<ROUND(($F5-$E5+1)*$G5,0),fillblock," & sEmpty & ")," & sEmpty & ")" 

    ' paste cell formula into the new worksheet 
     lTblRows = xlLO.DataBodyRange.Rows.Count 
     xlWS.Range("H5:AK" & lTblRows + 4).Formula = sFormula 

這有效地將公式複製到表中引用的每個小區,複製了那些致使誤引用的行的插入過程中的細胞。