EPPlus를 사용하여 다양한 테스트의 결과를 기록한 엑셀 워크 시트를 내보내고 기본 요약을 작성했습니다. 나는이 코드 라인이 잘 작동한다.EPPlus가 다른 워크 시트에서 호출하는 수식의 범위를 올바르게 지정하지 않습니다
groupsheet.Cells[3, 5, 3, (25 + (tPts.Count() - 1) * 9) ].Formula = "AVERAGE(E6:E"+(5+ mCount).ToString()+")";
groupsheet.Cells[4, 5, 4, (25 + (tPts.Count() - 1) * 9) ].Formula = "STDEV(E6:E"+(5+ mCount).ToString()+")";
groupsheet.Cells[5, 5, 5, (25 + (tPts.Count() - 1) * 9) ].Formula = "MAX(E6:E"+(5+ mCount).ToString()+")";
EPPlus에서 기대할 수있는 코드 범위는 다음과 같다. 따라서 E3는 "평균 = E6 : E8"을 얻습니다. (mCount가 3이면) F3는 "평균 (F6 : F8)"등을 끝까지 얻습니다 (tPts의 길이로 정의 됨). 마찬가지로 4 번 행의 모든 것은 원하는 범위의 표준 편차를 얻고 5 번 행의 모든 것은 원하는 범위의 최대 값을 얻습니다.
또한 모든 개별 그룹 시트의 데이터를 기록하는 전체 요약 시트가 있습니다. 현재 다음 코드를 사용하여 정확한 값을 복사하여이 작업을 수행하고 있습니다.
summarysheet.Cells[3 + groupCount * 4, 5, 5 + groupCount * 4, (25 + (tPts.Count() - 1) * 9)].Value = groupsheet.Cells[3 , 5, 5 , (25 + (tPts.Count() - 1) * 9)].Value;
이 요약 시트에 적절한 장소에 개별 groupsheet에서 값을 넣어 예상대로 작동합니다. 그러나 각 셀에 개별 그룹 워크 시트 (Group1, Group2, Group3 ...)의 해당 셀에 대한 참조가 포함되어 있으면 개별 시트 시트의 변경 사항과 함께 요약 시트가 동적으로 변경됩니다.
내 직감은 이렇게하는 적절한 방법은 다음 코드를 통해 것이라고 말합니다.
summarysheet.Cells[3 + groupCount * 4, 5, 5 + groupCount * 4, (25 + (tPts.Count() - 1) * 9)].Formula = "Group"+ groupNumKey.ToString() +"!E3";
그러나 이것은 셀 E3의 수식을 모든 단일 셀에 붙여 넣기 만합니다. 수식이 하나의 워크 시트 내에 모두 포함되어있을 때와 같은 방식으로 범위를 호출하는 방법을 알아낼 수 없습니다.
감사합니다.
이것은 "Base26Encode는"A 26 주어진 경우 1, Z를 부여 할 때, AA 주어진 27 출력 코드의 조각이 무작위 방식
// Iterate over each column to put the references in place
int currColNum = 5; //Start at 5 (E)
string currColName = "E";
int maxColNum = (25 + (tPts.Count() - 1) * 9); // End at the last column
while (currColNum <= maxColNum)
{
currColName = Base26Encode(currColNum); // Finds the excel column name from the row #
summarysheet.Cells[3 + groupCount * 4, currColNum].Formula = "Group" + groupNumKey.ToString() + "!" + currColName + "3"; // Grab Average
summarysheet.Cells[4 + groupCount * 4, currColNum].Formula = "Group" + groupNumKey.ToString() + "!" + currColName + "4"; // Grab STD
summarysheet.Cells[5 + groupCount * 4, currColNum].Formula = "Group" + groupNumKey.ToString() + "!" + currColName + "5"; // Grab Max
currColNum++;
}
하려고 시도한이기 때문에 (컬럼 인덱스를 엑셀 열 이름으로 변환)
안녕하세요 @ 에르니, 제 문제를 잘 설명하지 못했습니다. 요약 시트 셀 E3에 그룹 시트의 E3에 대한 참조가 포함되도록하고 요약 시트 셀 F3에 그룹 시트의 F3에 대한 참조가 포함되도록하고 데이터의 마지막 열이 무엇이든 상관 없습니다. 처음 세 줄을 사용할 때 열심히 코딩되었지만 E5 = 평균 (E6 : E8), F5 = 평균 (F6 : F8), 배설물이 동적으로 변경되었습니다. 그러나 그것은 다른 시트를 참조하려고 할 때 작동하지 않으며 변경할 수있는 것인지 알 수 없습니다. –
@IsaacLittle 위의 RTC 참조하십시오. – Ernie
안녕하세요, @Ernie, 그래서 나는 그것을 강요하는 간단한 해결 방법을 발견했습니다. 어쩌면 내가 분명히 밝히면 도움이 될 것입니다. 이제 그 내용을 본문에 추가 할 것입니다. –