EXCEL (makro) - GRAF

Programy pro práci s textem, tabulkami, prezentacemi

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod dawe123456 14. 12. 2017 21:34

Ahoj všichni,

potřeboval bych pomoc s tvorbou grafu pomocí makra. V matlabu jsem si vygeneroval tabulku a následně ji vyexportoval do excelu. Bohužel s excelovskýma makrama moc zkušenosti nemám.

Problém je ještě v tom že každá určitá tabulka vygenerovaná MATLABEM je specifická a sloupce v každé tabulce jsou jinak dlouhé oproti jiné tabulce. V jedné tabulce jsou sloupce stejně dlouhé). Potřeboval bych tedy aby to makro umělo poznat délku sloupce a zahrnout to do makra.

Věděl by si s tím někdo rady? Budu rád za jakoukoliv odpověď.
dawe123456
Kolemjdoucí

Odeslat příspěvekod mochr 15. 12. 2017 09:49

něco takového? pokud nevíme jak vypada tabulka můžeme jen odhadovat
Sub graf()
'
' graf Makro
'
Dim sloupce, radky As Integer
Dim bunka As String

'zjisteni pocet radku
For a = 1 To 65555
If Cells(a, 1) = "" Then
radky = a - 1
Exit For
End If
Next

'zjisti pocet sloupcu
For a = 1 To 65555
If Cells(1, a) = "" Then
sloupce = a - 1
Exit For
End If
Next

'prevede na format "A1"
bunka = Cells(radky, sloupce).Address(RowAbsolute:=False, ColumnAbsolute:=False)


'vytvori graf
'
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("A1:" & bunka)
End Sub
Alcatel 303-> Nokia 3120->Nokia 6151-> Nokia 5230->Nokia E7 Belle->Nokia Lumia 920->Redmi 4X
Felicia 40kW -> Passat B5 85kW -> ?
mochr
Junior

Odeslat příspěvekod dawe123456 15. 12. 2017 13:43

Ahooj,

ano máš pravdu, omlouvám se, že jsem nevložil náhled jak tabulka vypadá. Přiložím do přílohy.

Ten kód vypadá super (y). Akorát počet sloupců je pokaždé konstantní. Tím pádem potřebuji zjišťovat jen počet řádků jak tam máš uvedeno.

Do grafu bych potřeboval vykreslovat pokaždé závislost na sloupci C (což je čas HH:MM) na sloupcích D,E,F,G,H.

Do přílohy přikládám i jak bych by to mělo vypadat když to vytvořím pomocí grafu v excelu (bez použití makra).

Moc děkuji předem za odpověď. Vážím si toho.


mochr píše:něco takového? pokud nevíme jak vypada tabulka můžeme jen odhadovat
Sub graf()
'
' graf Makro
'
Dim sloupce, radky As Integer
Dim bunka As String

'zjisteni pocet radku
For a = 1 To 65555
If Cells(a, 1) = "" Then
radky = a - 1
Exit For
End If
Next

'zjisti pocet sloupcu
For a = 1 To 65555
If Cells(1, a) = "" Then
sloupce = a - 1
Exit For
End If
Next

'prevede na format "A1"
bunka = Cells(radky, sloupce).Address(RowAbsolute:=False, ColumnAbsolute:=False)


'vytvori graf
'
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("A1:" & bunka)
End Sub
Přílohy
nahled_tabulky_excel.png
Ukazka_grafu_bez_makra.png
dawe123456
Kolemjdoucí

Odeslat příspěvekod mochr 16. 12. 2017 14:10

zkuste takhle:

Sub graf()
'
' graf Makro
'
Dim radky As Integer
Dim bunka As String

'zjisteni pocet radku
For a = 3 To 65555
If Cells(a, 3) = "" Then
radky = a - 1
Exit For
End If
Next



'prevede na format "A1"
bunka = Cells(radky, 8).Address(RowAbsolute:=False, ColumnAbsolute:=False)


'vytvori graf
'
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("C3:" & bunka)
End Sub


https://ufile.io/7i02s - tady soubor
Alcatel 303-> Nokia 3120->Nokia 6151-> Nokia 5230->Nokia E7 Belle->Nokia Lumia 920->Redmi 4X
Felicia 40kW -> Passat B5 85kW -> ?
mochr
Junior

Odeslat příspěvekod dawe123456 17. 12. 2017 15:38

Děkuji moc :).

Šlo by také vymyslet makro, kde zvolíme pouze jeden čas ve sloupci C a zobrazí to graf pouze v časovým rozmezí hodinu před zvoleným časem a hodinu po zvoleným čase? o.O
dawe123456
Kolemjdoucí

Odeslat příspěvekod mochr 18. 12. 2017 07:22

vymyslet toho jde spoustu :), pokud jsem to spravne pochopil tak jednoduse takto:
Kód: Vybrat vše
Sub graf2()

Dim radky As Integer
Dim bunka_start As String
Dim bunka_konec As String
Dim pocatek As Integer
Dim index_start, index_konec As Integer

'zvoleny radek
pocatek = ActiveCell.Row

'zjisteni pocet radku
For a = 3 To 65555
If Cells(a, 3) = "" Then
radky = a - 1
Exit For
End If
Next

'omezeni pro zacatek a konec grafu
If pocatek < 60 Then
index_start = 3
Else
index_start = pocatek - 60
End If

If pocatek + 60 > radky Then
index_konec = radky
Else
index_konec = pocatek + 60

End If


'prevede na format "A1"
bunka_start = Cells(index_start, 3).Address(RowAbsolute:=False, ColumnAbsolute:=False)
bunka_konec = Cells(index_konec, 8).Address(RowAbsolute:=False, ColumnAbsolute:=False)



'vytvori graf
'
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range(bunka_start & ":" & bunka_konec)
End Sub


odkaz: https://ufile.io/2fhp1
Alcatel 303-> Nokia 3120->Nokia 6151-> Nokia 5230->Nokia E7 Belle->Nokia Lumia 920->Redmi 4X
Felicia 40kW -> Passat B5 85kW -> ?
mochr
Junior

Odeslat příspěvekod dawe123456 5. 1. 2018 11:48

Děkuji moc :)

Mám ještě poslední otázku. Kdybych v tomto úsekovým grafu chtěl udělat analýzu hodinových intervalů pomocí makra. (minimum, maximum, median...to znamená že za každou hodinu by byla vypsána hodnota minima, maxima a mediánu), jaký by byl postup?

A na závěr provést korelaci sloupce D se sloupcem F.

Předem děkuji za odpověď, moc si toho vážím.
Pěkný zbytek dne.
dawe123456
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků