Excel Listobject表插入行导致单元格公式错误

背景:我创build了一个Word模板,其中包含一个例程,该例程创build一个数组,其中包含第一维中的项目标题和第二维中的目标标题。 这个数组被转置到Excel中的表格中,用于创build时间轴/甘特图。

问题:转置会将数组信息正确放置到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的原始最后一行的表的行上包含引用的公式错误的单元格行。 在第10行,该公式从上面显示的内容变为:

 =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,""),"") 

任何想法或理解为什么发生这种情况,以及如何预防呢?

关于为什么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 

这有效地将公式复制到表中引用的每个单元格中,复制在行插入期间被错误引用的单元格。