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



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

[A1]  3 CASES
[A2]  33 UNITS

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

我想通过excel公式将这些数据标准化为单位,用于报告目的。我尝试使用公式

=CELL("format",A1)

但返回的值是F0,而不是:#"CASES"

如果每个CASE有5个单位,我希望有一个额外的列,用一个类似于的公式计算归一化单位

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

这样,B列中的标准化单位将是

[B1]  15
[B2]  33

您可以使用自定义函数。

函数get_format(r As Range)As Stringget_format=r.NumberFormat结束函数

然后使用

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

或者你可以检查一下CASE这个词是否是数字格式的

函数check_case(r As Range)为布尔值check_case=InStr(1,r.NumberFormat,"case")结束函数

=if(check_case(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列),输入

=ExtractUnits

它计算起来真的非常慢,但它把数据作为文本输出。我的长度都一样,所以我用right来提取单位,但你可以找到空间并解析。如果需要其他单元,请更改偏移参数。

最新更新