2012-11-02 2 views
1

색으로 구분해야하는 사용자 출력이 포함 된 (상당히 큰) 스프레드 시트를 생성하는 응용 프로그램이 있습니다. 데이터를 생성 할 때 색상을 지정해야하는 블록을 찾았지 만 색상을 지정하면 한 번에 한 블록 씩 처리하면 시간이 오래 걸릴 수 있습니다. 내가 뭘하고 싶습니다 큰 연속되지 않는 셀 그룹을 유지하고 하나의 Excel Interop 호출을 사용하여 색을 지정합니다.인접하지 않은 셀 블록의 색을 빠르게 채색하십시오.

지금 당장은 각 색상의 범위를 유지하고 있으며 그 색상을 필요로하는 새 블록을 찾을 때마다 기존 범위와 새 블록의 결합을 취합니다. 그런 다음 그 범위의 색을 입 힙니다. 불행히도 이것은 대용량의 경우 매우 느리고 일종의 버그입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 나는 수천 개의 세포를 채색하는 것이 이처럼 오래 걸리지 않아야한다고 생각한다. :)

편집 은 다음 코드는 조건부 서식으로 해결 (올바른 단어를 가정 잘못된는 열 B에 존재하는)

With newSheet.Range("B:B") 
    .FormatConditions.Add(Excel.XlFormatConditionType.xlCellValue, Excel.XlFormatConditionOperator.xlEqual, "CORRECT") 
    .FormatConditions(1).Interior.ColorIndex = 4 

    .FormatConditions.Add(Excel.XlFormatConditionType.xlCellValue, Excel.XlFormatConditionOperator.xlEqual, "INCORRECT") 
    .FormatConditions(2).Interior.ColorIndex = 3 
End With 

나는 아직도하고 싶은 유일한 색상 "올바른"세포를 포함하는 것 이상. 대신 차트의 전체 행에 색상을 지정하고 싶습니다 (예 : B42에 'CORRECT'가 포함 된 경우 A42 : H42 (녹색이 포함 된 행)를 표시하고 싶습니다. 그 일을하기위한 조언?

+1

상황에 따라 조건부 서식을 사용할 수 있습니까? – ApplePie

+1

왜 한 번에 하나씩 셀을 설정하는 것이 느리지 만 왜 유니언/멀티 레인지의 색상을 느리게 설정할 수 있습니까? 모든 착색 작업의 일부로 멀티 레인지를 재구성하고 있습니까? (확실하게 여기에 몇 가지 코드를 볼 수 있습니다). – RBarryYoung

+0

느린 답장을 드려 죄송합니다. 직장에있을 때만 코드에 액세스 할 수 있습니다. 나는 조건부 포맷팅이 문제를 해결할 것이라고 생각한다. 테스트를 마친 후 바로 다시보고 할 것이다. 그렇지 않으면 문제를 더 자세히 설명하는 코드를 게시 할 것입니다. 기본적으로 설정 색상이 느리지 만 유니온을 작성하고 있습니다 (newRange = Union (oldRange, newBlock)) – Keilan

답변

0

조건부 서식을 사용할 수 있습니다.

같은 행의 채색 셀은 수식 조건부 서식을 사용해야합니다. 예를 들어 열 A, C 및 D를 E의 값에 조건부 형식으로 지정하려면 다음과 같이 할 수 있습니다 (의사 코드) :

현재 행의 열 A, C 및 D에 대해 집합

=IF($Erow=something, 1, 0) 
또한

http://msdn.microsoft.com/en-us/library/office/ff822801.aspx

, 원래 제안 C : 수식 조건부 서식 : 이것은 아마 같은 무언가로 번역하는 것

술어는 열 $ E와 현재 행을 기반으로 형식적인 포맷팅을 수동으로하는 것에 대해 이야기하고있었습니다. 이 작업을 위해 VBA를 사용해야하는 이유가 있습니까?

+0

다시 도움을 주셔서 감사합니다. VBA에서이 작업을 수행하는 이유는이 응용 프로그램이 나 외에 다른 데이터 집합을 사용하는 사람들에 의해 사용될 것이므로 수동으로해야한다고 사용자에게 말하면 상황이 훨씬 덜 세련되게 보입니다. 쉽게 읽을 수 있도록 스프레드 시트의 색상을 지정하십시오. :) – Keilan

관련 문제