çubuk grafiğindeki renklendirmeyi çizgi grafiğinde yapmak münkün mü?

Katılım
23 Şubat 2007
Mesajlar
131
Excel Vers. ve Dili
excel2003
arkadaşlar bir sorum olacak ben bir grafik üzerinde alt limitte kırmızı ideal limitte ise yeşil yapma makrosu buldum ben bunu çubuk grafik değilde çizgi grafiğinde uygulayabilmem mümkünmü bana makrosunu yazarmısınız?
 
Katılım
23 Şubat 2007
Mesajlar
131
Excel Vers. ve Dili
excel2003
arkadaşlar bu konu hakkında bilgisi olan varsa lütfen bana yardımcı olabilir mi.
 
Katılım
23 Şubat 2007
Mesajlar
131
Excel Vers. ve Dili
excel2003
çok teşekkürler Ferhat Bey ama bunu makro şeklinde kodlarını biliyorsan çok sevinirim.yinede çok sagol
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ekteki örnek dosyayı inceleyiniz.

Bu dosyada hem manuel hem de makro ile çözüm bulunmaktadır. Makro ile otomatik hazırlanan grafik; biraz tembelliğime geldiğinden, şekil-şemal açısından eksiklikleri var ... Siz birkaç satır kod ekleyerek, daha fazla görsellik kazandırabilirsiniz.

Özel grafiği yaratmak için, dosyada kullanılan kodlar aşağıda verilmektedir.

Kod:
Sub Grafik_Olustur()
 
    Dim cht As ChartObject
    Dim rngKaynak As Range
    Dim sAdres_X As String
    Dim sAdres_Y As String
 
    With Sheets("MAKRO")
 
        For Each cht In .ChartObjects
            cht.Delete
        Next
 
        Set rngKaynak = .Range("B7:C" & .Cells(65536, 2).End(xlUp).Row)
 
        With rngKaynak
            sAdres_X = .Offset(1, 0).Resize(.Rows.Count - 1, 1).Address
            sAdres_Y = .Offset(1, 1).Resize(.Rows.Count - 1, 1).Address
        End With
 
        Set cht = .ChartObjects.Add( _
                        Left:=.Range("E8").Left, _
                        Width:=.Range("E1:M1").Width, _
                        Top:=.Range("E8").Top, _
                        Height:=.Range("E8:E31").Height)
 
        ActiveWorkbook.Names.Add _
                Name:="AltLimit", _
                RefersTo:="=ISNUMBER(" & sAdres_X & ")*" & .Range("C3").Address
 
        ActiveWorkbook.Names.Add _
                Name:="AltLimitin_Alti", _
                RefersTo:="=IF(" & sAdres_Y & "<=" & .Range("C3").Address & "," & sAdres_Y & "," & "NA()" & ")"
 
    End With
 
    With cht
 
        With .Chart
 
            .SetSourceData Source:=rngKaynak
            .ChartType = xlLineMarkers
 
            With .SeriesCollection.NewSeries
                .Name = "AltLimit"
                .Values = "='" & ThisWorkbook.Name & "'!" & "AltLimit"
            End With
 
            With .SeriesCollection.NewSeries
                .Name = "AltLimit_Alti"
                .Values = "='" & ThisWorkbook.Name & "'!" & "AltLimitin_Alti"
            End With
 
            On Error Resume Next
 
            .SeriesCollection("AltLimit").MarkerStyle = xlNone
            .SeriesCollection("AltLimit_Alti").Border.LineStyle = xlNone
 
            On Error GoTo 0
 
        End With
 
    End With
 
    Set cht = Nothing
    Set rngKaynak = Nothing
 
End Sub
------ Düzenleme : Dosya eki yenilenmiştir / fpc -----
 

Ekli dosyalar

