2014-03-26 2 views
5

# 오류 반환 나는이 내 쿼리의 열을 생성하는 다음과 같은 기능 :IIF (ISERROR()) 함수는 여전히

MTD :하여 IIf (ISERROR (FormatNumber ([62xx] [F40])), 0! , FormatNumber ([62xx]! [F40])

이 파일은 Excel 파일과 연결되어 있으며 숫자와 텍스트를 같은 열 (이 예에서는 F40)에 넣습니다. 내가보고있는 것이 숫자인지 텍스트인지 알아야합니다. 텍스트 인 경우 숫자를 원하면 숫자를 원하고 0을 원합니다. 텍스트 줄에 FormatNumber ([C107_62xx]! [F40])를 사용하면 오류가 발생한다는 것을 알고 있습니다. 오류가 발생하면 위의 iif 공식을 사용하면이를 0으로 변환하고 세계는 기뻐할 것입니다. 어떤 이유로 나는 여전히 iif 문으로 #error를 얻고있다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

나는 또한 IsNumeric 함수를 사용해 보았지만 여전히 #NUM을 얻는다! 오류가 발생합니다.

답변

5

IsError 당신이 생각하는대로하지 않습니다. 도움말 항목에서 "식이 오류 값인지 여부를 나타내는 부울 값을 반환합니다."을 트리거하는지 여부는 아니지만 식 인지 여부에 관계없이 오류 값입니다.

죄송합니다. 설명이 충분하지 않을 수 있지만 더 잘 수행 할 방법을 모르겠습니다. 따라서 여기에서 원하는 것을이 IsNumeric() 식으로 생각해 보시기 바랍니다. 여기

IIf(IsNumeric([62xx]![F40]), FormatNumber([62xx]![F40]), 0) 

는 그 다음 출력 쿼리에서 동일한 식이다. ISERROR 내가 그것을가하는 생각을하지 않는 이유

SELECT 
    [62xx].F40, 
    IIf(IsNumeric([62xx]![F40]), FormatNumber([62xx]![F40]), 0) AS MTD 
FROM [62xx]; 
F40 MTD 
----- ---- 
foo 0 
1  1.00 
2.345 2.35 
bar 0 
+0

는 이해가 안 돼요,하지만 난 당신의 제안을 시도했다. IsNumeric은 어떤 이유로 든 신뢰할 만하지 않습니다. 나는 peple이 미친 짓을하는 곳의 스프레드 시트에서 데이터를 가져 오는 것을 좋아하지 않습니다. 이 경우에도 작동합니다 : 'IIf (IsNumeric (FormatNumber ([62xx]! [F40])), FormatNumber ([62xx]! [F40]), 0)' – Nigel

+0

때때로 엑셀과 엑세스가 나는 그들을 원한다. 도와 주셔서 감사합니다. – Nigel

+0

예, 그 첫 번째 부분에 대해서 ... IsError()는 오류를 트랩 *하는데 사용할 수 없으며 오류 값인지 여부 만 알려줍니다. 예를 들어, 0으로 나누면 오류 # 11, "0으로 나누기"가 트리거됩니다. 하지만 IsError (1/0)는 True를 말하지 않을 것입니다. 대신 오류 # 11을 트리거합니다. IsError (11)는 False라고 말합니다. 실제 오류 값은 다른 유형의 변수입니다. 그리고 IsError (CVErr (11))는 True를 반환합니다. – HansUp