Onko excelissä sellaista komentoa jolla piirrettäsin viiva pisteestä pisteeseen, tai tietyn pituinen viiva määrättyyn suuntaan? Tarvitsisi tietenkin alueen määrittelyn jonka koordinaatteihin viitattaisiin. Voiko noita kaaviojuttuja jotenkin soveltaa erillisten viivojen piirtoon?
Saako excelin piirtämään?
21
995
Vastaukset
- Anonyymi
Katselehan niitä Lisää/Muodot -valikon juttuja sillä silmällä illan hämärryttyä.
- Anonyymi
Eikös nuo ole vain itse ruudulle piirrettäviä koristeita. Vai saako ne ottamaan parametrit suoraan taulukosta kaavojen laskemana?
- Anonyymi
Kyllä voi. Paljonkin käppyrä piiroksia kyhätty joskus, tosin ei exlelillä vaan LibreOfficella ja kosketusnäyttö ja kynä .... Josta voi päätellä miten homma toimi.
Kyllä pystyy piirtämään kuvioilla sekä viivoilla täysin parametrisesti ja lisäämään teksturit kanssa.
Itse olen tehnyt parit kalusteiden suunnitteluohjelmat, joissa piirretään parametreillä.
Lisätään esim. komeron aukkoihin erilaisia objekteja kuten hyllyjä, laatikoita, koreja ja erilaisia settejä yms ja ohjelma tekee myös tarvittavat CNC koodit komeronosille. Eli täysi paketti tilauksesta tuotantoon... ;-)
Keep EXCELing
@Kunde- Anonyymi
Varmaan kyllä jos kirjoittaa itse funktion siihen hommaan. Valmiina ei taida olla mitään piirtofuktiota?
Pyöräytäppä malliksi funkio joka piirtää taulukkoon tietylle alueelle viivan taulukosta haettujen koordinaattipisteiden välille, tai suunta- ja pituustiedolla. :)
Laitoin malliksi hieman muitakin juttuja, mitä voi hyödyntää. On toki paljon muitakin vielä. Itsellä oli tarve lisätä paljon attribuuttitietoa (mm poraukset) ja Excelissä ei semmoista ole objekteilla mutta aika kivuttomasti se tollainkin meni...
Tein myöhemmin sitten treeviewllä yksinkertaisen rakennepuun, missä osia pystyy muokkaaman vapaasti.
APIlla sitten lomakkeellaoli helpompaa fiksailla kaikkea ja näkee piirron kanssa samalla, mutta ihan toimiva juttu ja todistaa sen, että EXCEL taipuu moniin juttuihin, mihin sitä ei le alunperin edes tarkoitettu ;-)
Sub Suorakaide(X As Double, Y As Double, Leveys As Double, Korkeus As Double)
Dim a
Dim xlShp As Shape
Worksheets(1).Activate
'soluun kiinnitettynä
Set xlShp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, ActiveSheet.Range("C10").Left, ActiveSheet.Range("c10").Top, Leveys, Korkeus)
'vasemmasta yläkulmasta lähtien
'Set xlShp = ActiveSheet.Shapes.AddShape(msoShapeRectangle, X, Y, Leveys, Korkeus)
With xlShp
.Name = "Kundenmalli"
'tässä voi lisätä atribuuttitietoja vaihtoehtoinen teksti attribuuttiin, josta voi lukea sitten kätevästi tuotteen tietoja tai indoa
.AlternativeText = .Name & "," & Korkeus & "," & Leveys & ",Tammi"
'tässä voi kätevästi näyttää tuotteen tiedot hyperlinkillä kun hiirellä siirtyy kuvion päälle
a = Split(.AlternativeText, ",")
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Shapes(.Name), Address:="", ScreenTip:="Osan nimi: " & a(0) & vbNewLine & "Korkeus: " & a(1) & vbNewLine & "Leveys: " & a(2) & vbNewLine & "Väri: " & a(3)
'tässä voi lisätä materiaalin tai värin
' .Fill.UserPicture ThisWorkbook.Path & "\" & "Tammi.jpg"
.Line.Visible = msoTrue
.Line.Weight = 0
End With
'viiva
Set xlShp = ActiveSheet.Shapes.AddLine(ActiveSheet.Shapes("Kundenmalli").Left ActiveSheet.Shapes("Kundenmalli").Width, ActiveSheet.Shapes("Kundenmalli").Top ActiveSheet.Shapes("Kundenmalli").Height, 500, 500)
xlShp.Select
xlShp.Name = "Viiva"
End Sub
Sub Koe()
'tiedot voi hakea solustakin
'Suorakaide Range("A1"), Range)"B1"), Range("C1"), Range("D1")
Suorakaide 100, 100, 100, 500
End Sub
Keep EXCELing
@Kunde- Anonyymi
No huh, tuossa onkin tavaamista löytyykö itselle sovellettavaa koodia :)
- Anonyymi
Tein kokeeksi tällaisen vektorinpiirtofunktion:
Function Viiva1(x As Double, y As Double) As Double
Dim xlShp As Shape
Set xlShp = ActiveSheet.Shapes.AddLine(ActiveSheet.Range("P18").Left, ActiveSheet.Range("P18").Top, x, y)
End Function
Voiko tavallisen viivan asemasta käyttää valmista nuoliviivaa, olisi vektorille just passeli? En keksinyt millä nimellä sitä voisi käyttää.
Toinen oleellinen juttu on, miten poistaa ensin edellinen vektori kun uusi piirretään? - Anonyymi
Exel aika hidas. Librellä leikitiin joskus ja tehtii pikku ohjelma joka syötti parametrejä wavom kautta.
Taullukko kuitenkin kasvoi järkytävästi ennekö muotokuva oli valmis ellei hallinut tekniikaa vasemmalta oikeelle.
Monimutkaisemoi ohjelma olisi tietysti korjannut asiaa.
Käytimme siis esitykseen viiva käyrästöä. parisata ei käyrää ja kuva oli jo melko mukava.
Exelillä moinen tahmaa jo melkolailla! - Anonyymi
Anonyymi kirjoitti:
Exel aika hidas. Librellä leikitiin joskus ja tehtii pikku ohjelma joka syötti parametrejä wavom kautta.
Taullukko kuitenkin kasvoi järkytävästi ennekö muotokuva oli valmis ellei hallinut tekniikaa vasemmalta oikeelle.
Monimutkaisemoi ohjelma olisi tietysti korjannut asiaa.
Käytimme siis esitykseen viiva käyrästöä. parisata ei käyrää ja kuva oli jo melko mukava.
Exelillä moinen tahmaa jo melkolailla!Taullukko? Järkytävästi?Tekniikaa? Monimutkaisemoi?
Oikeastihan vektorille annetaan suuntakulma ja pituus
Voin tehdä makron tommoselle jos haluat... ;-)
Jos haluat jotain muutakin, niin kerro ja lisätään sitten makroon
Function Viiva1(x As Double, y As Double) As Double
Dim xlShp As Shape
Set xlShp = ActiveSheet.Shapes.AddLine(ActiveSheet.Range("P18").Left, ActiveSheet.Range("P18").Top, x, y)
xlShp.Line.BeginArrowheadStyle = msoArrowheadNone
xlShp.Line.EndArrowheadStyle = msoArrowheadStealth
End Function
ActiveSheet.Shapes("Kundenmalli").Delete
Keep EXCEling
@Kunde- Anonyymi
Tieto on alunperin kompleksilukuna, joka muunnettavissa kyllä helposti kulmamuotoon. Skaalaus vektorin pituudelle on ehkä helpoin tehdä kulmamuodossa. Ei ole kyllä hajuakaan miten viiva saadaan piirrettyä tiettyyn suuntakulmaan, että en panisi pahakseni valmiista esimerkkimakrosta :)
tavalliseen moduuliin...
Option Explicit
Sub Poista()
Dim Shp As Shape
On Error Resume Next
For Each Shp In ActiveSheet.Shapes
Shp.Delete
Next Shp
End Sub
Sub PiirräVektori()
Poista
Dim Vektori1 As New ClsVektori
With Vektori1
'jos käytät muuta kuin Vektoriluokan oletusta aloituspisteelle, niin hipsaa allaolevat 2 riviä...
' .x1 = ActiveSheet.Range("P18").Left
' .y1 = ActiveSheet.Range("P18").Top
' pituus
.Pituus = Range("A1").Value
' kulma
.Kulma = Range("A2").Value
' skalaari
.Skalaari = 10
.Nimi = "Vektori1"
.Piirrä
End With
End Sub
lisää luokka moduuli ja nimeä se ClsVektori ja lisää allaoleva koodi sinne
Oletuksia voi lisätä ja ominaisuuksia lisäillä tarpeen mukaan
Option Explicit
Public x1 As Double
Public y1 As Double
Public Kulma As Double
Public Pituus As Double
Public Skalaari As Double
Public Viivanväri As Integer
Public Viivanpaksuus As Double
Public Nimi As String
Public Pi As Double
Private Sub Class_Initialize()
' oletusarvoja
x1 = 200
y1 = 200
Kulma = 0
Pituus = 10
Skalaari = 1
Pi = 3.14159265358979
Viivanväri = 8
Viivanpaksuus = 1
End Sub
Private Function Rad(Asteet As Double) As Double
Rad = Asteet * Pi / 180
End Function
Function x2() As Double
x2 = x1 Pituus * Sin(Rad(Kulma)) * Skalaari
End Function
Function y2() As Double
y2 = y1 - Pituus * Cos(Rad(Kulma)) * Skalaari
End Function
Sub Piirrä()
With ActiveSheet.Shapes.AddLine(x1, y1, x2, y2)
.Name = Nimi
.Line.EndArrowheadStyle = msoArrowheadStealth
.Line.BeginArrowheadStyle = msoArrowheadNone
.Line.ForeColor.SchemeColor = Viivanväri
.Line.Weight = Viivanpaksuus
End With
End Sub
Keep EXCELing
@Kunde- Anonyymi
Tattis!
Tuossa menee toinenkin tovi, että saan kaiken koodin omaksuttua...
Yksi tyhmä kysymys heti aluksi, jos taulukossa fuktiolla piirretäänkin useampia vektoreita, työstävätkö funktiot ja aliohjelmat vain yhtä piirrettävää vektoria kerrallaan? Tarkoitan ettei esim. vanhan vektorin poisto poista toisia jo päivitettyjä vektoreitakin.
Riippuu siitä miten olet koodin tehnyt.
Jos et halua poistaa jo tehtyä vektoreita hipsaa moduulin koodissa poista funktion kutsu tai nimeä nimeä vektorit siten, että niitä on helppo hallita, lisäämällä eteen vaikka jonkun erikoismerkin (esimerkkikoodissa @- merkki eteen)...
Funktiot voi käsitellä useampia vektoreita kerrallaan. En tiedä mitä haluat tehdä ja minkälainen on taulukkosi, joten koodi vain ihan peruspiirtoon. Jos haluat laskea vektoreita yhteen laskea vektoreiden välisiä kulmia yms. , niin clsVektori moduulissa vaan lisätään ominaisuuksia vektoreille ja hiukkasen matematiikkaa... ;-)
Sub Poista()
Dim Shp As Shape
On Error Resume Next
For Each Shp In ActiveSheet.Shapes
If Not Shp.Name Like "@*" Then Shp.Delete
Next Shp
End Sub
Keep EXCELing
@Kunde- Anonyymi
Tarkoitus olisi esittää kolmivaihesähkön virtojen ja jännitteiden suuntien poikkeamia normaalista 120 asteen sijainnista eri tilanteissa/tehokertoimilla. Numeerista tietoa antava taulukko on valmiina, ja käytettävissä oleva suuntatieto pitäisi saada jotenkin havainnollistettua.
Selkeintä on kai tehdä jokaista vektoria varten oma nimetty versio funktiosta/ aliohjelmista, jotka operoivat vain yhtä vektoria.
Kunhan nyt saa ensin sen ensimmäisenkään vektorin 'elämään' :) - Anonyymi
Anonyymi kirjoitti:
Tarkoitus olisi esittää kolmivaihesähkön virtojen ja jännitteiden suuntien poikkeamia normaalista 120 asteen sijainnista eri tilanteissa/tehokertoimilla. Numeerista tietoa antava taulukko on valmiina, ja käytettävissä oleva suuntatieto pitäisi saada jotenkin havainnollistettua.
Selkeintä on kai tehdä jokaista vektoria varten oma nimetty versio funktiosta/ aliohjelmista, jotka operoivat vain yhtä vektoria.
Kunhan nyt saa ensin sen ensimmäisenkään vektorin 'elämään' :)Eikö vektorien piirtoon olisi järkevintä käyttää kuvaajia. Pitäähän niille saada akselitkin näkyviin.
- Anonyymi
Anonyymi kirjoitti:
Eikö vektorien piirtoon olisi järkevintä käyttää kuvaajia. Pitäähän niille saada akselitkin näkyviin.
Perinteistä 90 asteen akselihässäkkää ei tarvita. Kolmivaihesähkön jännitteet ovat 120 asteen erolla toisistaan. Nämä suunta-akselit ovat siis kello-12 L1, -8 L2, -4 L3. Ilman vaihesiirtoa vaiheiden virtojen vektorit ovat jännitesuuntien mukaiset. Kun vaihesiirto tai vaihevirta ei ole kaikissa kolmessa vaiheessa sama tulee mukaan neljäs vektori eli nollavirta.
- Anonyymi
Nyt vektorin piirto on koekäyttövaiheessa, pientä viilailua varmaan vielä riittää toviksi...
https://aijaa.com/TxTIaL
lähetä taulukko hmetso(at)hotmail.com ja mallia mitä haluat, niin voin vilkaista ja kertoa tarkemmin
- Anonyymi
Kiitos, täytyy nyt ensin vähän miettiä ja kehitellä millaista siitä tekisi...
Laitan kuitenkin taulukon "puimuri4.xlsx" joka olisi pohjana.
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Hetken jo luulin, että en ikävöi sinua koko aikaa
Mutta nyt on sitten taas ihan hirveä ikävä jotenkin. Tiedätköhän sinä edes, kuinka peruuttamattomasti minä olen sinuun r345338Outoa että Trump ekana sanoutui irti ilmastosopimuksesta
kun Kaliforniaa riepottelee siitä johtuvat tuhoisat maastopalot. Hirmumyrskytkin ovat USA:ssa olleet tuhoisia.4842474Eli jos toisen hiki haisee ns. omaan nenään siedettävältä
Se kertoo hyvästä yhteensopivuudesta. Selvä! Olet mies minun. 🫵🥳271239JOKO OLETTE KUULLET, MITÄ KIURUVEDELLÄ ON SATTUNUT!
Oletteko jo kuulleet, mitä Kiuruvedellä on sattunut, voi hyvänen aika? Aivan viime tuntien aikana olisi sattunut, jos t51035En tiedä miksi kerroin sinusta täällä
Siksi kai, kun meidän juttu on niin alkuvaiheessa, etten voi vielä puhua siitä kenellekään.16957Oho! Queen of Fucking Everything villitsee - Ikean sininen luottotuote nappasi hervottoman idean!
Ikea on ajan hermoilla! Aika hauska idea ja Queen of Fucking Everything -ajatus toimii hyvin tässäkin. Lue lisää: http7934Nainen, tunnetko saman kuin minä
Syvän yhteyden välillämme, silloin kun se tunne tulee. Niinä hetkinä minulla on niin järjettömän suuri ikävä sinua. Ikäv41812HS - Yllätyskäänne Eagle S -tutkinnassa, Supo pitää onnettomuutena
HS:n mukaan esitutkinta joudutaan todennäköisesti keskeyttämään syyttäjän päätöksellä mikäli näyttöä tahallisuudesta ei193774Ei ois kyllä kivaa
Jos miestä ei kiinnostais ollenkaan minun seura. Aina huitelis ties missä tai olis omassa seurassaan. Kaikki muu ois kiv3764Siellä taas pyörin
Nimittäin sinun paikkakunnalla mies. Mutta en vieläkään nähnyt sinua. Miksi sinä olet minulta aina piilossa?8723