Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Excel宏识别−;作为问号?_Excel_Vba - Fatal编程技术网

为什么Excel宏识别−;作为问号?

为什么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)*

我试图将一个包含正百分比和负百分比的列转换为普通数字。例如,-3.5%到3.5%。将正百分比转换为简单数字没有问题。但对于负数,结果显示为FALSE

我怀疑问题出在这个角色的开头−0.27%,与通常的负(-0.27%)不同。如何编写宏来解决这个问题

宏代码:

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],""−"",""-""))"