izris grafa/slike v excelu
izris grafa/slike v excelu
Zdravo
Želim (ampak ne znam ) narediti izris daljic, za katere vem koordinate začetnih in končnih točk.
Primer
x1 y1 x2 y2
1 1 3 1
4 2 4 7
...
Podatki bi bili v obliki tabele (poljubno št. vrstic) v Excelu, graf/slika pa bi se izrisala ob tabeli
Želim (ampak ne znam ) narediti izris daljic, za katere vem koordinate začetnih in končnih točk.
Primer
x1 y1 x2 y2
1 1 3 1
4 2 4 7
...
Podatki bi bili v obliki tabele (poljubno št. vrstic) v Excelu, graf/slika pa bi se izrisala ob tabeli
Hm, ne, ne pomaga mi tisto. Sicer vseeno hvala za trud, cedra, ampak...
V tisti temi gre za manj daljic in praktično samo za en graf. Izris 1, 2... ali celo 10 neodvisnih daljic bi se zlahka dalo narisati z grafikonom, ki ga ponuja excel. Izris poljubnega števila daljic pa mislim, da se da le s pomočjo vb. In tu vas prosim za pomoč. S programiranjem sem si popolnoma tuj.
Če morda kdo ve kje začeti, kako postaviti risalno površino in na njej koordinatni sistem (ki naj bi se spreminjal glede na največje vrednosti x, y koordinat), kako zapisati kodo za izris le ene daljice...
Karkoli mi bo zelo v pomoč.
Hvala in lp
Jure
V tisti temi gre za manj daljic in praktično samo za en graf. Izris 1, 2... ali celo 10 neodvisnih daljic bi se zlahka dalo narisati z grafikonom, ki ga ponuja excel. Izris poljubnega števila daljic pa mislim, da se da le s pomočjo vb. In tu vas prosim za pomoč. S programiranjem sem si popolnoma tuj.
Če morda kdo ve kje začeti, kako postaviti risalno površino in na njej koordinatni sistem (ki naj bi se spreminjal glede na največje vrednosti x, y koordinat), kako zapisati kodo za izris le ene daljice...
Karkoli mi bo zelo v pomoč.
Hvala in lp
Jure
Če znate izrisati željeni graf za 10 daljic, potem ga znate tudi za poljubno število vrstic. Razlika med grafom z 10 daljicami in grafom z poljubno daljicami je samo v količini podatkov, torej v območju grafa. Pravo vprašanje je kako bi vi narisali graf z 10 daljicami; jaz se namreč tega nebi lotil v Excelu.
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Ravnokar mi je uspelo izrisati 10 daljic. Za vrsto grafikona je izbran graf xy raztreseni, podatke pa je potrebno za vsak graf (dalljico) ponovno označevati. Tako za x os naprimer določim območje A2; C2, za y os pa območje B2 in D2. Excel nato ustrezni vrednosti x pripiše ustrezen y (prvemu x ustreza prvi y...). Tako dobim točke - točka 1: T1(A2,B2); točka 2: T2(C2,D2). Med njima nariše graf - daljico.admin napisal/-a: Pravo vprašanje je kako bi vi narisali graf z 10 daljicami
Vendar...
Območja podatkov se na tak način ne da poljubno povečevati. Ali pač?
Če ste zadovoljni s tem, potem imate spodaj makro, ki vam bo izrisal takšen graf:
Da bo makro deloval morate pripraviti tabelo s petimi kolonami v sledeči obliki:
Torej 5(!) kolon s podatki: Ime daljica, X, Y, X1, Y1
Ko imate tabelo narejeno se postavite kamorkoli vanjo in izvedite makro.[/b]
Ker ste na forumu novi vas opozarjam, da lahko makro prosto uporabljate di ga delite naokoli, vendar mora zgoraj vedno ostati moje ime in ime spletišča www.matjazev.net!
Koda: Izberi vse
Sub RisiDaljice()
'
' Napisal: Matjaž Prtenjak
' www.matjazev.net
'
' Datum: 27.11.2008
'
Dim obmocje As Range
Set obmocje = Selection.CurrentRegion
' Območje mora imeti natanko 5 kolon.
' V prvi koloni je ime daljice
' V drugi in tretji koloni sta X in Y začetne točke daljice
' V tretji in četrti koloni sta X in Y končne točke daljice
Dim list As String
list = ActiveSheet.Name & "!"
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=obmocje, PlotBy:=xlRows
Dim daljica As Integer
Dim ime As String, x As String, x1 As String, y As String, y1 As String
For daljica = 1 To obmocje.Rows.Count - 1
ime = obmocje.Cells(1, 1).Offset(daljica, 0)
x = list & obmocje.Cells(1, 1).Offset(daljica, 1).Address(ReferenceStyle:=xlR1C1)
y = list & obmocje.Cells(1, 1).Offset(daljica, 2).Address(ReferenceStyle:=xlR1C1)
x1 = list & obmocje.Cells(1, 1).Offset(daljica, 3).Address(ReferenceStyle:=xlR1C1)
y1 = list & obmocje.Cells(1, 1).Offset(daljica, 4).Address(ReferenceStyle:=xlR1C1)
ActiveChart.SeriesCollection(daljica).Name = ime
ActiveChart.SeriesCollection(daljica).XValues = "=(" & x & "," & x1 & ")"
ActiveChart.SeriesCollection(daljica).Values = "=(" & y & "," & y1 & ")"
Next
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub
Koda: Izberi vse
ime x1 y1 x2 y2
t1 -3 -13 14 1
t2 -11 13 -4 4
t3 -7 10 -10 0
Ko imate tabelo narejeno se postavite kamorkoli vanjo in izvedite makro.[/b]
Ker ste na forumu novi vas opozarjam, da lahko makro prosto uporabljate di ga delite naokoli, vendar mora zgoraj vedno ostati moje ime in ime spletišča www.matjazev.net!
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Saj vam nočem moriti...
storil sem kot ste naročili, ampak mi ne dela. Javi mi:
Run time error:
neveljavni parameter
in označi vrstico v kodi
ActiveChart.SeriesCollection(daljica).Name = ime
Koordinatni sistem se mi pokaže, ampak izriše se le graf t1, vendar napačno. Če se postavim na izrisani točki, napiše:
Niz "t1 " točka "-3" (1,0)
Niz "t2 " točka "14" (2,0)
storil sem kot ste naročili, ampak mi ne dela. Javi mi:
Run time error:
neveljavni parameter
in označi vrstico v kodi
ActiveChart.SeriesCollection(daljica).Name = ime
Koordinatni sistem se mi pokaže, ampak izriše se le graf t1, vendar napačno. Če se postavim na izrisani točki, napiše:
Niz "t1 " točka "-3" (1,0)
Niz "t2 " točka "14" (2,0)
Spodnji makro vam bo vsako daljico pobarval tako, kot je barva šeste celice v tabeli:
Pa še makro:
Opombi:
Koda: Izberi vse
x1 y1 x2 y2 barva
t1 -3 -13 14 1 <celico pobarvajte tako, kot zelite barvo črte>
t2 -11 13 -4 4 <celico pobarvajte tako, kot zelite barvo črte>
t3 -7 10 -10 0 <celico pobarvajte tako, kot zelite barvo črte>
Koda: Izberi vse
Sub RisiDaljice()
'
' Napisal: Matjaž Prtenjak
' www.matjazev.net
'
' Datum: 27.11.2008
'
Dim obmocje As Range
Set obmocje = Selection.CurrentRegion
' Območje mora imeti natanko 6 kolon.
' V prvi koloni je ime daljice
' V drugi in tretji koloni sta X in Y začetne točke daljice
' V četrti in peti koloni sta X in Y končne točke daljice
' Šesta kolona mora biti pobarvana
Dim list As String
list = "'" & ActiveSheet.Name & "'!"
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=obmocje, PlotBy:=xlRows
Dim daljica As Integer
Dim ime As String, x As String, x1 As String, y As String, y1 As String, ci As Integer
For daljica = 1 To obmocje.Rows.Count - 1
ime = obmocje.Cells(1, 1).Offset(daljica, 0)
x = list & obmocje.Cells(1, 1).Offset(daljica, 1).Address(ReferenceStyle:=xlR1C1)
y = list & obmocje.Cells(1, 1).Offset(daljica, 2).Address(ReferenceStyle:=xlR1C1)
x1 = list & obmocje.Cells(1, 1).Offset(daljica, 3).Address(ReferenceStyle:=xlR1C1)
y1 = list & obmocje.Cells(1, 1).Offset(daljica, 4).Address(ReferenceStyle:=xlR1C1)
ci = obmocje.Cells(1, 1).Offset(daljica, 5).Interior.ColorIndex
ActiveChart.SeriesCollection(daljica).Name = ime
ActiveChart.SeriesCollection(daljica).XValues = "=(" & x & "," & x1 & ")"
ActiveChart.SeriesCollection(daljica).Values = "=(" & y & "," & y1 & ")"
ActiveChart.SeriesCollection(daljica).Border.ColorIndex = ci
Next
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub
- V prvi tabeli, ki sem vam jo napisal ob makru je res napaka, saj mora biti gornja leva celica (tam kjer piše ime) prazna, sicer makro ne deluje pravilno
- Nov makro se od starega razlikuje v dveh podrobnostih - pozna barve in popravljen je hrošč, saj bi prvi makro ne deloval, je bi imeli v imenu lista presledek. Nov makro deluje pravilno tudi v takšnem primeru.
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator
Deluje, izvrstno deluje hvala
Zanima me pa samo še ena stvar:
A barve pri pogojnem oblikovanju niso polnilo celice?? Če sem namreč obarval celice v 6. stolpcu s pomočjo pogojnega oblikovanja, se mi daljice na grafu niso izrisale v skladu s temi barvami. Malo nenavadno...
a je rešitev problema pogojno oblikovanje celic v vb-ju ali je možno aplicirati barve pogojnega oblikovanja tudi na polnila.
Lp, Jure
Zanima me pa samo še ena stvar:
A barve pri pogojnem oblikovanju niso polnilo celice?? Če sem namreč obarval celice v 6. stolpcu s pomočjo pogojnega oblikovanja, se mi daljice na grafu niso izrisale v skladu s temi barvami. Malo nenavadno...
a je rešitev problema pogojno oblikovanje celic v vb-ju ali je možno aplicirati barve pogojnega oblikovanja tudi na polnila.
Lp, Jure