如何在Excel中避免纵向合并单元格?

5
我厌倦了合并单元格。它们根本不起作用。
所以我找到了一种避免水平合并单元格的方法,当我只需要我的文本在多列中居中时。方法是:Range("A1:C1").HorizontalAlignment = xlCenterAcrossSelection
它非常完美。正是我需要的。
我天真地认为你也可以在垂直方向上做同样的事情,将文本居中于多行。例如:Range("A1:A3").VerticalAlignment = xlCenterAcrossSelection
但不幸的是,这并不起作用。
我是否漏掉了什么,或者Excel开发人员真的认为,在跨越列进行居中是一个常见的问题,而在行上进行居中是一个愚蠢的想法,没有人会这样做,所以为什么要费心呢?

很抱歉,目前没有标准的方法可以垂直居中跨列。当您选择一个单元格并打开“单元格格式”对话框时,您会发现在垂直对齐下拉列表中,没有选项可以实现垂直居中跨列。 - JMax
是的,我以为不会有“标准”的方法可用。也许有人有更详细的解决方法? - Bruder
除了使用一个覆盖“合并单元格”的矩形形状之外,我没有看到任何 Excel 的方法来处理这个问题,我会使用标准的合并方式及其缺点来处理。 - JMax
1
再加一条评论...如果您可以获取范围内行数的计数,然后将文本放置在中间单元格中...对于具有偶数行计数的范围,您必须选择一个折衷方案。 - Scott Holtzman
3个回答

1
你可以尝试这个:

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


0
我们使用文本框形状覆盖在单元格上来实现这个功能。如果你在绘制形状时按住Alt键,角落会自动吸附到Excel网格并随着单元格移动和调整大小,所以它不需要比在单元格中输入更多的时间。

0

如果有人想知道,我发现了一个愉快的偶然事件,可以解决我的问题。

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

然后我尝试了之前帖子中的VBA代码,它起作用了,但最大字体大小只能适合,如果太大就会被截断。因此,从美学角度来看,它看起来很糟糕。

然后我将名称/区域标题放在A3和B3单元格中,而不是合并,并在第三行上设置筛选器。这样可以有效地过滤从第4行开始的所有内容,而不隐藏其上方的任何内容,但仍然看起来很糟糕。

现在我找到了一个解决办法。如果你的标题在你想要合并的顶部单元格中,并且底部区域有一些值。在底部区域设置筛选器(需要一个值来设置筛选器)。然后合并这三个单元格,它就可以工作了。 所以现在我的A1:A3名称和B1:B3区域已经合并,但筛选框位于各个区域的底部(与第3行对齐)。

希望这对某些人有用。然后我锁定了这些单元格,防止编辑(除了自动筛选器设置),现在它不能被意外更改,只能进行筛选。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接