< návrat zpět

MS Excel


Téma: Propisování dat rss

Zaslal/a 10.9.2020 0:14

Ahoj
Potřebuji poradit už to řeším dlouho a bez úspěchu.
Mám v jednom sešitu dva listy a potřebuji aby se mi propisovali data když například napíšu v listu1 do buňky A1 text aby se stejný text objevil sešitu 2 v buňce A1 tomu rozumím (to je základ).
To na co nemůžu vyřešit je to že když se mi tedy zkopíruje text s list1,A1 do listu2,A1 pak změním text v listu2,A1 aby se propsal do Listu1A1
Prostě abych mohl změnit data v jakémkoli listu a tyto data se přepsali do těch ostatních a ještě do stejné adresy tedy na stejný řádek stejná buňka jen jiný list.
Doufám že jsem problém popsal dobře.
Předem děkuji za radu.

Zaslat odpověď >

#047945
avatar
Řekl bych, že bez makra to nepůjde.citovat
#047954
avatar
do modulu listu 1 vlož:

Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("List1").Range(Target.Address) = Sheets("List2").Range(Target.Address) Then Exit Sub
Sheets("List1").Range(Target.Address) = Sheets("List2").Range(Target.Address)
End Sub


a do modulu listu 2 vlož:

Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("List1").Range(Target.Address) = Sheets("List2").Range(Target.Address) Then Exit Sub
Sheets("List1").Range(Target.Address) = Sheets("List2").Range(Target.Address)
End Sub


Upozorňujem, že nie je možné vkladať alebo mazať oblasti, pracuje len po bunkách.
Ďalej nerozvíjam, lebo mi nie je jasná zmysluplnosť takejto potrebycitovat
#047955
avatar
opravujem: pre modul listu 1 má byť:

Private Sub Worksheet_Change(ByVal Target As Range)

If Sheets("List1").Range(Target.Address) = Sheets("List2").Range(Target.Address) Then Exit Sub

Sheets("List2").Range(Target.Address) = Sheets("List1").Range(Target.Address)

End Sub
citovat
#047958
avatar
Moc děkuji
a jak by takový kód vypadal pro celý sloupec?
např. List1 sloupec B a List2 sloupec D
ve VBA jsem úplný nováček.
Předem děkuji za raducitovat
#047960
avatar
Kód pracuje pre celý hárok resp list, je jedno, kam sa zapíšu hodnoty.
Pokiaľ myslíte pre celý stĺpec naraz, tak ako som napísal, kód pracuje len pre zadávanie po bunkách, nie pre hromadné zápisy.
Hromadné zápisy by som riešil kopírovaním oblasti na jednom liste a vlepením do druhého.
Na čo je však dobrý takýto obojstranný prenos? Pokiaľ má ísť o totožné hárky, tak načo je dobré vypĺňanie raz v liste 1 a inokedy v liste 2?citovat
#047963
avatar
Robet13
Má jít o Exel seznam pro sklad list2 a pro kontrolu list1,
Kontrola má mnoho sloupcu a mnoho informací jenom dává v jednom řádku "vyskladnit"
Sklad má jenom 3 sloupce jakmile vidí "vyskladnit" tak připraví a přepne stav na "hotovo" o čemž musí být informována i Kontrola proto ten obousměrný přepis.citovat
#047967
avatar
Takže list 1 nazveme "kontrola" (údaje stĺpca B)a list 2 "sklad" (údaje stĺpca D)
Potom do modulu listu1 (kontrola) vložte:

Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("kontrola").Range("B" & Target.Row) <> Sheets("sklad").Range("D" & Target.Row) And Target.Column = 2 Then _
Sheets("sklad").Range("D" & Target.Row) = Sheets("kontrola").Range(Target.Address)
End Sub


a do modulu listu2 (sklad) vložte:

Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("kontrola").Range("B" & Target.Row) <> Sheets("sklad").Range("D" & Target.Row) And Target.Column = 4 Then _
Sheets("kontrola").Range("B" & Target.Row) = Sheets("sklad").Range(Target.Address)
End Sub
citovat
#047969
avatar
Vyššie uvedený kód ignoruje bunky v iných než dotknutých stĺpcoch príslušných hárkov (listov).citovat
#047971
avatar
Malá rada. Vykašli se na to.

To co vymýšlíš, je amatérsky řešená rozptýlená databáze. Excel a podobná makra nemohou nezajistit konzistenci dat a při větším počtu položek už to ani nezkontroluješ.

Pokud to musí být a položek bude více než desítka, je nezbytné definovat master data, která budou v případě rozdílů ta "správná".
K tomu je nezbytné doplnit nějakou logiku kontrol konzistence, ...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