Excel의 차트에서 데이터를 추출하는 매크로

요약

Microsoft Excel에서는 데이터가 외부 워크시트 또는 통합 문서에 있는 경우에도 차트에서 데이터를 검색할 수 있습니다. 이는 차트를 만들거나 연결된 다른 파일에서 사용할 수 없거나 어떤 식으로든 손상된 경우에 유용합니다. 차트에 대한 원본 데이터가 손실되면 Microsoft Visual Basic for Applications 매크로를 사용하여 차트 자체에서 데이터를 검색할 수 있습니다.

추가 정보

Microsoft에서 제공하는 프로그래밍 예제는 예시를 위한 것일 뿐이며 이와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다. 이는 상품성이나 특정 목적에 대한 적합성의 묵시적인 보증을 포함하며 이에 제한되지 않습니다. 이 문서에서는 예제에 사용되고 있는 프로그래밍 언어와 프로시저를 만들고 디버깅하는 데 사용되는 도구를 사용자가 잘 알고 있는 것으로 가정합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 프로시저에 대한 기능을 설명할 수 있지만 사용자의 특정 요구 사항에 맞도록 예제를 수정하여 추가 기능을 제공하거나 프로시저를 구성하지는 않습니다.

다음 샘플 매크로는 첫 번째 열과 첫 번째 행부터 현재 통합 문서의 "ChartData"라는 워크시트에 차트의 원본 데이터를 배치합니다.

  1. 모듈 시트에 다음 매크로 코드를 입력합니다.

    Sub GetChartValues()
       Dim NumberOfRows As Integer
       Dim X As Object
       Counter = 2
    
       ' Calculate the number of rows of data.
       NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)
    
       Worksheets("ChartData").Cells(1, 1) = "X Values"
    
       ' Write x-axis values to worksheet.
       With Worksheets("ChartData")
          .Range(.Cells(2, 1), _
          .Cells(NumberOfRows + 1, 1)) = _
          Application.Transpose(ActiveChart.SeriesCollection(1).XValues)
       End With
    
       ' Loop through all series in the chart and write their values to
       ' the worksheet.
       For Each X In ActiveChart.SeriesCollection
          Worksheets("ChartData").Cells(1, Counter) = X.Name
    
          With Worksheets("ChartData")
             .Range(.Cells(2, Counter), _
             .Cells(NumberOfRows + 1, Counter)) = _
             Application.Transpose(X.Values)
          End With
    
          Counter = Counter + 1
       Next
    
    End Sub
    
  2. 통합 문서에 새 워크시트를 삽입하고 이름을 "ChartData"(따옴표 없이)로 바꿉니다.

  3. 기본 데이터 값을 추출할 차트를 선택합니다.

    참고

    차트는 워크시트 또는 별도의 차트 시트에 포함할 수 있습니다.

  4. GetChartValues 매크로를 실행합니다.

    차트의 데이터는 "ChartData" 워크시트에 배치됩니다.

차트를 복구된 데이터와 대화형으로 설정하려면 누락되거나 손상된 통합 문서에 대한 링크를 유지하는 대신 차트를 새 데이터 시트에 연결해야 합니다.

  1. 차트를 선택하고 계열을 클릭하여 차트가 손상되었거나 누락된 통합 문서에 연결된 시트 이름을 찾습니다. 시트 이름은 수식 입력줄의 계열 수식에 나타납니다.

    참고

    시트 이름은 "[Book1]"과 같은 대괄호로 묶인 통합 문서 이름을 따르고 느낌표 앞에 "!" (또는 아포스트로피 및 느낌표 "'!") 셀 참조의 시작을 나타내는 입니다. 시트 이름에는 닫힌 대괄호 기호 "]"와 느낌표(또는 아포스트로피 및 느낌표) 사이의 문자만 포함됩니다. 아포스트로피는 시트 이름의 마지막 문자가 될 수 없기 때문에 느낌표 바로 앞에 있는 경우 아포스트로피를 그대로 둡니다.

  2. ChartData라는 새 시트의 탭을 두 번 클릭합니다.

  3. 강조 표시된 "ChartData" 위에 1단계의 원래 시트 이름을 입력하고 Enter 키를 누릅니다. 이 이름은 손상되었거나 누락된 통합 문서의 시트 이름과 동일해야 합니다.

  4. 차트 및 데이터 시트와 함께 이 파일을 저장하지 않은 경우 파일을 저장합니다.

  5. Excel 2003 또는 Excel 2002에서 편집 메뉴에서 링크를 클릭한 다음 원본 변경을 클릭합니다.

    Excel 2007에서 데이터 탭을 클릭하고 Connenctions 그룹에서 링크 편집을 클릭한 다음 원본 변경을 클릭합니다.

  6. 원본 파일 상자에서 변경할 링크를 선택한 다음 원본 변경을 클릭합니다.

  7. 링크 변경 대화 상자에서 복구된 데이터와 차트가 있는 새 파일을 선택한 다음 확인을 클릭합니다.

  8. 다음 오류 메시지가 표시되면

    수식에 워크시트에 대한 잘못된 외부 참조가 포함되어 있습니다.

    3단계에서 입력한 시트 이름이 원본과 같지 않을 수 있습니다. 1단계로 돌아가기.

  9. 이제 원본 파일 상자가 비어 있을 수 있습니다. 이는 모든 링크가 누락되거나 손상된 파일이 아닌 활성 파일을 가리킨다는 것을 나타냅니다. 닫기를 클릭합니다.

이제 차트는 현재 통합 문서의 이름이 바뀐 시트에서 복구된 데이터를 참조하고 상호 작용합니다.