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



我厌倦了合并的单元格。它们就是不起作用。

所以我找到了一种避免水平合并单元格的方法,当我只需要文本在多列之间居中时。那就是: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键,则角将捕捉到Excel网格并随单元格移动和调整大小,因此所需时间不会比在单元格中键入时间长太多。

如果有人想知道的话,我发现了一个愉快的意外,它解决了我的问题。

对于我的情况,我需要在一个线性日历上跟踪员工的休假时间,该日历可以按姓名和负责地区进行排序。标题部分包含了三行,我希望在过滤下面的数据时可以看到这些行。行1=年(跨月合并),行2=月(跨天合并),第3=天。单元格A1:A3被合并并标记为Names(employees),B1:B3被合并后标记为AREA(responsibility),这样我们就可以在日历电子表格上跟踪休假时间,以确保每个区域都有覆盖范围(至少有一名员工负责)。这种方法的缺点是导致过滤块与第1行相关联,因此当对名称进行过滤时,第2行和第3行被隐藏

然后,我尝试了上一篇文章中的VBA代码,它很有效,但在字体大小上达到了最大值,如果太大,就会被剪掉。所以从美学上来说,它看起来很糟糕。

然后,我将Names/Area标题放在单元格A3和B3中,不进行合并,并在第三行设置过滤器。这有效地过滤了从第4行开始的所有内容,没有隐藏上面的任何内容,但看起来仍然很糟糕。

现在我找到了周围的工作。如果标题位于要合并的位置的顶部单元格中,而某些值位于底部。在底部设置过滤器(需要一个值来设置过滤器)。然后合并三个单元格,就可以了。所以现在我的A1:A3名称和B1:B3区域被合并了,但过滤框在部分的底部(与第3行对齐)。

希望这对某些人有效。然后我锁定了这些单元格,使其无法编辑(自动筛选设置除外),现在它不能意外更改。仅过滤。

最新更新