为什么Excel宏识别−;作为问号?
我试图将一个包含正百分比和负百分比的列转换为普通数字。例如,-3.5%到3.5%。将正百分比转换为简单数字没有问题。但对于负数,结果显示为FALSE 我怀疑问题出在这个角色的开头−0.27%,与通常的负(-0.27%)不同。如何编写宏来解决这个问题 宏代码:为什么Excel宏识别−;作为问号?,excel,vba,Excel,Vba,我试图将一个包含正百分比和负百分比的列转换为普通数字。例如,-3.5%到3.5%。将正百分比转换为简单数字没有问题。但对于负数,结果显示为FALSE 我怀疑问题出在这个角色的开头−0.27%,与通常的负(-0.27%)不同。如何编写宏来解决这个问题 宏代码: ActiveCell.FormulaR1C1 = _ "=IF(EXACT(LEFT(RC[-4],1),""""),RIGHT(RC[-4],LEN(RC[-4])-1)*
ActiveCell.FormulaR1C1 = _
"=IF(EXACT(LEFT(RC[-4],1),""""),RIGHT(RC[-4],LEN(RC[-4])-1)*-1*100,IF(EXACT(LEFT(RC[-4],1),0),RC[-4]*100))"
试一试
替换
−使用-
编码>并将其转换
试一试
您不需要宏,只需使用Excel的内置函数ABS
如下
=绝对值(A2)*100
如果您需要自动使用VBA,那么您也可以使用ABS功能。要回答标题中的问题,VBA编辑器只能识别范围为“[00-FF]”的代码。高于FF
的代码作为问号(3F
)呈现。您的数据包含unicode减号(2212
),因此呈现为?
。要更正此问题,只需将Unicode减号替换为ASCII连字符减号即可,如@Siddharth Rout所述
Sub Macro1()
ActiveCell.Value = "=ABS(RC[-4])*100"
ActiveCell.NumberFormat = "General"
End Sub
ActiveCell.FormulaR1C1 = "=ABS(SUBSTITUTE(RC[-4],""−"",""-""))"