Saako excelin piirtämään?

Anonyymi

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?

21

908

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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. :)


    • kunde

      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

    1. Kuvat! Dannyyn liitetty Helmi Loukasmäki, 22, on puhjennut naisena kukkaan - Some sekoaa: "Sä..."

      Ooo, kaunis aikuinen nainen Helmistä on kasvanut siinä yli 80-vuotiaan Dannyn rinnalla! Katso uudet kuvat: https://ww
      Suomalaiset julkkikset
      57
      4230
    2. Henkirikos Alakylässä

      Nainen löydetty elottomana, mies otettu kiinni. Mitä on tapahtunut?
      Seinäjoki
      47
      2891
    3. Suodatinpussin kastelemalla saa parempaa kahvia

      Kokeilin niksiä ja kyllä tämä kahvi on parempaa nyt. Ei lainkaan maistu paperiselta. Huljuttelee hanan alla suppiloa pap
      Maailman menoa
      132
      2175
    4. Tidätkö nainen

      että suoraan sanottuna v.tut.aa että pääsit näin lähelle minua. Ei olisi oikeasti aikaa tähän mutta silti aina välillä o
      Ikävä
      105
      1896
    5. Mikä on kaivattusi etunimi?

      Otsikossa siis on kysymys eriteltynä. Vain oikeat vastaukset hyväksytään.
      Ikävä
      64
      1383
    6. Onkohan sinulla kaikki hyvin?

      Nyt vähän sellainen outo tunne tuli. Sinun asiasi niin ei minulle toki tarvitse kertoa. Kunhan mietin...
      Ikävä
      38
      1177
    7. Viimeinen reissu tälle kesälle

      Pian se syksy on. Hyvää huomenta ja aurinkoista päivää. ☕🌞🍁🌻🐺❤️
      Ikävä
      173
      1066
    8. Huikeeta, mahtavaa, ihan mielettömän upeeta

      Me ostettiin talo Espanjasta. Tosin saadaan käyttää sitä vain muutama viikko vuodessa kun on monta muutakin ostajaa! M
      Kotimaiset julkkisjuorut
      187
      1049
    9. En kestä katsoa

      Sitä miten sinusta on muut kiinnostuneita. Olen kateellinen. Siksi pitäisi lähteä pois
      Ikävä
      87
      1048
    10. Oho! Arja Koriseva paljastaa TTK:n ekasta suorasta lähetyksestä: "On vähän ärsyttävä yhtälö!"

      Upea Arja Koriseva! Tsemppiä haasteelliseen tilanteeseen! Lue lisää: https://www.suomi24.fi/viihde/oho-arja-koriseva-
      Suomalaiset julkkikset
      16
      1012
    Aihe