< návrat zpět

MS Excel


Téma: A1 = 30 zkopíruj slopec B:D do vedlejšího listu rss

Zaslal/a 16.3.2017 8:33

Ahoj, mohl by mi někdo poradit, jak při hodnotě pole A1 = 30 by data přesunulo ze sloupce B:D na nový list? a zároveň pak smazala data ze sloupce B:D?

V případě, že již jednou proběhlo kopírování B:D tak aby se data v novém sešitě při nové hodnotě 30 nepřepsala, ale vytvořil se sloupec vedle. Do sešitu 2 nejprve do polí B:D a pak do E:G pak H:J atd. :)

Děkuji

Zaslat odpověď >

#035573
avatar
Důležitou otázkou je, jak se do buňky A1 dostane ona hodnota - důležité pro nastavení (ošetření) podmínky na kopírování (ručně, výpočet...).

Když píšeš, že se mají sloupce přesunout, tak se automaticky i "smažou" z původního listu.

Pak píšeš "data v novém sešitě", ale v předchozí větě mluvíš o přesouvání na nový list. Kam se to tedy má přesouvat?

Rozhodně bys měl vložit přílohu... Jinak řešením je samozřejmě VBA a událost listu.
P.citovat
#035582
elninoslov
No Data1 reaguje na Vašu zmenu, Data2 na zmenu vzorcom. Presúvajú sa celé stĺpce. Ak chcete iba kopírovať stĺpce, treba upresniť, ak chcete kopírovať iba hodnoty (bez formátovania a pod) treba upresniť, ak nie celé stĺpce, ale iba určité riadky, treba upresniť, ak sa majú vynechať prázdne bunky, treba upresniť, atď...citovat
#035587
avatar
Nemá tam být v novém sešitě, ale listě, to jsem popletl. Jinak data se tam počítají ze vzorce. načítám hodnoty náhodnych produktů a pole A1 mám nastavené jako součet zadaných hodnot. Na druhém listu mám výpočet, jak jsem rychle data zadal a graf.


Úplně perfektní by bylo už jen udělat, aby po smazání dat B:D se kurzor přesunul do pole B1?

Jinak děkuji moc, u jen ten přesun kurzoru a je to perfektní :)citovat
#035589
elninoslov
pred riadok
Application.CutCopyMode = False
dajte
Application.Goto Cells(1, 2)

ale má to Achylovu pätu, keď nebude v Backup liste v 1. riadku posledná bunka zároveň poslednou bunkou smerom vpravo, tak Vám prepíše tie, ktoré sú v ďalších riadkoch viac v pravo. Aj preto je potrebné lepšie špecifikovať dáta.

Inak ak tam máte v A1 vzorec napr.
=SUM(B:D)
=SUMA(B:D)

musíte ho zmeniť na nepriamy odkaz, lebo sa robí vystrihnutie a vloženie, a to zmení vzorec na cieľovú adresu, teda do listu Backup.
=SUM(INDIRECT("B:D"))
=SUMA(NEPŘÍMÝ.ODKAZ("B:D"))


Ako som písal pred tým, dá sa to urobiť mnohými spôsobmi. Ja by som uprednostnil iba kopírovanie hodnôt a zmazanie starých cez .ClearContents. A zároveň by som udržiaval v jednej bunke v Backup (napr. A2) číslo posledného zápisu. Potom by sa ľahko násobkom *3 vyrátal správny stĺpec pre zápis, a nezáležalo by na tom, či sú vo všetkých stĺpcoch dáta, ani na vzorcoch. atď...citovat
#035606
elninoslov
Verzia s kopírovaním hodnôt. Teda funguje aj keď sú tam vzorce. Podmienené formátovanie a SUM je zatiaľ nastavený na 100 riadkov.citovat
#035693
avatar
Děkuji moc za příspěvky, dával jsem to nějakou dobu dohromady, ale u zadání 30 pole se to nespustí, nebo se nazapíše čas a jméno uživatele, co data zadával,jak by se to dalo opravit? Dále bych chtěl udělat, že by se po zadání 30 čísel spustila tabulka a zeptala se, jestli chce uživatel zkrácené kolo, nebo zrychlené, aby buď napsal 15 čísel nebo 30. :)
Kdybych věděl jak sem dát přílohu, tak jí sem vložím, dolu přikládám zdroják k programu, hodnoty jsou vypočítané z polí nepřímý odkaz sečti hodnoty polí, když není rovno 0, takže při automatickém vyplnění polí v poli D30 by mělo nastat kopírování na ĺist backup a zeptat se kolik čísel tentokráte ideální by bylo, aby to v backupu bylo s hlavičkou, že bylo vybráno 15 nebo 30 čísel :)

