我正试图通过读取自定义数字格式来规范化数据。以下单元格中的实际数据只有值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来提取单位,但你可以找到空间并解析。如果需要其他单元,请更改偏移参数。