Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缩进选择中的中心对齐最大数

缩进选择中的中心对齐最大数
EN

Stack Overflow用户
提问于 2016-07-01 12:08:00
回答 2查看 96关注 0票数 0

我有一个长期的格式挫折。我经常手动这样做,但手动操作需要花费很长时间,而且必须有一种方法可以用VBA宏、条件格式或巧妙的数字格式来完成。

下面是我想要的结果。它具有以下属性:

  1. 列中的最大数字(在本例中是列中的最后一个数字,$103,420)集中在单元格内。
  2. 然而,单元格中最大的数字不是对齐的,它是正确缩进的,直到值被居中为止。
  3. 列中的所有其他数字也是对的,缩进的数量相等。这是可取的,因为它排列了一个位置,十位等在每一个数字。
  4. 负数用括号表示。
  5. 美元符号与最左边的数字相邻。
  6. 对于大于999的数字,适当地包括逗号。

取得这一成果的途径是:

  1. 应用下列数字格式:$#,##0_);($#,##0)_);$0_);@_)
  2. 手动调整最大数字上单元格的右缩进,以确定它何时大致居中。如果其中一方必须有更多的空间,则在数字的左边留下较大的空间。

我试图应用一种类似于响应this question.的数字格式,具体而言,我使用它的尝试是使用以下数字格式对齐所有单元格:$?,??0;($?,??0);

这将产生下面的关闭结果,但不完全是下面的结果。

关于我如何解决这个问题的想法?我在想象一个宏,它识别所选内容中最大的数字,获取该数字中的数字数,字体大小,列的宽度,进行一些计算,生成所需的右缩进,然后应用右缩进。我只是不知道该怎么做那种计算。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-02 18:38:22

克里斯-你的答案没有达到我的期望(你的答案在美元符号和“最后”数字之间留出了空间,因为数字比集合中最长的数字要短)

但是,您的代码是我想出的解决方案的一个有用的起点。结果显示在下面的图像中,以及这个解决方案的固有缺点--在列中的数字被格式化后,运行一个公式就会产生一个奇怪的数字格式。

我能想出的唯一解决方案没有这个解决方案的问题,那就是依赖于估计一个缩进,并应用它。该解决方案只有在列宽不向前调整的情况下才能工作。如果对其进行调整,则必须重新运行宏。此外,由于缩进只能增加1(且不少于1),应用缩进的宏通常会导致列中的最大数字不精确地居中。这不是什么大不了的事,但我目前的解决方案没有这些问题,在我的用例中,这些格式是格式化电子表格过程中的最后一步,所以不太可能发生额外的计算,如果有,宏就可以根据需要重新运行。

代码语言:javascript
运行
AI代码解释
复制
'Select your data range, and run formatCells_Accounting().  The number formatting in the selected cells will widen to the cell with the longest value.  Note, the macro does not work on values greater than 10^14 (not sure why.)
Sub formatCells_Accounting()
    Dim rg, thisColRange, rCell As Range
    Dim maxVal, minVal, valueLen, longest_, lenLongest As Long

    Set rg = Selection

    'Center aligns all selected cells
    rg.HorizontalAlignment = xlCenter

    'Loops through each column in the selected range so that each column can have it's own max value
    For Each thisColRange In rg.Columns

        maxVal = Application.WorksheetFunction.Max(thisColRange)
        minVal = Application.WorksheetFunction.Min(thisColRange)

        'The longest number in the range may be the most negative
        'This if section accounts for this scenario
        If Abs(minVal) > maxVal Then
            longest_ = minVal
        Else
            longest_ = maxVal
        End If

        'Gets the length of the longest value rounded to the ones place (aka length not including decimals)
        lenLongest = Len(CStr(Round(Abs(longest_), 0)))

        'Creates a number format for every cell
        For Each rCell In thisColRange.Cells
            'Gets the length of the value in the current cell
            valueLen = Len(CStr(Round(Abs(rCell.Value), 0)))
            rCell.NumberFormat = "_(" & addCommasDollarsToFormat(lenLongest, valueLen, rCell.Value) & "_);" & _
                                 "_(" & addCommasDollarsToFormat(lenLongest, valueLen, rCell.Value) & ")_);" & _
                                 "_(" & Left(addCommasDollarsToFormat(lenLongest, 1, rCell.Value), Len(addCommasDollarsToFormat(lenLongest, 1, rCell.Value)) - 1) & "0_);" & _
                                 "_(@_)"
        Next
    Next

End Sub

