Eval()을 사용하여 Main에 저장된 일부 함수를 가져 와서 Sheet2의 값으로 평가하려고합니다. 지금까지 메인 및 순수 텍스트에 대한 정적 참조가 작동하지만 상대 셀을 참조하는 데 문제가 있습니다.현재 시트로 다른 시트에서 수식 평가
이상적으로, 기본 워크 시트는 정적 참조와 상대 참조를 결합하고 테이블의 행 (이 예에서 A7, A8, ...)과 같은 열에 기능을 적용합니다. 작은 따옴표는 SQL을 형성하기위한 것입니다. 여기 구현하려는 기능 중 하나입니다.
=CONCATENATE(Main!$B$30, "'", A7, "', '", B7, "', '", C7, "', '", D7, "', '", E7, "', '",F7, "', '",G7, "', '",H7, "', '",I7, "', '",J7, "', '", K7, "', ",$B$4,Main!$B$35)
문제는 내 평가 기능에 있다고 생각합니다. 활성 시트의 셀 값으로 A7을 평가하지 않습니다. CurrentSheet! A7과 같은 기능을 변경하는 방법을 찾고 있었지만 적절한 구문을 찾을 수 없었습니다.
Function Eval(Ref As Range)
Dim shCurrent As Worksheet: Set shCurrent = ActiveSheet
Application.Volatile
Application.ThisCell.Parent.Activate
Eval = Application.ThisCell.Parent.Evaluate(Ref.Formula)
shCurrent.Activate
End Function
나는 주! $ E $ 5 안에 엑셀 위의 기능을 가진 세포입니다 내 테이블 열을 복사, 같은 시트 2에서이 평가 기능을 참조하고 있습니다.
=EVAL(Main!$E$5)
답변
나는의를 예를 bwyn 내에서 사용할 수 있도록 수정 걸렸습니다. 이것은 위의 Excel 기능이 VB 함수처럼 보이게 한 것입니다. 행 번호를 매개 변수로 보내면 호출 기능이 가장 일반화되어 스프레드 시트 마스터가 한 위치에서 필요에 따라 "A"및 "K"값을 확장 할 수 있습니다.
Function EvalInsert(rowNum As Integer)
Dim shCurrent As Worksheet: Set shCurrent = ActiveSheet
Dim shMain As Worksheet: Set shMain = Sheets("Main")
Dim insertClose As String: insertClose = "'));"
Dim openParen As String: openParen = "'"
Dim closeParen As String: closeParen = "', "
Application.Volatile
Set insertOpen = shMain.Range("B30")
Set tableId = shMain.Range("B33")
Set TableName = shCurrent.Range("B1")
Set insertValues = shCurrent.Range(Cells(rowNum, "A"), Cells(rowNum, "K"))
EvalInsert = insertOpen.Value
For Each c In insertValues.Cells
EvalInsert = EvalInsert & openParen & c.Value & closeParen
Next
EvalInsert = EvalInsert & tableId & TableName & insertClose
End Function
나는 이것이 당신의 CONCATENATE 공식에서
=EvalInsert(ROW())
의견에 감사드립니다! 실제로 CONCATENATE를 단순화했습니다. 약 10 개의 셀이 변경됩니다. 내 원래의 CONCATENATE은 "= CONCATENATE (Main! $ B $ 30," ' ", A7,"', "", B7, " '," ", C7,"', ' ", D7,"' I7, " ','", J7, " '," ", K7,"K7 "," " ',", $ B $ 4, Main! $ B $ 35) ". 여러 가지 수식이 있지만 필요에 따라 함수를 만들 수 있습니다. 나는 이것을 반영하기 위해 메인 포스트를 업데이트했다. 혼란에 빠져서 미안하다. – Danielle
더 긴 수식에서는 행만 변경됩니다. 행 번호를 입력하고 관심 범위 (A7 : K7)를 선택하고 셀을 반복하여 연결 문자열을 만들 수 있습니다. – bwyn
좋아, 시도해 보겠습니다. :) 저는 Excel에서 VB 수식을 처음 접했을 때 성공했는지 다시보고 할 것입니다. – Danielle