나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 dew (dewdrop)

추천:  2
파일:     조회:  3801
제목:   [RE]차트 Y축 자동 변경 VBA 문의
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):2016

* 아래줄에 질문을 작성하세요 >>

안녕하세요, 아래 내용을 인터넷에 찾아서 여러가지 시도를 해보았는데 VBA는 미숙한지라 적용이 되지 않네요...
차트에 필터를 걸어서 여러 데이터를 부분적으로 보고 싶은데, Y축의 값을 필터링 된 해당되는 값들의 "최소값*0.9 ~ 최대값*1.1" 으로 VBA를 설정하여 자동으로 조정이 될 수 있게 할 수 있겠는지요...
미리 많은 도움 주신 부분에 감사 인사 드립니다.
==============[신주현님 글에 대한 답변입니다]==============
참서리님이 작성하시 내용을 아래와 같이 약간 수정하시면 됩니다

'-------------------------------------
Sub chart_change()
'-------------------------------------
    Dim ochart As Excel.Chart
    
    Set ochart = Sheet1.ChartObjects(1).Chart
    
    Dim data As Variant
     
      
    data = get_data
        
    Dim oseries As Excel.Series
    
    Set oseries = ochart.SeriesCollection(1)
    oseries.Name = "Sales"
    oseries.xvalues = data(0)
    oseries.Values = data(1)
    
    Set oseries = ochart.SeriesCollection(2)
    oseries.Name = "Value"
    oseries.xvalues = data(0)
    oseries.Values = data(2)
     
    With ochart
        '주 Y축
        .Axes(xlValue).MinimumScale = WorksheetFunction.Min(data(1)) * 0.9
        .Axes(xlValue).MaximumScale = WorksheetFunction.Max(data(1)) * 1.1
        ' 보조 Y축
        .Axes(xlValue, xlSecondary).MinimumScale = WorksheetFunction.Min(data(2)) * 0.9
        .Axes(xlValue, xlSecondary).MaximumScale = WorksheetFunction.Max(data(2)) * 1.1
    End With
End Sub

' 숨김 데이타를 제외한 데이타 가져오기
'-------------------------------------
Function get_data() As Variant
'-------------------------------------
    Dim rngx As Range
    Set rngx = Sheet2.Range("B2").CurrentRegion
    Dim row As Range
    
    Dim xvalues As Variant, y1values As Variant, y2values As Variant
    
    xvalues = Array()
    y1values = Array()
    y2values = Array()
    
    For r = 2 To rngx.Rows.Count
    
       If Not (rngx.Rows.Item(r).Hidden) Then
            With rngx.Rows.Item(r)
                 xvalues = push(xvalues, .Cells(1).Value)
                 y1values = push(y1values, .Cells(2).Value)
                 y2values = push(y2values, .Cells(3).Value)
             End With
       End If
        
    Next
    
    get_data = Array(xvalues, y1values, y2values)
End Function
 
[불량 게시물 신고]  
        
  

작성일 : 2018-11-26(16:01)
최종수정일 : 2018-11-26(16:01)
 


 ◎ 관련글

  제 목   작성자   날짜
차트 Y축 자동 변경 VBA 문의 신주현 2018-11-23
[RE]차트 Y축 자동 변경 VBA 문의 dew 2018-11-26
[RE]차트 Y축 자동 변경 VBA 문의 참서리 2018-11-24
[RE]차트 Y축 자동 변경 VBA 문의 참서리 2018-11-26