Function addCommasDollarsToFormat(ByVal lenLongest, ByVal valueLen, ByVal cellVal) As String

    Dim new_str_ As String
    Dim i, j As Long

    'Initializes empty strings
    new_str_ = ""
    nearlyFinishedString = ""

    'Adds ? and , through the length of the value currently being formatted
    For i = 1 To valueLen
        If i Mod 3 = 1 And i <> 1 Then
            new_str_ = new_str_ & ",?"
        Else
            new_str_ = new_str_ & "?"
        End If
    Next

    If cellVal < 0 Then
        new_str_ = new_str_ & "$("
    Else
        new_str_ = new_str_ & "$"
    End If

    For j = i To lenLongest
        If j Mod 3 = 1 Then
            new_str_ = new_str_ & ",?"
        Else
            new_str_ = new_str_ & "?"
        End If
    Next

    addCommasDollarsToFormat = StrReverse(new_str_)

End Function

解决方案可视化与下面显示的解决方案的缺点。

票数 0
EN

Stack Overflow用户

发布于 2016-07-01 20:52:22

代码语言:javascript
运行
AI代码解释
复制
'Select your data range, and run formatCells_Accounting().  The number formatting in the selected cells will widen to the cell with the longest value.  Note, the macro does not work on values greater than 10^14 (not sure why.)

Sub formatCells_Accounting()
Dim rg As Range
Set rg = Selection

maxVal = Application.WorksheetFunction.Max(rg)
minVal = Application.WorksheetFunction.Min(rg)

If Abs(minVal) > maxVal Then
    longest_ = minVal
Else
    longest_ = maxVal
End If

lenLongest = Len(CStr(Round(longest_, 0)))

rg.NumberFormat = "_($" & addCommasToFormat(lenLongest) & "_);" & _
                  "_(($" & addCommasToFormat(lenLongest) & ");" & _
                  "_($" & addCommasToFormat(lenLongest - 1) & "0_);" & _
                  "_(@_)"


End Sub

Function addCommasToFormat(ByVal lenLongest) As String
    str_ = String(lenLongest, "?")
    new_str_ = ""

    For i = 1 To Len(str_)
        If i Mod 3 = 1 And i <> 1 Then
            new_str_ = new_str_ & ",?"
        Else
            new_str_ = new_str_ & "?"
        End If
    Next

    addCommasToFormat = StrReverse(new_str_)
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38153234

