Excel公式返回单元格的自定义格式

时间:2013-12-03 23:03:13

标签: excel excel-formula

我正在尝试通过读取自定义数字格式来规范化数据。以下单元格中的实际数据仅具有值3和33

[A1]  3 CASES
[A2]  33 UNITS

显示术语“CASES”和“UNITS”,因为它们是与每个单元格不同的自定义格式的一部分。例如 A1具有自定义数字格式代码:#“CASES”,A2具有自定义数字格式代码:#“UNITS”

我想通过excel公式将这些数据规范化为UNITS以用于报告目的。我试图使用公式

=CELL("format",A1)

但返回的值是F0而不是:#“CASES”

如果每个CASE有5个单位,我希望有一个额外的列,用一个公式来计算NORMALIZED UNITS:

=IF(CELL("format",A1)="CASES",5*A1,A1)

这样,B列中的NORMALIZED UNITS将是

[B1]  15
[B2]  33

3 个答案:

答案 0 :(得分:5)

您可以使用自定义功能。

Function get_format(r As Range) As String

get_format = r.NumberFormat

End Function

然后使用

=if(get_format(a1)="# " & CHAR(34) & "CASE" & CHAR(34),5,*A1,1)

或者您可以查看单词CASE是否采用数字格式

Function check_case(r As Range) As Boolean

check_case = InStr(1, r.NumberFormat, "CASE")

End Function

=if(check_case(A1),5,*A1,1)

答案 1 :(得分:2)

通过复制工作簿模块中的附加代码来构建用户定义的函数,然后可以在工作表中将其用作=if(iscase(a1),5,1)*a1

Function IsCase(rgCell As Range) As Boolean
If InStr(UCase(rgCell.NumberFormat), "CASE") > 0 Then
    IsCase = True
Else
    IsCase = False
End If

End Function

答案 2 :(得分:0)

我也一直试图解决这个问题。
使用旧的Excel 4宏功能可能的解决方案。

CTRL-F3 可以启动宏编辑器,创建新的宏,并为其命名,例如 ExtractUnits

在“引用”框中,输入

=GET.CELL(53,OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),0,-1))

在数据右侧的单元格中(在本例中为B列),输入

=ExtractUnits

计算起来确实非常慢,但是却把数据作为文本输出了。 我的长度都是一样的,所以我使用权来提取单位,但是您可以找到空间并进行解析。  如果要使用其他单元格,请更改偏移量参数。