< návrat zpět

MS Excel


Téma: Kopírování hodnot s podmínkou rss

Zaslal/a 31.10.2017 14:46

Ahoj, potřeboval bych poradit s makrem, které by dokázalo nakopírovat data z listu 1 do listu 2 za určité podmínky.
Mám v listu 1 seznam čísel (př. 1-10) - v listu 2 mám čísla např. 1 - 5. Makro by mělo být schopno prohledat seznam na listu 2 a pokud by v něm nějaké číslo z listu 1 nebylo, tak by ho mělo do listu 2 přidat (ale například 12x pod sebe).
(př. v listu 2 není číslo 6 - makro jde a nakopíruje číslo 6 dvanáctkrát pod sebe do první prázdné buňky v sloupci; pak přejde na další číslo - třeba 7 a udělá to samé).
Děkuji za pomoc - doufám, že jsem svůj problém dostatečně vysvětlil.

Zaslat odpověď >

#038206
avatar
1. urobíš si cyklus v liste1 od riadku 1 po posledný riadok.
2. Dáš vyhľadať hodnotu bunky v liste2, napríklad funkcia VLOOKUP
3. Ak na liste2 hodnotu nenájde, tak 12krát skopíruj hodnotu z listu1 do listu2 na posledný voľný riadok.

Teda asi takto.citovat
#038207
avatar

marjankaj napsal/a:

1. urobíš si cyklus v liste1 od riadku 1 po posledný riadok.
2. Dáš vyhľadať hodnotu bunky v liste2, napríklad funkcia VLOOKUP
3. Ak na liste2 hodnotu nenájde, tak 12krát skopíruj hodnotu z listu1 do listu2 na posledný voľný riadok.

Teda asi takto.


----

Super, díky. A mohl bys mi to napsat v kódu? Já tomu VBA zatím skoro vůbec nerozumím (zabrat mi dává i deklarace proměnných :D) ...:/citovat
#038208
avatar
No písal si, že chceš poradiť a nie vypracovať makro. A myslíš, že prílohu si budem vymýšľať sám? Potrebuješ kopírovať jeden stlpec alebo ich je viac?citovat
#038209
avatar

marjankaj napsal/a:

No písal si, že chceš poradiť a nie vypracovať makro. A myslíš, že prílohu si budem vymýšľať sám? Potrebuješ kopírovať jeden stlpec alebo ich je viac?


---

Přílohu jsem nepřidal proto, že nevím, jak se sem dává. Právě proto jsem se svůj dotaz snažil vysvětlit co nejlépe ... prostě mám na listu1 v sloupci A 10 čísel (1 až 10), na listu2 mám ve sloupci A 5 čísel (1 až 5). Když na listu2 není z listu1 nějaké číslo (př.6), tak makro by mělo do listu2 nakopírovat číslo 6 12x pod sebe (do první volné buňky ve sloupci A)a pak kontrolovat další číslo z listu1 (př.7).
A ano je to jen tento jeden sloupec. 1citovat
#038211
Jeza.m
Public Sub makro()
Dim tmpind As Boolean
For r1 = 1 To List1.UsedRange.Rows.Count
tmpind = False

For r2 = 1 To List2.UsedRange.Rows.Count
If List1.Cells(r1, 1) = List2.Cells(r2, 1) Then
tmpind = True
Exit For
End If
Next

If tmpind = False Then
r2 = List2.UsedRange.Rows.Count + 1
List2.Range("A" & List2.UsedRange.Rows.Count + 1 & ":A" & List2.UsedRange.Rows.Count + 1 + 11) = List1.Cells(r1, 1)
End If

Next
End Sub

M@citovat
icon #038215
avatar
@Jeza
ten vnútorný cyklus by som asi nahradil niečím iným, napr. testom prostredníctvom countif, kvôli zrýchleniu behu makra.citovat
#038234
avatar

Jeza.m napsal/a:

Public Sub makro()
Dim tmpind As Boolean
For r1 = 1 To List1.UsedRange.Rows.Count
tmpind = False

For r2 = 1 To List2.UsedRange.Rows.Count
If List1.Cells(r1, 1) = List2.Cells(r2, 1) Then
tmpind = True
Exit For
End If
Next

If tmpind = False Then
r2 = List2.UsedRange.Rows.Count + 1
List2.Range("A" & List2.UsedRange.Rows.Count + 1 & ":A" & List2.UsedRange.Rows.Count + 1 + 11) = List1.Cells(r1, 1)
End If

Next
End Sub
M@


---

Moc díky, ale to makro vůbec nefunguje...Píše chyba Object required ... :( Asi nemůže najít list List2.citovat
#038235
avatar

Valjakov napsal/a:

Moc díky, ale to makro vůbec nefunguje...Píše chyba Object required ... :( Asi nemůže najít list List2.


Ahoj, kod funguje bez problému.Kdyby jsi sem dal .......citovat
#038237
avatar

Maximus napsal/a:

Valjakov napsal/a:Moc díky, ale to makro vůbec nefunguje...Píše chyba Object required ... :( Asi nemůže najít list List2.

Ahoj, kod funguje bez problému.Kdyby jsi sem dal .......


---

Public Sub makro()

Dim tmpind As Boolean

For r1 = 1 To List1.UsedRange.Rows.Count

tmpind = False



For r2 = 1 To List2.UsedRange.Rows.Count - makro se zasekne tady 7

If List1.Cells(r1, 1) = List2.Cells(r2, 1) Then

tmpind = True

Exit For

End If

Next



If tmpind = False Then

r2 = List2.UsedRange.Rows.Count + 1

List2.Range("A" & List2.UsedRange.Rows.Count + 1 & ":A" & List2.UsedRange.Rows.Count + 1 + 11) = List1.Cells(r1, 1)

End If



Next

End Subcitovat
#038238
elninoslov
Šmarjá, veď sem dajte prílohu, aby sa vedelo, ako sa tie Vaše listy volajú, alebo si to List2 zmente na Code názov Vašeho listu. V editore VBA keď kliknete na list, tak je to v okne Properties položka "Name". Alebo to List2... nahraďte za Worksheets("názov listu na jeho ušku")...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