如何创建一个更改单元格跨越的行的Excel宏

时间:2009-12-01 15:49:50

标签: excel excel-vba vba

我将表格从SAS粘贴到Excel中,其中第一列中单元格所跨越的行数是可变的。也就是说有时候第一列是3个合并的单元格,有时是6等等。我想运行一个宏,将第一个单元格的高度改为10个合并单元格,并在底部插入行来制作这个空间。

我对如何解决这个问题感到有点困惑。非常感谢任何帮助。

让我试着说明一下。如果我希望第一列全部跨越4行,我可以从

开始
_________________
      |__________
______|__________
      |__________
      |__________
______|__________

并以

结束
_________________
      |__________
      |__________
      |__________
______|__________
      |__________
      |__________
      |__________
______|__________

2 个答案:

答案 0 :(得分:1)

感谢您的解释。你只是让那个超级强硬。问题是虽然看起来你只是将合并单元格的高度更改为更大,但实际上是在创建一个新的合并以使新合并的单元格4单元格更高。

在第一张插图中,您会显示两个合并的单元格,其地址范围为A1:A2A3:A6。在第二个插图中,地址分别为A1:A4A5:A8

为了让Excel在地址A1:A2处“更改高度”(我松散地使用该短语)原始合并单元格,它实际上必须在地址范围{{1}创建一个新的设置合并单元格}}。但是,您将无法这样做,因为地址A1:A4已经是合并范围,并且这些会重叠。

如果您尝试手动执行此操作,则表示您必须取消合并较低的组,重新合并顶级组,然后重新合并底部组。

可以编写一个宏,当执行时,弹出一个输入框,询问合并单元应该是多高的单元格数。但是,您的代码必须分析原始堆栈的合并单元格,然后以编程方式取消合并并重新合并以进行更改。这当然是可能的,但这可能是一个真正的痛苦(但也是一个有趣的挑战:)。

我会问你自己有多么糟糕,因为它在Excel中并不是完全自然的行为。

<小时/> 我原来的帖子如下:现在已经过时,因为我现在明白了作者的要求

如果您只想更改单元格的高度,可以使用以下内容:

A3:A6

但是,我对您对合并单元格的引用感到困惑。你只是想改变一个细胞的高度,还是你也试图将细胞合并在一起?

答案 1 :(得分:1)

无论您尝试做什么,都可以选择Tools -> Macro -> Record new macro,然后手动执行所需的操作,然后停止宏并在VBA中编辑它以查看要在程序中使用的相应VBA命令。