2

我有一个 Excel 电子表格,它在同一个选项卡上包含四个数据表。每个中的最后 3 列包含公式。

然后我有一个 vba 代码,它在 SQL Server 表中执行 sql 查找并返回一组列来更新四个表中的每一个。

对于其中三个表格,数据被粘贴,表格自动展开,公式被复制到表格的末尾。

但是,对于第一个表,数据被粘贴,但表没有展开,因此,公式不会被添加到表外的行中。

我到处寻找解决方法,但没有快乐。我搜索了数据提取 VBA 代码,但没有运气(代码完全匹配),也没有对表属性感到高兴。我还检查了“键入时自动设置格式”设置的“选项”菜单,但一切似乎都很好。

有人对我有什么想法吗?

谢谢,

大卫。

大家好,再次,

很想知道是否有人对此有答案,但与此同时,我已经捏造了代码,以根据最后一个数据单元格的行号自动调整表格的大小。

谢谢,

大卫。

4

3 回答 3

3

我遇到了同样的问题,这让我发疯了。发现在几列中,我将公式拖得很远(如果第一列为空,它们是 IF 语句,不返回任何内容)所以我没有看到它们。

因此,请删除表格最后一行“下方”的所有公式。应该把问题弄清楚。

于 2019-07-11T14:48:44.337 回答
0

最常见的原因是由于列数不同或未对齐(垂直堆叠的表格)或行数不同或未对齐(水平堆叠的表格)。

为简单起见,让我们使用垂直堆叠的表格来说明正在发生的事情。考虑一个有 2 列的上表和一个有 3 列的下表。如果我们尝试向上表插入一行,XL 会尝试将表下方的所有单元格向下推,但仅将表正下方的单元格向下推。因此,在这种情况下,两列下方的单元格将被向下推。XL 很快意识到,如果它只向下推 2 列,下部表中的第三列将不会被向下推,从而导致下部表倾斜。XL 没有试图弄清楚如何移动较低的桌子。它甚至拒绝尝试。

将列添加到左侧的表中也是如此,右侧有表。如果向表中添加列会导致表中的行向右倾斜,XL 拒绝提供帮助。

为了避免这个问题,我们可以做一些事情:

  • 将最大的表格保持在顶部和左侧,并对齐所有表格的第一列和第一行。
  • 如果只向表格添加行,则不要垂直堆叠它们
  • 如果只在表格中添加列,则不要将它们水平堆叠。
于 2014-02-04T01:47:46.893 回答
0

以下是在将数据复制到表底部后强制扩展表的示例。这是通过调整表格大小来完成的。最初该表没有自动调整大小,因为它有额外的计算列。代码的第一行查找最后一行数据,第二行说明表格需要调整大小的范围。第三行将表格调整为新范围。将 sXXX 和 tXXX 替换为您的工作表名称和表格名称。

Sub ResizeTableXXX()
    myLastrowOfData = sXXX.Range("A1000000").End(xlUp).Row
    myNewRangeSize = "$A$5:$P$" & myLastrowOfData
    sXXX.ListObjects("tXXX").Resize Range(myNewRangeSize)
End Sub

HIH

于 2016-04-24T10:48:27.447 回答