是否有方法使用VBA(或一些excel函数)返回使用的自定义格式?
例如:
- 在单元格A1中,我有一个自定义格式的值100[$EUR]#.##0,00;[Red][$EUR]-#.##0,00
- 在单元格A2中,我使用自定义格式设置值为100[$PLN]#.##0,00;[Red][$PLN]-#.##0,00在A1中,我用红色标记EUR -100,00A2中我用红色标记PLN -100,00
现在让我们假设我只想对那些格式为EUR的单元格做一些计算(在上面的例子中,这意味着单元格在其自定义格式中有[$EUR])
关于如何获得自定义格式字符串或任何其他将帮助我区分这两个单元格的自定义格式的想法?
我尝试Excel公式CELL("format";A1)和CELL("format";A2),但它们都返回,2-
我见过许多VBA解决方案来格式化单元格,但我没有发现任何VBA函数返回使用的自定义格式(有方法返回一些一般的东西,如颜色,是数字等,但我没有找到任何自定义格式返回)。
如果要读取单元格的格式(自定义或非自定义),则使用:
Range("A1").NumberFormat
如果你想要一个小的UDF,你可以从工作表本身调用,你需要少量的VBA:
创建一个新的模块,如果你没有。
粘贴以下内容:
Function formatting(rng As Range) As String
Application.Volatile
formatting = rng.Cells(1, 1).NumberFormat
End Function
注意,这将始终返回区域内第一个单元格的格式。
然后,在任何给定的单元格中,您可以调用该函数-例如
=formatting(A1)
从那里,你可以使用普通的文本操作函数,如Left, Mid等来定位颜色代码或货币符号-例如
=IF(LEFT(formatting(A1),2)="[$",MID(formatting(A1),3,3),"No currency found")
会得到结果EUR