Page 1 of 2
อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Tue May 08, 2012 9:37 pm
by Palmib
จากไฟล์ที่แนบมานะคะ คืออยากสร้างกราฟแบบนั้นอ่ะค่ะ
แต่ทำไม่เป็น ไม่รู้ว่าสต้องเลือกแบบไหน
เลยอยากขอความช่วยเหลือค่ะ ใครทำได้
ช่วยกรุณาแนะนำทีนะคะ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Tue May 08, 2012 10:18 pm
by snasui

จากไฟล์ที่แนบมาพบว่ากราฟนี้ใช้ข้อมูลจากไฟล์
10head.xls ควรแนบไฟล์นั้นหรือ Save ไฟล์ตัวอย่างมาจากไฟล์นั้น จะไม่ได้ต้องเสียเวลาสร้างกราฟเลียนแบบ คิดว่าสะดวกในการแนะนำขั้นตอนการทำมากกว่าครับ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Tue May 08, 2012 11:02 pm
by Palmib
ไฟล์นี้ใช้ได้ไหมคะ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Wed May 09, 2012 1:44 pm
by snasui

ลองดูวิธีการตามภาพด้านล่างและ
ทำซ้ำตั้งแต่ภาพที่ 3 กับข้อมูลอื่น ๆ ตามต้องการ กรณีต้องการเปลี่ยนให้เป็นกราฟเส้นให้คลิกขวาลงบนแท่งกราฟแล้วเลือก Change series type ครับ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 4:14 pm
by Palmib
ขอบคุณมากมากค่ะ

Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 4:24 pm
by Palmib
Code: Select all
Public Sub Graph_RSA(wn)
Charts.Add
ActiveChart.ChartType = xlColumnStacked
ActiveChart.SetSourceData Source:=Sheets("RSA_KPOV_" & wn).Range("W15"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='XXXXX'!R5C3:R14C3"
ActiveChart.SeriesCollection(1).Values = "='XXXXX'!R18C5:R27C5"
ActiveChart.SeriesCollection(1).Name = "='XXXXX'!R4C5"
ActiveChart.SeriesCollection(2).XValues = "='XXXXX'!R5C3:R14C3"
ActiveChart.SeriesCollection(2).Values = "='XXXXX'!R18C6:R27C6"
ActiveChart.SeriesCollection(2).Name = "='XXXXX'!R4C6"
ActiveChart.SeriesCollection(3).XValues = "='XXXXX'!R5C3:R14C3"
ActiveChart.SeriesCollection(3).Values = "='XXXXX'!R5C7:R14C7"
ActiveChart.SeriesCollection(3).Name = "='XXXXX'!R4C2:R17C2"
ActiveChart.SeriesCollection(4).Values = "='XXXXX'!R18C7:R27C7"
ActiveChart.SeriesCollection(4).Name = "='XXXXX'!R18C2:R30C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="RSA_KPIV chart"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "RSA"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.SeriesCollection(4).Select
ActiveChart.SeriesCollection(4).ChartType = xlLineMarkers
ActiveChart.SeriesCollection(3).Select
ActiveChart.SeriesCollection(3).ChartType = xlLineMarkers
ActiveChart.SeriesCollection(4).Select
With Selection.Border
.ColorIndex = 3
.Weight = xlMedium
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlTriangle
.Smooth = False
.MarkerSize = 7
.Shadow = False
End With
ActiveChart.SeriesCollection(3).Select
With Selection.Border
.ColorIndex = 1
.Weight = xlMedium
.LineStyle = xlContinuous
End With
With Selection
.MarkerBackgroundColorIndex = 1
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlDiamond
.Smooth = False
.MarkerSize = 5
.Shadow = False
End With
ActiveChart.SeriesCollection(1).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 7
.Pattern = xlSolid
End With
ActiveChart.SeriesCollection(2).Select
With Selection.Border
.Weight = xlThin
.LineStyle = xlAutomatic
End With
Selection.Shadow = False
Selection.InvertIfNegative = False
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With
ActiveChart.Axes(xlValue).MajorGridlines.Select
With ActiveChart.Axes(xlValue)
.MinimumScale = -0.5
.MaximumScale = 1
.MinorUnit = 0.05
.MajorUnit = 0.1
.Crosses = xlCustom
.CrossesAt = 0
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
End Sub
จากโค้ดข้างบนนะคะ ถ้าค่า wn เป็น integer นะคะ
แล้วหนู part ค่าเข้ามา เพื่อเป็นการกำหนดให้เป็นชื่อ sheet ค่ะ
แล้วหนูต้องกำหนดค่า XXXXX เป็นอะไรหรอคะ??
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 4:32 pm
by snasui

'XXXXX' ใช้แทนชีทใดก็ใส่ชื่อชีทนั้นครับ
part น่าจะเป็น pass คือการส่งค่ามาจาก Procedure อื่น ๆ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 4:45 pm
by Palmib
อ้อ ใช่ๆค่ะ พิมพ์ผิดๆ แต่หนูกำหนดค่าเป็นแบบนี้ค่ะ
ActiveChart.SeriesCollection(1).XValues = "=' RSA_KPOV_'&wn !R5C3:R14C3"
แล้วมันไม่ได้ค่ะ มันขึ้น Run-time error '1004'
Unable to set the XValues property of the Series class
ค่ะ หนูควรแก้ยังไงหรอคะ?
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 4:52 pm
by snasui

สามารถแก้เป็นด้านล่างได้ครับ
ActiveChart.SeriesCollection(1).XValues = "=' RSA_KPOV_" & wn & "'!R5C3:R14C3"
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 5:00 pm
by Palmib
มันก็ยัง error อยู่เลยค่ะ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 5:06 pm
by snasui

ควรส่งไฟล์ตัวอย่างมาด้วยครับจะได้ช่วยทดสอบได้
Error ฟ้องว่าอย่างไรควรแจ้งมาด้วย ตามหลักการเขียน Code เพื่ออ้างถึงชีทและเซลล์ตามที่ตอบไปนั้นผมเห็นว่าถูกต้องแล้ว ยกเว้นแจ้งมาขาดหรือเกินไปจากนั้นครับ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 5:20 pm
by Palmib
หนู รัน Procedure exam ก่อนค่ะเพื่อสร้างชีทที่เป็นแบบที่แนบไป
แล้ว call Graph_RSA เพื่อสร้างกราฟค่ะ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Thu May 10, 2012 6:07 pm
by snasui

เปลี่ยน Code เป็นตามด้านล่างครับ สังเกตว่าลบวรรคระหว่างเครื่องหมาย ' และ RSA_KPOV_ ออกไป
Code: Select all
ActiveChart.SeriesCollection(1).XValues = "='RSA_KPOV_" & wn & "'!R5C3:R14C3"
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Fri May 11, 2012 10:36 am
by Palmib
ทำได้แล้วค่ะ ขอบคุณนะคะ : ))
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Wed May 16, 2012 2:41 pm
by Palmib
หนูรบกวนถามค่ะ ว่า ถ้าสมมติหนูอยากกำหนดให้กราฟ ที่สร้างขึ้นมา
อยู่ตรงเซลล์ที่หนูต้องการ หนูต้องกำหนดค่าตรงไหนหรอคะ
ถ้าโค้ดของหนูเป็นแบบนี้
Code: Select all
Charts.Add
ActiveChart.ChartType = xlColumnStacked
' ActiveChart.SetSourceData Source:=Sheets("PSA_KPOV chart_" & wn).Range("N4"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "='PSA_KPOV chart_" & wn & "'!R5C3:R14C3"
ActiveChart.SeriesCollection(1).Values = "='PSA_KPOV chart_" & wn & "'!R51C9:R60C9"
ActiveChart.SeriesCollection(1).Name = "='PSA_KPOV chart_" & wn & "'!R4C5"
ActiveChart.SeriesCollection(2).Values = "='PSA_KPOV chart_" & wn & "'!R51C10:R60C10"
ActiveChart.SeriesCollection(2).Name = "='PSA_KPOV chart_" & wn & "'!R4C6"
ActiveChart.SeriesCollection(3).Values = "='PSA_KPOV chart_" & wn & "'!R51C11:R60C11"
ActiveChart.SeriesCollection(3).Name = "='PSA_KPOV chart_" & wn & "'!R4C7"
ActiveChart.SeriesCollection(4).Values = "='PSA_KPOV chart_" & wn & "'!R5C12:R14C12"
ActiveChart.SeriesCollection(4).Name = "='PSA_KPOV chart_" & wn & "'!R4C2"
ActiveChart.SeriesCollection(5).Values = "='PSA_KPOV chart_" & wn & "'!R51C12:R60C12"
ActiveChart.SeriesCollection(5).Name = "='PSA_KPOV chart_" & wn & "'!R18C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="PSA_KPOV chart_" & wn
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Muskie PSA Sigma Contributions"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Wed May 16, 2012 3:29 pm
by snasui

สามารถกำหนดที่ With ActiveChart ได้ครับ เป็นเช่น
Code: Select all
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Muskie PSA Sigma Contributions"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
.Left = Worksheets("Sheet1").Range("D5").Left
.Top = Worksheets("Sheet1").Range("D5").Top
.Height = Worksheets("Sheet1").Range("D5:D15").Height
.Width = Worksheets("Sheet1").Range("D5:I5").Width
End With
ส่วนจะกำหนดให้อยู่ในเซลล์ไหน สูงและกว้างเท่ากับกี่เซลล์สามารถเปลี่ยนใน Code ข้างบนได้เลยครับ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Wed May 16, 2012 3:49 pm
by Palmib
ขอบคุณมากมากนะคะ : ))
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Wed May 16, 2012 4:03 pm
by Palmib
เกิด error ค่ะ ขึ้นว่า
"Method or data member not found"
เกี่ยวกับว่าหนูใช้ excel 2000 หรือปล่าวคะ??
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Wed May 16, 2012 4:06 pm
by cruzz
แนบไฟล์มาด้วยจะดีมากเลยครับ
Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ
Posted: Wed May 16, 2012 4:17 pm
by snasui
Palmib wrote:เกิด error ค่ะ ขึ้นว่า
"Method or data member not found"
เกี่ยวกับว่าหนูใช้ excel 2000 หรือปล่าวคะ??
ไม่เกี่ยวกับ Version ครับ ที่ผมเขียนไปให้นั้นเป็นตัวอย่างว่าต้องการวางไว้ที่ชีทที่ชื่อว่า Sheet1 แต่หากชีทที่ใช้จริงชื่อว่าอะไรก็เปลี่ยนเป็นชื่อนั้น
cruzz wrote:แนบไฟล์มาด้วยจะดีมากเลยครับ
เห็นด้วยครับ ควรแนบไฟล์ตัวอย่างมาด้วยจะสะดวกในการตอบแบบอ้างอิงชีท เซลล์ที่ใช้จริง