复制
相关文章
常见MIME类型
常见MIME类型 按照功能排列的MIME_type类型 类型/子类型 扩展名 application/envoy evy application/fractals fif application/futuresplash spl application/hta hta application/internet-property-stream acx application/mac-binhex40 hqx application/msword doc application/msword dot app
forrestlin
2022/04/02
1.6K0
01_常用的MIME类型
.docx   application/vnd.openxmlformats-officedocument.wordprocessingml.document
shirayner
2018/08/10
1.3K0
[PHP] MIME邮件协议的multipart类型
multipart/mixed可以包含附件。 multipart/related可以包含内嵌资源。 multipart/alternative 纯文本与超文本共存
唯一Chat
2019/09/10
3.4K0
几种SVG图像的fallbacks
本文介绍了三种SVG图像的fallback方案,分别是使用图片作为占位符、使用srcset属性或使用SVG标签。这些方案各有优缺点,需要根据具体需求选择合适的方案。
练小习
2017/12/29
9590
几种SVG图像的fallbacks
SVG字体比IconFont更好用(SVG Sprite)
也许大家都用过字体图标(https://www.iconfont.cn/——,但这次看了这篇文章,感觉直接使用svg更加方便。。。
javascript.shop
2019/09/04
3.3K0
SVG字体比IconFont更好用(SVG Sprite)
MIME类型:从限定选择文件类型看MIME类型 前后端设置
其实,就是给input指定 媒体类型(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型 )
周陆军博客
2023/05/07
1.2K0
什么是docx,pptx等的正确MIME类型?[通俗易懂]
以下是HTTP Content Streaming的正确Microsoft Office MIME类型:
全栈程序员站长
2022/07/11
3.2K0
PPT导出时嵌入字体的方法
使用ppt的时候,很多时候会使用一些特殊字体,在其他计算机上无法正常显示。这个时候就需要导出PPT的时候进行字体嵌入。 1.1 常规方法 所谓常规方法,是指那些字体的许可协议允许随意分发,我们才能导出嵌入。以office ppt 2013为例。 首先打开文件菜单。 点击选项。 选择保存。在最下方有字体嵌入选项。 第一个选择是最小化字体,只适用于观看,不能继续编辑,但是可以减少文档大小。 第二个选择是嵌入完整的字体,相当于把字体分发到另一台电脑上,可以继续编辑文档。 1.2 非常规方法 也有些字体有许可限
用户1631416
2018/04/11
3.2K0
补习系列-springboot mime类型处理
MIME的全称是Multipurpose Internet Mail Extensions,即多用途互联网邮件扩展,尽管读起来有些拗口,但大多数人可能都知道, 这是HTTP协议中用来定义文档性质及格式的标准。IETF RFC 6838,对HTTP传输内容类型进行了全面定义。 而 IANA(互联网号码分配机构)是负责管理所有标准MIME类型的官方机构。可以在这里)找到所有的标准MIME
美码师
2018/08/27
2.2K0
SVG图像技术摘要
该公司今天没有,研究了最近流行SVG技术,发现,随着css3不断流行,和浏览器技术的发展,SVG网站将取代大量的图片,成为主流站点图片展示。
全栈程序员站长
2022/07/06
1.3K0
MIME 类型大全,你值得收藏
【转载请注明出处】:https://blog.csdn.net/huahao1989/article/details/107746738
后端老鸟
2020/08/02
2.6K0
MIME 类型大全,你值得收藏
SVG 图像入门教程
SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
ruanyf
2018/08/09
1.9K0
SVG 图像入门教程
文件下载-文件MIME类型对照表
MIME 类型 MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。 MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。 MIME列表 扩展名 MIME 1 application/octet-stream 323 text/h323 acx application/internet-property-stream ai application/postscript aif audio/x-aiff aifc a
KenTalk
2018/09/11
3.4K0
MIME 是什么以及对于文件类型
MIME 类型 它是HTTP协议中数据类型 英文全称:Multipurpose Internet Mail Extensions 多用途互联网邮件扩展类型 多功能 Internet 邮件扩充服务。 它与某一种文件的扩展名相对应 常见的MIME类型对应表 MIME类型 文件 超文本标记语言(.html .htm ) text/html 普通文本(.txt) text/plain RTF 文本(.rtf) application/rtf GIF 图形(.gif) image/gif JPEG图形(.jpeg .
用户9006224
2022/12/21
7530
修改Sublime Text 3 的侧边栏字体大小,字体类型
快捷键 ⌘(command)+⇧(shift)+P 打开 Command Palette 输入 PackageResourceViewer: Open Resource 回车,
李维亮
2021/07/09
1.1K0
SVG - 基本的SVG属性
SVG - 基本的SVG属性 HTML5学堂:在前一篇文章当中,我们讲解了SVG的基本知识,并且为大家介绍了如何在html文件当中书写SVG代码。今天我们具体讲解SVG的基本属性,如何使用SVG完成线、圆等图形的绘制。 line - 直线 拥有四中基本属性 x1 属性在 x 轴定义线条的开始 y1 属性在 y 轴定义线条的开始 x2 属性在 x 轴定义线条的结束 y2 属性在 y 轴定义线条的结束 demo <line x1 = "20" y1 = "20" x2 = "200" y2 = "180" st
HTML5学堂
2018/03/12
4.2K0
FireFox下Canvas使用图像合成绘制SVG的Bug
所有的事情都会有一个起因。 最近产品上需要做一个这样的功能:给一些图形进行染色处理。想想这还不是顺手拈来的事情,早就研究过图形染色的技术。于是我把之前写好的两种算法发给了小伙伴,让他参照实现,第一种算法是操纵像素、第二种使用了图像合成:globalCompositeOperation。 所有的事情都可能会有意外,写程序更是如此了。 没多久,小伙伴说,第二种算法在firefox下不起作用。
用户3158888
2019/07/12
9870
FireFox下Canvas使用图像合成绘制SVG的Bug
所有的事情都会有一个起因。 最近产品上需要做一个这样的功能:给一些图形进行染色处理。想想这还不是顺手拈来的事情,早就研究过图形染色的技术。于是我把之前写好的两种算法发给了小伙伴,让他参照实现,第一种算法是操纵像素、第二种使用了图像合成:globalCompositeOperation。 所有的事情都可能会有意外,写程序更是如此了。 没多久,小伙伴说,第二种算法在firefox下不起作用。
用户3158888
2019/07/10
1.2K0
前端-SVG 图像入门教程
SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector Graphics)。其他图像格式都是基于像素处理的,SVG 则是属于对图像的形状描述,所以它本质上是文本文件,体积较小,且不管放大多少倍都不会失真。
grain先森
2019/03/29
2.4K0
前端-SVG 图像入门教程
Font屌:中文图标字体(并支持SVG格式)
最近入手高清版的 MacBook Pro 之后,开始研究高清屏下一些图标怎么去展示的问题,一通瞎搜索,发现最好的方式是使用字体图标。国外这方面的资源很多,而国内图标字体非常少,今天终于找到一个中文字图标:Font屌(对于这个名字,各位自行评价吧...)。
Denis
2023/04/14
7900
Font屌:中文图标字体(并支持SVG格式)

相似问题

WOFF字体的Mime类型?

171

svg图像中的跨浏览器嵌入字体

23

@字体-face字体mime类型警告

12

如何返回字体的MIME类型?

10

适合OTF字体的MIME类型

1417
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档