내 Excel에서 두 개의 워크 시트가 있습니다. 첫 번째 시트를 사용하면 드롭 다운 목록에서 계산 방법을 선택하고 계산을위한 변수를 입력 할 수 있습니다 (녹색 셀, 파란색 열이 표시됨). 일부 상수). 결과 항목은 두 번째 워크 시트 (데이터베이스)에서 해당 계산 수식을 검색 한 다음 수식을 시트 1에 붙여 넣습니다. 수식을 사용하여 데이터베이스의 셀 대신 시트 1의 셀을 사용하여 계산해야합니다. I는 계산식으로부터 세포를 사용하는 결과를 얻을 것이다 VLOOKUP :=Eval(VLOOKUP(A3,Database!A2:E10,5,FALSE))
으로 평가를 조합하여상대 셀을 사용하여 return 공식을 Excel로
Function Eval(ref As String)
Eval = Application.Evaluate(ref)
End Function
:
현재 I는 다음과 같이 평가라는 유저 정의 함수를 만들어 내 데이터베이스, 수식이 시트 1에서 계산 중에 얻은 결과를 어떻게 얻을 수 있습니까?
안녕 더크에게, 질문이 대단히 감사합니다 경우
=B##*C##*D##
, 내가 게시 된 문제는 단지 단순화 된 버전입니다. 고려할 수있는 방정식이 50 개를 넘을 수 있으므로 선택 공식이 길어질 수 있습니다. 그러나 두 번째 경우, UDF를 내 모듈에 직접 복사하면 어떤 이유로 인해 이전 Eval 함수와 동일하게 작동합니다. 해당 UDF에 대한 추가 도움을 제공해 주실 수 있습니까? –
@LiuRoye'Evaluate' 함수는 시트가 아니라 응용 프로그램에서 실행됩니다. 'Sheets ("Sheet1"). Evaluate (...)와 같이 사용되면 항상 "Sheet1"을 사용합니다. 'Application.Evaluate (...)'로 직접 사용될 경우,'ActiveSheet'를 사용합니다. 여러 장을 교차 사용하면'Application.Evaluate (...)'가 매우 실패 할 수 있습니다. Sheet2 A1에서 A2와 A2에서 2. Sheet1 A2에서 '1'을 입력하십시오. 이제 Sheet1에서'Sheet2! A1'을 사용하면'1'이 표시됩니다. 하지만 sheet2로 가서 'A1'을 다시 입력 한 다음 sheet1로 돌아 가면 수식에'2 '가 표시됩니다 (내 코드는 여전히 1이어야합니다). –
@LiuRoye 모든 문제를 피하는 가장 좋은 방법은 사용하고 있습니다. 'Sheet1! B2 * Sheet1! C2 * Sheet1! D2'와 같은 완전한 참고 문헌. 이렇게하면 원하는대로 할 수 있습니다.) –