如何避免在Excel中垂直合并单元格?

我厌倦了合并的单元格。 他们只是不工作。

所以我find了一种避免水平合并单元格的方法,当时我只需要将文本居中放置在多个列上。 这就是: Range("A1:C1").HorizontalAlignment = xlCenterAcrossSelection

它像一个魅力。 这是完美的。 这正是我所需要的。

我天真地以为你可以垂直地做同样的事情,把文本集中在多行上。 例如: Range("A1:A3").VerticalAlignment = xlCenterAcrossSelection

但是,唉,这是行不通的。

我是否在这里错过了一些东西,或者Excel开发人员是否真的认为,虽然跨越列是一个共同的协议,集中在行是非常愚蠢的想法,没有人会这样做,所以为什么还要麻烦?

你可以试试这个:

 Sub VerticalAlign() ThisWorkbook.Sheets(1).Cells(Round((WorksheetFunction.CountA(Range("A1:A6")) + WorksheetFunction.CountBlank(Range("A1:A6"))) / 2, 0), "A") = "Your Value Here" End Sub 

您需要更改正在计数的范围以及所涉及的列,但是应该只是这样做。 但有一点警告:VBA不像Excel一样。 不过,它应该总是在一个数字之内。 你可以阅读更多关于这里: http : //support.microsoft.com/kb/194983

我们在单元格上使用文本框形状来做到这一点。 如果在绘制形状的同时按住Alt键,拐angular将捕捉到Excel网格,并随着单元格移动和resize,所以与input单元格相比,所花费的时间并不多。

我发现了一个快乐的事故,如果有人在乎这个问题的话,

对于我的情况,我需要通过名称和责任区sorting的线性日历来跟踪员工的休假时间。 标题部分涵盖了三行,我想要过滤下面的数据时可见。 第1行=年(跨月合并),第2行=月(跨日合并),第3行=天。 单元格A1:A3被合并并标记名称(员工),B1:B3合并并标记为AREA(职责),因此我们可以跟踪日历电子表格上的休假时间,以确保每个区域都有覆盖范围(至less有一名员工负责)。 此方法的缺点导致filter块与第1行相关联,所以当过滤名称时,第2行和第3行被隐藏。

然后,我尝试了以前的post的VBA代码,它的工作,但最大的字体大小适合,如果太大,将被切断。 所以美观,看起来不好。

然后我把名称/区域标题放在单元格A3和B3中,不用合并,在第三行设置filter。 这有效地过滤了从第4行开始的所有内容,而没有隐藏任何东西,但仍然看起来很糟糕。

现在我find了工作。 如果您的标题位于要合并的顶部单元格中,并且在底部部分中有一些值。 在底部设置filter(需要设置filter的值)。 然后合并三个单元格,它的作品。 所以,现在我的A1:A3名称和B1:B3区域被合并,但过滤框位于部分的底部(与第3行alignment)。

希望这对一些人有用。 然后,我locking这些单元格从编辑(除了自动filter设置),现在不能被意外更改。 只有过滤。