Son düzenleme:
Katılım
23 Şubat 2007
Mesajlar
131
Excel Vers. ve Dili
excel2003
Sayın Ferhat bey allah razı olsun verdiğiniz bilgi ve makro çok güzel ama ben biraz kendime uyarlamakta karıştırdım acaba dosya göndersem bana yardımcı olurmusunuz.Şimdiden çok teşekkür ederim
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ekteki dosyayı inceleyiniz.

Dosyanıza sadece aşağıdaki kod ilave edilmiştir. Bu kodu, standart bir module sayfasına koplayarak, istediğiniz grafik elde edilebilir.

Kod:
Sub Grafik_Olustur()
    
    Dim wks As Worksheet
    Dim cht As ChartObject
    Dim rngKaynak As Range
    Dim sAdres_X As String
    Dim sAdres_Y As String
    Dim nm As Name
    
    Set wks = Sheets("değerler")
    
    For Each cht In wks.ChartObjects
        cht.Delete
    Next
    
    For Each nm In ThisWorkbook.Names
        nm.Delete
    Next
    Set rngKaynak = wks.Range("B5:M5")
    
    With ThisWorkbook
        
        .Names.Add _
            Name:="Veriler", _
            RefersTo:="=IF(" & rngKaynak.Address & "=0,NA()," & rngKaynak.Address & ")"
    
        .Names.Add _
            Name:="Kategoriler", _
            RefersTo:=rngKaynak.Offset(-1, 0)
            
        .Names.Add _
            Name:="AltLimit", _
            RefersTo:="=ISNUMBER(" & rngKaynak.Address & ")*" & wks.Range("P6").Address
        
        .Names.Add _
            Name:="UstLimit", _
            RefersTo:="=ISNUMBER(" & rngKaynak.Address & ")*" & wks.Range("Q6").Address
        
        .Names.Add _
            Name:="AltLimit_Altindakiler", _
            RefersTo:="=IF(" & rngKaynak.Address & "=0,NA()," & "IF(" & rngKaynak.Address & ">" & wks.Range("P6").Address & ",NA()," & rngKaynak.Address & "))"
    
        .Names.Add _
            Name:="UstLimit_Ustundekiler", _
            RefersTo:="=IF(" & rngKaynak.Address & ">" & wks.Range("Q6").Address & "," & rngKaynak.Address & ",NA())"
    
    End With
        
    With wks
        Set cht = .ChartObjects.Add( _
                        Left:=.Range("B9").Left, _
                        Width:=.Range("B9:M9").Width, _
                        Top:=.Range("B9").Top, _
                        Height:=.Range("B9:B27").Height)
    
    End With
    
    On Error Resume Next
    
    With cht
        
        With .Chart
            
            .ChartType = xlLineMarkers
            
            With .SeriesCollection.NewSeries
                .Name = "Veriler_Serisi"
                .Values = "='" & ThisWorkbook.Name & "'!" & "Veriler"
                .XValues = rngKaynak.Offset(-1, 0)
                .Border.ColorIndex = 10
                .MarkerBackgroundColorIndex = 10
                .MarkerForegroundColorIndex = 10
                .MarkerStyle = xlCircle
                .MarkerSize = 8
            End With
           
            
            With .SeriesCollection.NewSeries
                .Name = "AltLimit_Serisi"
                .Values = "='" & ThisWorkbook.Name & "'!" & "AltLimit"
                .MarkerStyle = xlNone
                .Border.ColorIndex = 3
                .Border.Weight = xlThick
            End With
            
            With .SeriesCollection.NewSeries
                .Name = "UstLimit_Serisi"
                .Values = "='" & ThisWorkbook.Name & "'!" & "UstLimit"
                .MarkerStyle = xlNone
                .Border.ColorIndex = 3
                .Border.Weight = xlThick
            End With
            
            With .SeriesCollection.NewSeries
                .Name = "AltLimit_Alti_Serisi"
                .Values = "='" & ThisWorkbook.Name & "'!" & "AltLimit_Altindakiler"
                .Border.ColorIndex = xlNone
                .MarkerBackgroundColorIndex = 3
                .MarkerForegroundColorIndex = 3
                .MarkerStyle = xlCircle
                .MarkerSize = 8
            End With
            
            
            With .SeriesCollection.NewSeries
                .Name = "UstLimit_Ustu_Serisi"
                .Values = "='" & ThisWorkbook.Name & "'!" & "UstLimit_Ustundekiler"
                .Border.ColorIndex = xlNone
                .MarkerBackgroundColorIndex = 3
                .MarkerForegroundColorIndex = 3
                .MarkerStyle = xlCircle
                .MarkerSize = 8
            End With
            
            With .Axes(xlValue)
                .MinimumScale = 150
                .MaximumScale = 300
            End With
            
            .Legend.Delete
        
        End With
    
    End With
    
    Set cht = Nothing
    Set rngKaynak = Nothing
    Set wks = Nothing
    
