2012-01-27 1 views
0

Range.Formula에 문제가 있습니다. 코드 조각은 (가정 Range 개체가 생성되고 null이 아닌 한)Range.Formula는 셀 참조를 사용하는 문자열을 반환합니다. 이유는 무엇입니까?

string formula; 
formula = Range.Formula;//it returns whatever is written in the formula, even the cell reference 

의 내가 상대 셀 참조를 사용하는 등 공식, =MyCalc(41, A1)을 가지고 있다고 가정 해 봅시다 다음과 같습니다. A1 셀에는 100이라는 값이 있습니다.

문자열 변수 formula의 값은 이 아니므로 =MyCalc(41, 100) 대신 원하는 값이됩니다.

Range.Formula가 셀 참조를 반환하지 못하도록하는 방법이 있는지 궁금합니다. 어떤 아이디어? 감사합니다

+2

수식에 대한 * 평가를하고 참조 된 셀 값을 대체하고 싶지만 완전한 수식을 평가할 수는 없으므로 (예 : MyCalc를 호출하고 결과)? 왜 그렇게 기대하니? –

+0

셀 참조가있는 수식을 웹 서비스에 전달할 수 없으므로 잘못된 결과가 나타납니다. 그래서 몇 가지 전처리 작업을 수행하고 그 안에 가치가있는 수식을 재구성해야합니다. – woodykiddy

+1

버그를 요청하고 있습니다 - 수식이 입력 된 수식이어야하며 다른 결과가 틀립니다. 평가 (업스트림 종속성 체인에 계산되지 않은 셀이있는 경우 실패 할 수 있음) 또는 셀의 현재 값이지만 셀의 수식은 셀의 수식을 사용하여 수식에서 결과를 가져올 수 있습니다. –

답변

0

수식의 요점은 정확하게 입력 된 것을 제공하는 것입니다. 수식을 거치고 재귀 적으로 해당 셀 범위의 값을 가져 오는 메서드를 작성할 수 있습니다.

이 작업이 수행되지 않은 이유는 재귀가 많이 발생할 수 있기 때문입니다. 셀 A1이 (예에서) actaull이 C100을 참조하는 셀 B2를 참조하는 경우 어떻게됩니까?

셀 참조를 취하여 VALUE (getCellValue) (수식 아님)을 가져 오는 함수를 작성했습니다. 그런 다음 수식을 가져오고, 정규식을 사용하여 셀 참조를 확인하고, 모든 참조에서 getCellValue를 호출하는 함수를 작성합니다.

+0

이것은 내가 생각하는 것과 매우 흡사합니다. 'string.split'을 사용하여 셀 참조 문자열을 셀 값으로 대체 할 생각입니다. – woodykiddy

+0

글쎄, 정규 표현식을 살펴보고, 그들은 훨씬 더 잘할 것이다. http://stackoverflow.com/questions/4932283/how-can-i-validate-an-excel-cell-reference-that-includes- 낱장 - 이름 –