excel 将数据从一个表拉到另一个表

kpbwa7wx  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(102)

我有两张table。表1在另一个工作表上,我试图在那里提取数据,表2在Header工作表上,我把数据放在那里。这是一个数组公式,其中的数据将被放置在多个单元格。这似乎是我卡住的地方。我似乎无法粘贴它,给我一个“1004错误”(如果不使用databodyrange)和“方法或数据成员未找到”(如果使用ListColumn)。
购买价值跟踪器位于标题页FinalTableSource[购买价值]位于第二页
这里是现在与一些更新的代码,但我仍然得到一个1004错误。

Public Sub MakeFinalTable_Click()
'Resize Table

Dim ws As Worksheet, lo As ListObject

Set ws = Sheets("Header")
Set lo = ws.ListObjects("FinalTable")

lo.ListColumns("Value Bought Tracker").DataBodyRange.FormulaArray = "=IFERROR(INDEX(FinalTableSource[Buy Value],SMALL(IF(FinalTableSource[Buy Value]<>"",ROW(FinalTableSource[Buy Value])-ROW(INDEX(FinalTableSource[Buy Value],1,1))+1),ROWS(AA$4:AA4))),"""")"

End Sub

谢谢你的帮助!

eqqqjvef

eqqqjvef1#

Dim ws As Worksheet, lo as ListObject

Set ws = Sheets("Header")
Set lo = ws.ListObjects(1)

lo.ListColumns("Value Bought Tracker").DataBodyRange.FormulaArray = "=IFERROR(INDEX(FinalTableSource[Buy Value],SMALL(IF(FinalTableSource[Buy Value]<>"",ROW(FinalTableSource[Buy Value])-ROW(INDEX(FinalTableSource[Buy Value],1,1))+1),ROWS(AA$4:AA4))),"")"

编辑:把你的台词分解,这样每一行只有一件事;你就能更容易地发现问题所在

Public Sub MakeFinalTable_Click()

    Dim ws As Worksheet, lo As ListObject, lc As ListColumn, rng As Range

    Set ws = Sheets("Header")
    Set lo = ws.ListObjects("FinalTable")
    Set lc = lo.ListColumns("Value Bought Tracker")
    Set rng = lc.DataBodyRange

    rng.FormulaArray = "=IFERROR(INDEX(FinalTableSource[Buy Value]," & _
                       "SMALL(IF(FinalTableSource[Buy Value]<>""""," & _
                       "ROW(FinalTableSource[Buy Value])-" & _
                       "ROW(INDEX(FinalTableSource[Buy Value],1,1))+1),ROWS(AA$4:AA4))),"""")"

End Sub
vlurs2pr

vlurs2pr2#

问题是Range.FormulaArray的操作在文档中没有很好地解释。我转移我对这个属性的研究结果(插入表格行时自动完成公式):

  • 虽然Range.FormulaArrayhttps://learn.microsoft.com/es-es/office/vba/api/excel.range.formulaarray的官方文档说这个属性是读/写的,但实际上不允许直接修改它,但是可以间接修改,如下图所示。
  • 当区域中的单元格具有不同的公式时,Range.FormulaArray的值为Null
  • 修改Range.FormulaArray的唯一方法是给予相同的公式给区域中的所有单元格,例如,当语言不是英语时,修改Range.Formula = "=..."Range.FormulaLocal = "=..."。这将为Range.FormulaArray属性提供与范围内所有单元格中公式相同的值。
  • 一旦区域设置了非空的.FormulaArray属性,例如,您可以向表(ListObject)中插入或添加行,计算列将自动采用.ListObject.ListColumns(c).DataBodyRange.FormulaArray中设置的公式

相关问题