End Sub
 
Katılım
23 Şubat 2007
Mesajlar
131
Excel Vers. ve Dili
excel2003
&#231;ok te&#351;ekk&#252;rler ferhat bey ben kendi dosyama uygulamaya &#231;al&#305;&#351;t&#305;m ama ben ayn&#305; grafik &#252;zerine burda 200 de&#287;erleri i&#231;in uygulatt&#305;k birde 300 i&#231;in uygulama &#351;ans&#305;m varm&#305; ben bir&#351;eyler yapmaya &#231;al&#305;&#351;t&#305;m ama bir yerde hata verdi bu dosyaya bakarm&#305;s&#305;n&#305;z.&#351;imdiden te&#351;ekk&#252;rler
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ben son g&#246;nderdi&#287;iniz dosyadan, a&#231;&#305;k&#231;as&#305; hi&#231;bir&#351;ey anlamad&#305;m.

Siz alta ekledi&#287;iniz sat&#305;r i&#231;in de (300'ler) yeni bir grafik olu&#351;turulmas&#305;n&#305; m&#305; bekliyorsunuz? Yoksa, her iki seri ayn&#305; grafik &#252;zerinde mi olacak ?

Bir di&#287;er merak etti&#287;im husus, bunlar&#305; neden makro ile istedi&#287;iniz ? &#199;&#252;nk&#252;, grafikler bir kere olu&#351;turuldu&#287;unda art&#305;k siz verileri de&#287;i&#351;tirdik&#231;e/ekledik&#231;e/sildik&#231;e, yeniden yap&#305;land&#305;r&#305;lacakt&#305;r. Yeniden yeniden makroyla &#231;izmeye ne hacet ?
 
Katılım
23 Şubat 2007
Mesajlar
131
Excel Vers. ve Dili
excel2003
kusura bakmay&#305;n ferhat bey ben anlatamad&#305;m.Ama problemi &#231;&#246;zd&#252;m eksik rakamdan dolay&#305; hatay&#305; vermi&#351; .Sizden ricam alt limit alt&#305;nda serisinde minimum de&#287;ere e&#351;itse grafikte nokta k&#305;rm&#305;z&#305; oluyor.bunu minimum de&#287;ere e&#351;itse ye&#351;il yapabilirmiyim.u&#287;ra&#351;t&#305;m ama &#231;&#246;zemedim.birde grafik scalas&#305;n&#305; 10 luk olarak sabitleme &#351;ans&#305;m varm&#305;.birde x katagorisi (aylar&#305;) hangi sat&#305;rdan al&#305;yor grafi&#287;i ba&#351;ka sheet'de g&#246;sterdi&#287;im zaman x katagorisi(aylar) g&#246;z&#252;km&#252;yor.bunu &#246;&#287;renebilirmiyim.Ben bu grafi&#287;i kullan&#305;c&#305;lar &#252;zerinde de&#287;i&#351;iklik yapmas&#305;n veya silmesin diye makrolu olmas&#305;n&#305; istedim.Ger&#231;i size &#231;ok zahmet verdim.Allah raz&#305; olsun benimle ilgilendiniz.te&#351;ekk&#252;r ederim.
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Belirttiğim yerleri kodunuzda revize ediniz. Revizyonlar, kırmızı ile gösterilmiştir.

