我的Excel数据在负值周围有括号,但Excel并不将其视为负值,而是将它们视为文本。例如,尝试将有($25.00)和$50.00的单元格相加会给出#值!错误。
数据是从csv文件导入的。
这不是格式化问题,更改负值格式不会改变任何事情。那么,如何将这些值转换为实际负数呢?
谢谢。
这是一些样本数据,以防有人想要。所以括号中的值应该是负数,但现在似乎是文本。
($25.00)
$50.00
($35.00)
($15.00)
发布于 2014-04-15 13:14:21
尝试将$
替换为nothing,)
替换为nothing,(
替换为-
。
发布于 2015-09-09 19:28:03
在未使用的单元格中键入1
。复制它。选择存储为文本的数字,并选择主剪贴板-粘贴-粘贴特殊-乘。删除1
。
发布于 2015-09-09 15:16:33
用于将数字($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,如上面所示的情况,表中的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
https://stackoverflow.com/questions/23084711
复制相似问题