|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 엑셀 버전(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
|
|