如何应用动态数字格式?

Posted

技术标签:

【中文标题】如何应用动态数字格式?【英文标题】:How can I apply dynamic number formatting? 【发布时间】:2019-09-09 13:29:15 【问题描述】:

我为我的加密货币投资组合编写了一个 Excel 文档。我在表格中添加新货币,然后通过 API 将数据提取到表格中以获取价格。我将结果格式化如下:#.##0,00000000 [$ETH](用于以太坊)。

我想要实现的是,当我在 A 列中输入货币时,B 列中的值被格式化为这种货币。

示例:http://prntscr.com/p3sof8

因此,如果我在 A5 中输入 XRP,B5 中的值将显示为 0,00000000 XRP。 我不会使用固定数量的货币,因为我可能每天都会添加新货币。

上述逻辑的基本版本是:

将 A 列中的货币输入到格式参数中,例如:#.##0,00000000 [$],但 BTC 除外,其格式为:฿0,00000000 .

【问题讨论】:

【参考方案1】:

将其放在您的工作表中,例如“Sheet1”

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Count = 1 Then
            If .Column = 1 Then
                If .Value <> "BTC" Then
                    .Offset(, 1).NumberFormat = "0.00000000" & """ " & .Value & """"
                Else
                    .Offset(, 1).NumberFormat = """" & ChrW(&HE3F) & """" & "0.00000000"
                End If
            End If
        End If
    End With
End Sub

【讨论】:

非常感谢您的回答。它似乎有效,但它移动了小数点。我不是 VBA 专业人士,尝试编辑了一下,但没有成功:prntscr.com/p4kwix 是否有可能有 0,00000000 - 所以总是 8 位小数?谢谢! 更新了我的答案,似乎它之前使用千位分隔符作为小数点,所以我删除了它。我还添加了一个条件,如果同时编辑多个单元格,则会停止它,因为如果这样做会导致错误。 另一个问题:我可以将表达式“绑定”到一个表吗?因为我需要这个功能,例如在第 3 列的 Table1 上,在第 5 列的 Table2 上等等? @KGx 可能但“另一个问题:”应该作为另一个问题发布。以下是您可以在下一个问题中回答的几个问题:您在同一张纸上是否有多个表格,或者它们是否位于不同的表格中?他们都有相同的起始列吗?偏移量应该保持不变吗?还可以尝试添加一些代码,也许是更解释性的图片 好的,谢谢 - 我会打开另一个问题并包含建议的内容。【参考方案2】:

无需使用 VBA。您可以使用条件格式来做到这一点。

做具体的例子:

    转到单元格 B5 点击Conditional Formatting > New Rule... 选择Use a formula to determine which cells to format 如公式,输入=$A$5="XRP" 单击格式并在数字选项卡上,将其设置为自定义,例如#.##0,00000000 [$XRP]

我将由您来概括这一点

【讨论】:

谢谢 - 我已经试过了,但是由于我使用了许多不同的货币,条件格式看起来很乱

以上是关于如何应用动态数字格式?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 SQL 格式的动态 where 子句制作谓词

如何在 WPF Datagrid 中动态更改字符串货币格式

如何以html格式动态突出显示一些单词

将动态范围的数据格式化为文本

七:动态规划-数字三角形

动态规划的背包问题《数字组合》