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
:D จากไฟล์ที่แนบมาพบว่ากราฟนี้ใช้ข้อมูลจากไฟล์ 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
:D ลองดูวิธีการตามภาพด้านล่างและทำซ้ำตั้งแต่ภาพที่ 3 กับข้อมูลอื่น ๆ ตามต้องการ กรณีต้องการเปลี่ยนให้เป็นกราฟเส้นให้คลิกขวาลงบนแท่งกราฟแล้วเลือก Change series type ครับ

Re: อยากถามวิธีการสร้างกราฟให้เหมือนเอกสารที่แนบมาค่ะ

Posted: Thu May 10, 2012 4:14 pm
by Palmib
ขอบคุณมากมากค่ะ :D

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
:D '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
:D สามารถแก้เป็นด้านล่างได้ครับ

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
:lol: ควรส่งไฟล์ตัวอย่างมาด้วยครับจะได้ช่วยทดสอบได้

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
:D เปลี่ยน 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
:D สามารถกำหนดที่ 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:แนบไฟล์มาด้วยจะดีมากเลยครับ
เห็นด้วยครับ ควรแนบไฟล์ตัวอย่างมาด้วยจะสะดวกในการตอบแบบอ้างอิงชีท เซลล์ที่ใช้จริง