1.Sorunuz :
Sizden ricam alt limit altında serisinde minimum değere eşitse grafikte nokta kırmızı oluyor.bunu minimum değere eşitse yeşil yapabilirmiyim.uğraştım ama çözemedim.
Kod:
.Names.Add _
    Name:="AltLimit_Altindakiler", _
    RefersTo:="=IF(" & rngKaynak.Address & "=0,NA()," & "IF(" & rngKaynak.Address & ">[COLOR=red][B]=[/B][/COLOR]" & wks.Range("P6").Address & ",NA()," & rngKaynak.Address & "))"
.Names.Add _
    Name:="AltLimit_Altindakiler1", _
    RefersTo:="=IF(" & rngKaynak1.Address & "=0,NA()," & "IF(" & rngKaynak1.Address & ">[COLOR=red][B]=[/B][/COLOR]" & wks.Range("P7").Address & ",NA()," & rngKaynak1.Address & "))"
2.Sorunuz
birde grafik scalasını 10 luk olarak sabitleme şansım varmı
Kod:
With .Axes(xlValue)
    .MinimumScale = 150
    .MaximumScale = 360
[COLOR=red][B]    .MajorUnit = 10[/B][/COLOR]
End With
3.Sorunuz
birde x katagorisi (ayları) hangi satırdan alıyor grafiği başka sheet'de gösterdiğim zaman x katagorisi(aylar) gözükmüyor.bunu öğrenebilirmiyim.
X ekseni yani kategori ekseni, aşağıdaki kodla ayarlanıyor. Kodun anlamı ise : rngKaynak adlı aralığın, bir satır yukarıya kaydırılmış hali ... Koddaki yeri de şurası :

Kod:
.Names.Add _
    Name:="Kategoriler", _
    RefersTo:=rngKaynak.Offset(-1, 0)
.Names.Add _
    Name:="Kategoriler1", _
    RefersTo:=rngKaynak1.Offset(-1, 0)
Ama sizin probleminiz bu değil. Siz, wks adlı sheet objeyi, istediğiniz sayfaya set etmelisiniz. Yani;

Kod:
Set wks = Sheets("değerler")
satırı değişmeli. Bunu bir parametre olarak prosedüre ilave edebilirsiniz. Daha sonra sırasıyla, sayfalara göre grafik çizdirebilirsiniz.

4.Sorunuz
Ben bu grafiği kullanıcılar üzerinde değişiklik yapmasın veya silmesin diye makrolu olmasını istedim.
Grafikleri bir kere çizdikten sonra sayfayı korumaya alsanız daha iyi olmazmıydı :)
 
Katılım
23 Şubat 2007
Mesajlar
131
Excel Vers. ve Dili
excel2003
&#231;ok te&#351;ekk&#252;r ederim ferhat bey asl&#305;nda &#231;ok basitmi&#351; ama mant&#305;&#287;&#305;n&#305; &#231;&#246;zemedim belki ondan kar&#305;&#351;t&#305;rd&#305;m.sizden son bir ricam grafi&#287;in arka plan&#305;ndaki gri rengi nas&#305;l beyaz yapabilirim.size &#231;ok zahmet verdim allah raz&#305; olsun benimle ilgilendiniz.
 
Son düzenleme:

parametre

Destek Ekibi
Destek Ekibi
Katılım
28 Ocak 2007
Mesajlar
1,586
Excel Vers. ve Dili
ofis 2010 turkce
grafige geliniz mouseyi cizgilerin arasına getirip sag tus yapın oradan cizim alanının biçimlendire gelin orada stil renk kalınlık yerleri var renklerden istediğinizi secin kolay gelsin :)
 
Üst