Stránka 1 z 1

Výsledky výpočtu v excelu na nový řádek

Napsal: 25 lis 2008 01:17
od patrik_k
Dobrý den, potřeboval bych poradit, jak dostávat podle zadání výsledky výpočtu (součtu) do příslušné buňky (buněk). Tzn. zadání č.5 (tj. buňka B1 a hodnota 5) dostat do buňky E6 a výsledek (buňka B4) tj. 22 do buňky F6, atd. zadání č.6 dostat do buňky E7 a výsledek pak do buňky F7(atd.)? Poradí mi někdo?

Obrázek

Re: Výsledky výpočtu v excelu na nový řádek

Napsal: 25 lis 2008 08:16
od navstevnik
Vzhledem k nutnosti zachovat vysledky predchozich zadani, je resenim procedura ve VBA.
V udalostni procedure Worksheet_Change cislo zadani bude urcovat polohu vysledku ve sloupcich E:F.
Tolik porada, pokud v rozumnem case nedospejes k reseni, dej sem vedet, pridam dalsi pomoc.
Doplnuji: udalostni procedura by vyzadovala vlozit cislo zadani az nakonec (jinak nutno osetrit postup zadavani), tak je vhodnejsi resit subrutinou volanou klavesovou zkratkou.

Re: Výsledky výpočtu v excelu na nový řádek

Napsal: 25 lis 2008 12:08
od navstevnik
a student ma domaci ukol vyresen.
Subrutina volat klavesovou zkratkou:

Kód: Vybrat vše

Option Explicit
Public Zadani As Range
Sub ZadaniVysledek()
Dim Vysledek As Range
  Set Zadani = Worksheets("list1").Range("b1")
  Set Vysledek = Zadani.Offset(0, 3)
  Vysledek.Offset(Int(Zadani.Value), 0).Value = Int(Zadani.Value)
  Vysledek.Offset(Int(Zadani.Value), 1).Value = Zadani.Offset(3, 0).Value
  Zadani.Resize(3, 1).ClearContents
End Sub

a pripadne volat: udalostni procedurou (nutno vlozit cislo zadani nakonec):

Kód: Vybrat vše

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  Set Zadani = Worksheets("list1").Range("b1")
  If Target.Address = "$B$1" And Int(Zadani.Value) > 0 Then
    Application.EnableEvents = False
    ZadaniVysledek
    Application.EnableEvents = True
  End If
End Sub

Re: Výsledky výpočtu v excelu na nový řádek

Napsal: 25 lis 2008 13:15
od mike007
navstevnik: Myslím, že v té událostní proceduře máš chybu. Jinak máš to lépe provedené než já, takže své řešení mažu, ať to je zde přehledné.

Re: Výsledky výpočtu v excelu na nový řádek  Vyřešeno

Napsal: 25 lis 2008 17:17
od navstevnik
mike007: Chyba v udalostni procedure neni, ale vzdy lze dopilovat, takze (a proto predchozi nemazu):

subrutina:

Kód: Vybrat vše

Option Explicit
Sub ZadaniVysledek()
Dim Zadani As Range, ZadCis As Integer, Vysledek As Range
  Set Zadani = Worksheets("list1").Range("b1")
  If Not IsNumeric(Zadani.Value) Or Zadani.Value = 0 Then Exit Sub
  ZadCis = Int(Zadani.Value)
  Set Vysledek = Zadani.Offset(0, 3)
  Vysledek.Offset(ZadCis, 0).Value = ZadCis
  Vysledek.Offset(ZadCis, 1).Value = Zadani.Offset(3, 0).Value
  Zadani.Resize(3, 1).ClearContents
End Sub

udalostni procedura:

Kód: Vybrat vše

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$B$1" Then
    Application.EnableEvents = False
    ZadaniVysledek
    Application.EnableEvents = True
  End If
End Sub

Re: Výsledky výpočtu v excelu na nový řádek

Napsal: 26 lis 2008 11:34
od mike007
Chyba tam není, ale je dost nepraktické zadávat údaje odzdola nahoru :?

Re: Výsledky výpočtu v excelu na nový řádek

Napsal: 26 lis 2008 21:46
od navstevnik
mike007: mas pravdu, a protoze s nejvetsi pravdepodobnosti se jedna o skolni zadani, nebot to nema prakticke uplatneni (patrik_k stejny dotaz dal na http://excelplus.net./forum), muze vlastni pili upravit pro bunku B3.

Re: Výsledky výpočtu v excelu na nový řádek

Napsal: 26 lis 2008 21:50
od mike007
Pravda :wink:
Označuju "problém" za vyřešený.