Private Sub Worksheet_Change(ByVal Target As Range)
'plati pro sloupec "B=2" (A=1) krom prvniho radku "And Not Target.Address = "$B$1"" kromě záznamu ple B1
If Target.Column = 2 And Not Target.Address = "$A$1" Then
Application.EnableEvents = False
'zapíše do "4" sloupečku
Cells(Target.Row, 4) = Application.UserName
Application.EnableEvents = True
End If

If Target.Column = 2 And Not Target.Address = "$C$1" Then
Application.EnableEvents = False
'zapíše do "3" sloupečku
Cells(Target.Row, 3) = Now
Application.EnableEvents = True
End If
End Sub

Sub Presun()
Dim Stlp As Integer
If WorksheetFunction.CountIf(Range("B:D"), "<>") > 0 Then
Application.ScreenUpdating = False
With Worksheets("Backup")
Stlp = .Cells(1, Columns.Count).End(xlToLeft).Column + 1
Range("B:D").Cut .Columns(Stlp)
End With
Application.CutCopyMode = False

Application.Goto Cells(1, 2)
'hodí NA DANOU KOLONKU
Application.ScreenUpdating = True

End If
End Sub

Sub Skok()
Application.CutCopyMode = False

Application.Goto Cells(1, 2)
'hodí NA DANOU KOLONKU
Application.ScreenUpdating = True

End Sub

Private Sub Worksheet_Calculate()
'A2

Application.CutCopyMode = False


If Cells(2, 1) = 30 Then Call Presun

Application.ScreenUpdating = True


End Subcitovat
#035712
elninoslov
Nie, nie. Zoberte prosím Váš hotový súbor, eliminujte citlivé data, v žiadnom prípade ale nemažte všetko a už vôbec nie meniť štruktúru, formát alebo usporiadanie. Ponechajte vzorce. Na konkrétnej ukážke (manuálne si vytvorte výsledok) mi tam ukážte ako to vyzerá pre makrom, a ako po makre. Slovný popis pre Váš problém nestačí! Rozhoduje maličkosť, napr. to že poviete, že tam máte vzorce. Čo znamená tam ? Vzorce vypĺňajú hodnoty, alebo ich sčítajú? To určuje rozdielnu metódu riešenia. Akých 15 hodnôt ? Vraveli ste o súčte 30, nie o počte 15/30. Nemôžete si vycucnúť pár riadkov z navrhnutého kódu, a použiť ich inak. Načo je napr. procedúra Skok, keď nieje volaná, ja som to v mojom makre robil inak... Takže to chce ukážkovú prílohu. Opäť je predpokladám čas, ktorý venujem opakovanému čítaniu toho čo ste napísal (aby som uhádol, čo chcete, ale teraz sa mi to nepodarilo), dlhší ako riešenie.
Inak UserName je niekoľko druhov. Application.UserName je meno čo je zapísané v nastavení Excelu. Environ("UserName") je meno prihláseného užívateľa Win.citovat
#035727
avatar
Zde je malý problé, zadám 30 hodnot a musím klikat do jiného pole, což je pro mě problém, aby mi to srávně fungovalo a vypsalo po spočtení 30 na druhý list všechny hodnoty včetně času a uživatele, jak je :)Jinak vše funguje, podle toho co jsem tímto vláknem chtěl získat. Což je naprosto skvělé, ukázka je v příloze :)
Příloha: zip35727_hraa.zip (22kB, staženo 20x)
citovat
#035729
elninoslov
Šmarjá, čo je to zase za prílohu ? Kde je popis, ktoré bunky tam na čo máte ? Do ktorých Vy niečo vpisujete, do ktorých sa počítajú avizované "počítané dáta vzorcom" ? Nikde nevoláte Skok, to som už písal = zbytočná procedúra. Hneď prvý riadok
If Target.Column = 2 And Not Target.Address = "$A$1" Then
Ak je Column=2, tak už nikdy nemôže byť Address="$A$1".
Nefunkčné #ODKAZ vo vzorcoch, nerovnaké vzorce a formáty v stĺpcoch.
Písal ste o súčte vyplnených hodnôt v B:D, a tu vidím texty (ešte k tomu D zbytočný, ten sa môže zapísať naraz, veď predsa ak ide o test, nebudú ho robiť traja...), a navyše ide o Počet a nie Súčet.
Čo je to od A38 dole ?
Akože "musím klikat do jiného pole", tým myslíte ENTER po zápise niečoho do bunky ? To je predsa samozrejmé, tak funguje Excel. Vy chcete odchytávať stlačenie klávesu počas písania v bunke ? To určite nepôjde.
Píšete stále o A1, ale v A1 je slovo "Rychlometr".
A kde je voľba 15/30 otázok?

Čo Vám mám k tomu viac napísať ....citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje