메뉴
미해결 엑셀2019

ActiveSheet.Shapes.AddChart2 다른 쉬트 데이터 참조하기

꽃
9월 13일 조회 2,483
아래는 차트를 그리는데 다른 쉬트의 분산된 자료를 배열로 받아와서 챠트의 데이터로 사용해서 그립니다

다 잘 되는데 항상 이상한 데이터가 더 그려지더군요

(첨부그림 오빠두엑셀 차트1)

이유를 찾다가 결국은 알았는데

ActiveSheet.Shapes.AddChart2

위의 명령어를 실행하면 아무것도 없이 기본적으로  ActiveSheet의 데이터를 가져오고, 그 다음에 지정한 데이터를 가져오니 이상한 라인이 첨부된 그래프가 되더군여

위의 명령어를 사용해서 다른 쉬트의 내용들을 참조하여 차트를 그릴 때

기본적으로 ActiveSheet의 데이터를 가져오지 않게 하려면

1) 어떻게 해야하나요?

2) 다른 명령어를 사용해야하나요?

 

참고: 밑에 있는 구문 짜느라고 엄청 구글링 했어요.

다른 쉬트의 데이터를 배열로 조합해 차트를 그리는 겁니다

비슷하긴 한데 완전하게 나온데가 없더군요

조금씩 안되요.

결국은 완성해서 잘 됩니다. 다른 분들도 사용하실 수 있어요. 공유합니다.

 

 

 

 

Sub 차트1()
'
' 매크로1 매크로
'
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False

Dim cht As ChartObject

Dim Arr As Variant
Dim Arr0 As Variant
Dim Arr1 As Variant
Dim Arr2 As Variant
Dim Arr3 As Variant
Dim Arr4 As Variant
Dim Arr5 As Variant
Dim Arr6 As Variant
Dim Arr7 As Variant
Dim Arr8 As Variant
Dim Arr9 As Variant
Dim Arr10(1, 111) As Variant
Dim Shp As Shape '각 도형을 넣을 변수

For Each Shp In ActiveSheet.Shapes '현재시트내 각 도형을 순환
If Shp.Type = msoChart Then '도형이 차트라면
Shp.Delete '도형을 삭제
End If
Next Shp

파일m = ThisWorkbook.Name
Set wm = Workbooks(파일m)
쉬트m = "전국흐름"
쉬트b = "매매지수"
쉬트c = "전세지수"
쉬트d = "매수매도"

끝행b = wm.Sheets(쉬트b).Cells(2, 2).End(xlDown).Row
끝행d = 끝행b

갈행 = ActiveCell.Row + 1
갈열 = ActiveCell.Column



'해당 지수열 찾기
For kk = 1 To 188
If Sheets(쉬트m).Cells(ActiveCell.Row, 4) = Sheets(쉬트b).Cells(1, kk) Then 지수열 = kk
Next

'매수매도 해당열
For kk = 1 To 73
If Sheets(쉬트m).Cells(ActiveCell.Row, 2) = Sheets(쉬트d).Cells(2, kk) Then 매수열 = kk
Next

'거래량열

'If MsgBox("끝행b=" & 끝행b & " 지수열=" & 지수열 & " 매수열=" & 매수열 & " Sheets(쉬트b).Cells(1, 지수열)=" & Sheets(쉬트b).Cells(1, 지수열), vbOKCancel) = vbCancel Then Exit Sub

'화면에 보이는 위치를 잡으면 좋겎는데
상단 = WorksheetFunction.Max(ActiveCell.Top - 높이, 350)
길이 = 750
높이 = 500
ActiveSheet.Shapes.AddChart2(227, xlLine, 150, 상단, 길이, 높이).Select

With ActiveChart

Arr0 = Range(wm.Sheets(쉬트b).Cells(4, 1), wm.Sheets(쉬트b).Cells(끝행b, 1))
Arr1 = Range(wm.Sheets(쉬트b).Cells(4, 지수열), wm.Sheets(쉬트b).Cells(끝행b, 지수열))
Arr2 = Range(wm.Sheets(쉬트c).Cells(4, 지수열), wm.Sheets(쉬트c).Cells(끝행b, 지수열))
Arr3 = Range(wm.Sheets(쉬트b).Cells(4, 지수열 + 376), wm.Sheets(쉬트b).Cells(끝행b, 지수열 + 376))
Arr4 = Range(wm.Sheets(쉬트c).Cells(4, 지수열 + 376), wm.Sheets(쉬트c).Cells(끝행b, 지수열 + 376))
Arr5 = Range(wm.Sheets(쉬트d).Cells(243 + 4, 매수열 + 2), wm.Sheets(쉬트d).Cells(243 + 끝행d, 매수열 + 2))
Arr6 = Range(wm.Sheets(쉬트d).Cells(243 + 4, 매수열 + 1), wm.Sheets(쉬트d).Cells(243 + 끝행d, 매수열 + 1))
Arr7 = Range(wm.Sheets(쉬트b).Cells(4, 지수열 + 188), wm.Sheets(쉬트b).Cells(끝행b, 지수열 + 188))
Arr8 = Range(wm.Sheets(쉬트c).Cells(4, 지수열 + 188), wm.Sheets(쉬트c).Cells(끝행b, 지수열 + 188))

'.SetSourceData Source:=Range("$bd$210:$bi$932")
.FullSeriesCollection(1).XValues = Arr0

'.SeriesCollection.NewSeries
.FullSeriesCollection(1).Values = Arr1
.FullSeriesCollection(1).ChartType = xlLine
.FullSeriesCollection(1).AxisGroup = 1
'.SeriesCollection.NewSeries
.FullSeriesCollection(2).Values = Arr2
.FullSeriesCollection(2).ChartType = xlLine
.FullSeriesCollection(2).AxisGroup = 1
'.SeriesCollection.NewSeries
.FullSeriesCollection(3).Values = Arr3
.FullSeriesCollection(3).ChartType = xlLine
.FullSeriesCollection(3).AxisGroup = 1
'.SeriesCollection.NewSeries
.FullSeriesCollection(4).Values = Arr4
.FullSeriesCollection(4).ChartType = xlLine
.FullSeriesCollection(4).AxisGroup = 1

'.SeriesCollection.NewSeries
.FullSeriesCollection(5).Values = Arr5
.FullSeriesCollection(5).ChartType = xlLine
.FullSeriesCollection(5).AxisGroup = 1
'.SeriesCollection.NewSeries
.FullSeriesCollection(6).Values = Arr6
.FullSeriesCollection(6).ChartType = xlLine
.FullSeriesCollection(6).AxisGroup = 1
'.SeriesCollection.NewSeries
.FullSeriesCollection(7).Values = Arr7
.FullSeriesCollection(7).ChartType = xlColumnClustered
.FullSeriesCollection(7).AxisGroup = 2
'.SeriesCollection.NewSeries
.FullSeriesCollection(8).Values = Arr8
.FullSeriesCollection(8).ChartType = xlLine
.FullSeriesCollection(8).AxisGroup = 2

.HasTitle = True
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlSecondary).HasTitle = True

.ChartTitle.Caption = Sheets(쉬트m).Cells(ActiveCell.Row, 3)
.Axes(xlValue, xlPrimary).AxisTitle.Text = "지수 2년누적매매.전세 매수우위.매수 매매.전세 "
.Axes(xlValue, xlSecondary).AxisTitle.Text = "매매.전세 증감율"
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "년월"
'.Axes(XValues, xlPrimary).AxisTitle.Text = "년월"

.Axes(xlValue, xlPrimary).MinimumScale = -20
.Axes(xlValue, xlPrimary).MaximumScale = 180
'.Axes(xlCategory, xlPrimary).MajorUnit = 4
.Axes(xlValue, xlPrimary).MajorUnit = 10
.Axes(xlValue, xlSecondary).MinimumScale = -4
.Axes(xlValue, xlSecondary).MaximumScale = 1

.HasLegend = True
.Legend.Position = xlLegendPositionBottom
.SeriesCollection(1).Name = "매매지수"
.SeriesCollection(2).Name = "전세지수"
.SeriesCollection(3).Name = "매매2년누적"
.SeriesCollection(4).Name = "전세2년누적"
.SeriesCollection(5).Name = "매수우위"
.SeriesCollection(6).Name = "매수"
.SeriesCollection(7).Name = "매매증감"
.SeriesCollection(8).Name = "전세증감"

'RGB 표 https://www.rapidtables.org/ko/web/color/RGB_Color.html
.SeriesCollection(1).Format.Line.Visible = msoFalse
.SeriesCollection(1).Format.Line.Visible = msoTrue
.SeriesCollection(1).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
'.SeriesCollection(1).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(1).Format.Line.Weight = 2

.SeriesCollection(2).Format.Line.Visible = msoTrue
.SeriesCollection(2).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
'.SeriesCollection(2).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(2).Format.Line.Weight = 2

.SeriesCollection(3).Format.Line.Visible = msoTrue
.SeriesCollection(3).Format.Line.ForeColor.RGB = RGB(0, 102, 0)
'.SeriesCollection(3).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(3).Format.Line.Weight = 2

.SeriesCollection(4).Format.Line.Visible = msoTrue
.SeriesCollection(4).Format.Line.ForeColor.RGB = RGB(153, 0, 0)
'.SeriesCollection(4).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(4).Format.Line.Weight = 2

.SeriesCollection(5).Format.Line.Visible = msoTrue
.SeriesCollection(5).Format.Line.ForeColor.RGB = RGB(102, 204, 0)
.SeriesCollection(5).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(5).Format.Line.Weight = 2

.SeriesCollection(6).Format.Line.Visible = msoTrue
.SeriesCollection(6).Format.Line.ForeColor.RGB = RGB(255, 0, 255)
.SeriesCollection(6).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(6).Format.Line.Weight = 2

.SeriesCollection(7).Format.Line.Visible = msoTrue
.SeriesCollection(7).Format.Line.ForeColor.RGB = RGB(0, 0, 255)
'.SeriesCollection(7).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(7).Format.Line.Weight = 0.1

.SeriesCollection(8).Format.Line.Visible = msoTrue
.SeriesCollection(8).Format.Line.ForeColor.RGB = RGB(255, 0, 0)
'.SeriesCollection(8).Format.Line.DashStyle = msoLineSysDot 'msoLineSysDot msoLineSysDash
.SeriesCollection(8).Format.Line.Weight = 0.1

'.FullSeriesCollection(1).MarkerSize = 10
'.SeriesCollection(1).Interior.Color = "yellow"

End With



Sheets(쉬트m).Cells(갈행, 갈열).Select

'ActiveWindow.ScrollRow = 1
'SendKeys ("{down}")


Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False

End Sub
오빠두엑셀-차트1.png

댓글 1

꽃
꽃가마 작성자 10월 1일
아, 근 1달만에 해결했어요

이유는 모르겠지만, 앞의 차트를 다 지우고 했어요



요 코드중 아래 모두 지우기를 넣었어요.

 

질문답변 게시판의 최근 글

로그인

처음이면 카카오·네이버로 계속하면 바로 가입돼요

또는
비밀번호 찾기
Caps Lock이 켜져 있습니다
스크랩 완료