Telefonszámunk: 1-472-0679

[Resolved] Út-idő diagram

Kezdőlap Fórumok Excel programozás [Resolved] Út-idő diagram

Topic Resolution: Resolved
7 bejegyzés megtekintése - 1-7 / 7
  • Szerző
    Bejegyzés
  • #7957
    Gabor733
    Felhasználó

      Sziasztok!

      Szeretnék csinálni egy út-idő diagramot, melyhez szerkesztettem egy táblázatot, amit mellékeltem.
      Az idő lenne a vízszintes tengely, egy cella egy percet jelent, az út a függőleges, azt nem szerkesztettem meg, mivel az a konkrét útvonaltól függ. Az ábrázolandó járatokat (több lenne, mindkét irányban) úgy szeretném, hogy az alakzatok menüből vonal húzásával, melynek a konkrét időadatok függvényében a rácsvonalak metszéspontjából kéne indulnia, ill. oda érkeznie. A konkrét adatok bázisául egy másik munkalapon lévő táblázat szolgálna, attól függően, hogy lehetne ezt célszerűen megoldani.
      A kérdésem ez lenne, megoldható -e ez makróval? Illetve szívesen fogadnék más tippeket is.

      Válaszotokat előre is köszönöm!

      Üdv: Gábor

      • A témakör módosításra került: 4 years telt el-Gabor733.
      • A témakör módosításra került: 4 years telt el-horvimi.
      Attachments:
      You must be logged in to view attached files.
      #7963
      horvimi
      Adminisztrátor

        Szia!

        Makróval valószínűleg megoldható, makró nélkül pedig valószínű, hogy nem.
        Hogy mit is szeretnél, azt nem igazán értem.

        Általánosan így kell vonalat rajzolni Excel lapra, ahol a koordinátákat a munkalap bal felső sarokához képesti pozícióként, pontban lehet megadni:

        Activesheet.Shapes.Addline BeginX:=10, BeginY:=10,EndX:=200,EndY=200

        A következő a B8-as cella bal felső sarkától a B5-ös cella bal felső sarkáig húz vonalat.

        activesheet.shapes.addline BeginX:=range("B8").left, BeginY:=range("B8").top, EndX:=range("B5").left, _
          EndY:=range("B5").top

        Imre

        • A hozzászólás módosításra került: 4 years telt el-horvimi.
        • A hozzászólás módosításra került: 4 years telt el-horvimi.
        #7976
        Gabor733
        Felhasználó

          Köszönöm a segítséget Imi, kísérletezem vele.

          #7980
          verax
          Felhasználó

            Szia Gabor733!

            Milyen jó lenne, ha nem csak egy üres sablont mellékelnél, hanem egy-két példán bemutatnád, hogy milyen végeredményre számítasz! Milyen adatok alapján, mi jelenjen meg?

            „… Az ábrázolandó járatokat (több lenne, mindkét irányban) úgy szeretném, hogy az alakzatok menüből vonal húzásával (???), melynek a konkrét időadatok függvényében a rácsvonalak metszéspontjából kéne indulnia, ill. oda érkeznie. …” (???)

            A járatokat vonal alakzattal szeretném ábrázolni, mégpedig úgy, hogy a vonal két vége az indulás és az érkezés időpontját tartalmazó oszlopban található celláknál legyen.
            Egy példa:
            1. járat indul 4 óra 10 perckor, érkezik 8 óra 45 perckor,…
            tehát a vonal az IR4:TG4 cellatartományba legyen belerajzolva.

            Ha jól értem.

            Nem értem, miért vonalban gondolkodsz?
            Miért nem jó neked, ha a cellákat színezed makróval? Feltételes formázással is lehetne, de arról lebeszélnélek, mert rengeteg számítást fog igényelni. Soronként 1440 cella!!

            üdvözlettel
            verax

            #8009
            Gabor733
            Felhasználó

              Sziasztok!

              Verax, gondolkoztam színezett cellákban, viszont az a baj, hogy egy adott pontban egyszerre kettő, vagy akár több járat is lehet.

              Imre, kipróbáltam az általad javasoltakat, meg is próbáltam hozzá megírni a makrót, amivel sikerült is megrajzolnom egy „járatot”, egyszerűsítve, de a végén hibát jelez.

              `Sub vonal()

              Dim all, ido, mi, i As Variant

              i = 2

              Do Until Sheets(„Menetrend páros”).Cells(i, 2) = „”

              all = Sheets(„Menetrend páros”).Cells(i, 4).Value
              ido = Sheets(„Menetrend páros”).Cells(i, 5).Value
              mi = Sheets(„Menetrend páros”).Cells(i + 1, 5) – Sheets(„Menetrend”).Cells(i, 5)

              Sheets(„Ábra”).Shapes.AddLine BeginX:=Cells(all, ido).Left, BeginY:=Cells(all, ido).Top, EndX:=Cells(all + 1, ido + mi).Left, _
              EndY:=Cells(all + 1, ido + mi).Top

              i = i + 1

              Loop

              Do Until Sheets(„Menetrend páratlan”).Cells(i, 2) = „”

              all = Sheets(„Menetrend páratlan”).Cells(i, 4).Value
              ido = Sheets(„Menetrend páratlan”).Cells(i, 5).Value
              mi = Sheets(„Menetrend páratlan”).Cells(i + 1, 5) – Sheets(„Menetrend”).Cells(i, 5)

              Sheets(„Ábra”).Shapes.AddLine BeginX:=Cells(all, ido).Left, BeginY:=Cells(all, ido).Top, EndX:=Cells(all + 1, ido + mi).Left, _
              EndY:=Cells(all + 1, ido + mi).Top

              i = i + 1

              Loop

              End Sub

              Azt szeretném kérdezni, hogy hol a hiba a kódban?
              A rajzolt vonalak 4-5 óra között vannak, a kéket rajzoltam a makróval, a pirosat szabadon.
              A cél az lenne, hogy úgy, mint a pirosnál, makróval tudjak olyan vonalat rajzolni a járatoknak, amik egyrészt tudják az egyes megállókban az állásidőt értelmezni, másrészt, ha van rá lehetőség, folyamatos vonalak, melyeket ha kell, egy az egyben lehet mozgatni. Van lehetőség esetleg a vonalaknak konkrét töréspontokat koordinátával definiálni?
              Hogyan tudok egy ilyen vonalat megformázni, színre, vastagságra?
              Tudom -e indítani a vonalat a cella jobb alsó sarkától? (Top helyett a bottom alkalmazása nem sikerült…)
              A végcél az lenne, hogy (sokkal) több járatot is tudjak ábrázolni egy ilyen grafikonon, és az útvonal(függőleges tengely) is viszonylag egyszerűen variálható legyen.

              Válaszotokat előre is köszönöm!

              Üdv: Gábor

              Attachments:
              You must be logged in to view attached files.
              #8011
              horvimi
              Adminisztrátor

                Szia!

                Nem néztem még a kódot, ahhoz több idő kellene.
                Mégis melyik soron, milyen hibával áll meg? Olyan nincs, hogy a „végén” 🙂

                Többire válaszok:
                – Elsőként leszögezem, hogy nem szoktam rajzolni az Excellel így, szóval lexikonként nem tudok funkcionálni.
                – Amit nem tudsz, vedd fel rögzítővel, vagy keress rá. A vastagság bizonyára valami Weight érték lesz, a szín meg valami RGB kód
                – Jobb alsó saroktól nem lehet vonalat indítani csak úgy, kimatekozod, hogy az melyik cella bal felső sarka
                – A vonalakat így egesével lehet megrajzolni, a megrajzolás után esetleg be lehet őket csoportosítani.
                A csoportosítást szintén fel tudod venni rögzítővel. Ez valószínűleg a vonalak neveivel és valami Array szintaktikával dolgozik, ami elég nagy kihívás lesz. Ha minden megrajzolt vonalat valami logika szerint elnevezel, és a név alapján ki lehet választani az egy útvonalhoz tartozó vonalakat valami ciklusban, akkor sikerülhet.

                Ha útvonalat akarsz variálni, akkor még izgalmasabb a helyzet, mert akkor már egy szép adatbázis/adatszerkezeti kérdéssel állsz szemben. Gondolom az útvonalat a táblázatok adataiban akarod módosítani. A módosítás után meg kell találni, hogy mely vonal(ak) tartoznak az adott útvonalhoz, azokat törölni és újra rajzolni kell tudni.
                Ez úgy lehetséges, ha ezt valahogy letárolod valami névkonvencióval pl. a vonalak neveiben és a menetrend táblákban is.

                Hát, szép feladat kerekedhet belőle.

                #8012
                Gabor733
                Felhasználó

                  Köszönöm!

                7 bejegyzés megtekintése - 1-7 / 7
                • Be kell jelentkezni a hozzászóláshoz.