Excel公式返回单元格';自定义格式

Excel公式返回单元格';自定义格式,excel,excel-formula,Excel,Excel Formula,我试图通过读取自定义数字格式来规范化数据。以下单元格中的实际数据只有值3和33 [A1] 3 CASES [A2] 33 UNITS 显示术语“案例”和“单位”是因为它们是每个单元格不同的自定义格式的一部分。例如 A1具有自定义数字格式代码:#“CASES”,A2具有自定义数字格式代码:#“UNITS” 我想通过excel公式将这些数据标准化为单位,以便于报告。我试图使用这个公式 =CELL("format",A1) 但返回的值是F0,而不是:#“CASES” 如果每种情况有5个单位,我

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

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

我想通过excel公式将这些数据标准化为单位,以便于报告。我试图使用这个公式

=CELL("format",A1)
但返回的值是F0,而不是:#“CASES”

如果每种情况有5个单位,我希望有一个额外的列,用一个公式计算标准化单位,如下所示:

=IF(CELL("format",A1)="CASES",5*A1,A1)
这样,B列中的标准化单位将为

[B1]  15
[B2]  33

您可以使用自定义函数

Function get_format(r As Range) As String get_format = r.NumberFormat End Function
=if(检查案例(A1),5,*A1,1)
通过复制工作簿模块中的附加代码来构建用户定义的函数,然后您可以在工作表中使用它作为
=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

我也一直在努力解决这个问题。
可能的解决方案是使用旧的Excel 4宏函数

按CTRL-F3键启动宏编辑器,创建新宏,并为其命名为ExtractUnits

在“引用”框中,输入

=GET.CELL(53,OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),0,-1))
在数据右侧的单元格(在本例中为B列)中,输入

它真的,真的很慢计算,但让我的数据作为文本出来。 我的都是相同的长度,所以我使用right来提取单位,但您可以找到空间并进行解析。
如果您想要一个不同的单元格,请更改偏移参数。

感谢您的回答,但希望避免使用用户定义的函数。我认为,如果没有用户定义的函数或创建一列手动键入单位,您将无法解决此问题。您开始使用的数据格式并不理想。请欣赏答案,但希望避免使用用户定义的函数。接受失败并将使用用户定义的函数。将“案例”比较移到excel公式中,以便于调试/适应性。希望这能帮助下一个人。。。[B1]=IF(IFERROR(FIND(“CASES”,numberformat($A1)),FALSE),5*$A1,$A1)>公共函数numberformat(rgCell作为范围)作为字符串>numberformat=rgCell.numberformat>结束函数'
=GET.CELL(53,OFFSET(INDIRECT(ADDRESS(ROW(),COLUMN())),0,-1))
=ExtractUnits