2014-04-15 154 views
0

我有Excel数据的负值附近有括号,但Excel没有将它们看作负值,它似乎将它们作为文本。例如。试图总结具有($ 25.00)和$ 50.00的单元格给出#VALUE!错误。将括号括起来的数字转换为负数

数据从csv文件导入。

这不是格式问题,更改负值格式不会改变任何内容。那么,如何将这些值转换为实际的负数?

谢谢。

这是一些示例数据,以防万一有人想要它。所以括号中的数值应该是负数,但目前似乎是文本。

($25.00) 
$50.00 
($35.00) 
($15.00) 

回答

0

尝试用-取代$什么也没有,)什么也没有和(

+0

太明显了,只需用手动替换即可,谢谢! – Roope

+0

@Roope A相当简短,因为我怀疑你有其他想法 - 但有时'手动'即使不明显也是有意义的! – pnuts

0

像(6,437.55 $)将数字转换到货币数据类型完整的语法:

CASE WHEN IsNumeric(Replace(Replace(Replace([INPUT-COLUMN-NAME], ',', ''),')',''),'(','-')) = 1 Then Cast(Replace(Replace(Replace([INPUT-COLUMN-NAME], ',', ''),')',''),'(','-') AS Money) ELSE 0 END As [OUTPUT-COLUMN-NAME] 

这可以直接在SQL语句中使用类似 选择ColumnA,CASE WHEN如上,ColumnC 从表..加盟等等。

您也可以定义一个函数,如(它带有性能损失),并在select语句中使用函数。

CREATE FUNCTION dbo.ConvertStringToMoneyType(@input_Number varchar(50)) 
RETURNS MONEY 
AS 
BEGIN 

Declare @Output_Number money = 0 

Set @Output_Number = CASE WHEN IsNumeric(Replace(Replace(Replace(@input_Number, ',', ''),')',''),'(','-')) = 1 Then 
     Cast(Replace(Replace(Replace(@input_Number, ',', ''),')',''),'(','-') AS Money) ELSE 0 END 

RETURN @Output_Number 


END 
GO 
0

1键入未使用的单元格中。复制它。选择以文本形式存储的数字,然后选择主页 - 剪贴板 - 粘贴 - 选择性粘贴 - 相乘。删除1

相关问题