Excel 的单元格中心发生了偏移

问题描述 投票:0回答:4

我现在已经从事数学练习项目一段时间了。我之前曾问过类似的问题,但我没有得到任何好的帮助。所以我决定更彻底地研究这个问题并发现了一些有趣的东西。

在开始之前,我只想先回顾一下预备知识。是的,我正在使用 Microsoft Excel 2007。不,虽然这可能适合您,但不适合我。

好的,现在已经解决了:

我遇到的问题是当我有

ActiveCell.NumberFormat = "# ?/?"

在我的代码中,它导致Excel的中心线向左移动(这是我知道如何解释它的唯一方法)。

意思是,如果你有一些右对齐的东西,它看起来会居中,如果它居中,它几乎是左对齐的,左对齐和居中对齐之间几乎没有什么区别。

如果我有

ActiveCell.NumberFormat = "?/?"

那就不存在以上问题了。

本节完整代码如下:

Sub test()
  Sheets("sheet1").Select
  Range("a1").Select
  For i = 1 To 10
    ActiveCell.NumberFormat = "# ?/?"
    With ActiveCell
        .Locked = False
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
    End With
    ActiveCell.Value = 33
    ActiveCell.Offset(0, 1).Select
  Next i
End Sub

任何关于发生这种情况的建议或原因将不胜感激。理想情况下,用户应该能够看到混合数字。

更多信息,如果我手动将每个单元格更改为分数,那么它就可以正常工作。只有当 Excel 才能做到这一点。

excel fractions vba
4个回答
1
投票

它正在对齐数字,以便在使用固定宽度字体的列中查看时小数部分对齐。

3 1/3
2    
1 3/4
3 2/7
2 2/3
3 1/2
6   

1
投票

编辑(2)

我也用Excel 2007尝试过,手动或通过脚本更改NumberFormat都没有什么区别。

无论如何,下面的脚本应该可以满足您的需求。将其添加到您的工作表源中。

每当值更改时就会触发。然后它检查正确的列是否受到影响(在我的例子中为 1),然后尝试用分数格式化数字,但如果没有产生分数,则它使用无分数格式。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    For Each cell In Target.Cells
        If cell.Column = 1 Then
            If IsNumeric(cell.value) Then
                cell.NumberFormat = "# ?/?"
                cell.Calculate
                If InStr(1, cell.Text, "/") = 0 Then
                    cell.NumberFormat = "#"
                End If
            End If
        End If
    Next cell
End Sub

原帖

我只在Excel 2003中尝试过,但是手动设置和通过VBA设置没有区别。请确保您的代码执行的操作与手动执行的操作完全相同,只需记录您手动执行的宏并在另一个单元格上运行该宏即可。

这种转变的原因是 Excel 为分数保留了该空间。

 1,2 -> |      1 1/5|
 1   -> |      1    |
33   -> |     33    |
33,5 -> |     33 1/2|

以下是您想要的吗?

 1,2 -> |      1 1/5|
 1   -> |          1|
33   -> |         33|
33,5 -> |     33 1/2|

您为什么喜欢这种格式?


0
投票

实际上,条件格式可以更好地使所有内容居中。请参阅下图了解我的设置。

Fraction Format Rule


0
投票

条件格式是在 Excel 中居中或右对齐分数的方法,至少对我来说是这样。这就是我所做的:

1 突出显示要对齐的单元格

2 在“主页”选项卡中选择“条件格式”

3 进入“新规则”

4 选择“仅设置包含以下内容的单元格格式”

5 在下拉列表中选择“特定文本”

6 将下一个框保留为“包含”

7 放一个 . (句点)在文本框中(这将使Excel搜索任何数字中的小数点)

8 单击“格式”按钮

9 选择“分数”

10 单击确定

11 如果您尚未右对齐(或居中)单元格,请立即执行。 (对齐按钮位于主页选项卡中。)

魔法!

© www.soinside.com 2019 - 2024. All rights reserved.