Stránka 1 z 1

Excel: funkce řádky asi, už si nevím rady

Napsal: 03 led 2012 18:19
od Majkie79
Zdravím Vás,

jsem tu nový a myslím, že toto asi bude docela zapeklité, snad se mi podaří zjednodušit a vysvětlit zadání tak, aby to bylo k pochopení.

Na List1 mám tabulku se seznamem aktuálně prodaných produktů, na řádku je ID produktu, název a hlavně počet prodaných kusů dané položky.
Na Listu 2 se mi díky funkci Svyhledat a spárováním dle ID produktu na řádcích vyhledají z další excel tabulky různé atributy daných produktů, které slouží jako zdroj dat pro vytvoření štítků v aplikaci Word (to jen pro představu).

Problém je v tom, že tabulka na Listu2 prozatím neumí reagovat na množství prodaného každého produktu, tzn. že se mi sice vypíšou prodané produkty a potřebné atributy zboží pro tisk štítků, ale jen v poměru 1 artikl(bez ohledu na počet prodaných ks daného artiklu), tj. jeden řádek na listu2, tj. jeden štítek.

Potřeboval bych vymyslet změť funkcí, aby na základě počtu prodanéh produtku uvedeného na Listu1 reagoval List 2 správným počtem duplikací řádku daného artiklu a tedy vytvoření správného podkladu pro tisk štítků.

Zkusím jednoduchý příklad:

List 1
ID produktu ; Název ; Počet prodaných ks
985001 ; Sporťák modrý ; 2
985010 ; SUV Fialový ; 3

Požadovaný stav na List2

ID produktu ; Název ; Věk ; Varování
985001 ; Sporťák modrý ; 3roky+ ; Pozor obsahuje malé části...
985001 ; Sporťák modrý ; 3roky+ ; Pozor obsahuje malé části...
985010 ; SUV Fialový ; 3roky+ ; Pozor obsahuje malé části...
985010 ; SUV Fialový ; 3roky+ ; Pozor obsahuje malé části...
985010 ; SUV Fialový ; 3roky+ ; Pozor obsahuje malé části...

No tak nevím, jestli je to pochopitelné.. budu rád, když se pokusíte najít chvilku zkusit nalézt nějaké řešení... Nebráním se ani VBA řešení.

Předem veliký dík.

Michal

Re: Excel: funkce řádky asi, už si nevím rady

Napsal: 03 led 2012 19:10
od d1amond
Odkud se vezmou věk a varování a jak poznám z tabulky 1, kolik položek se má generovat? Celá tabulka?

Navrhuju, řádky které se budou generovat označit. Buďto výběr, nebo nějakým příznakem (0/1).

Re: Excel: funkce řádky asi, už si nevím rady

Napsal: 03 led 2012 21:26
od Majkie79
ad1: odkud se berou věk a varování? Věk, varování a samozřejmě mnoho dalších atributů se do jednotlivých sloupců tahají z externí databáze informací o produktench pomocí fce SVYHLEDAT - pojítkem je ID produktu.

Ad2 jako poznám z tab. 1 kolik ks (tedy shodných řádků) se má generovat? Do tabulky 1 se mi už z objednávky automaticky dostává informace o počtu zakoupených ks - v příkladě v původním dotazu je uvedeno u produktu 985001 2ks, u produktu 985010 3ks

Jen pro doplnění a úplnost - dnes tabulka 2 funguje bezvadně co do obsahu takto:

ID produktu ; Název ; Věk ; Varování
985001 ; Sporťák modrý ; 3roky+ ; Pozor obsahuje malé části...
985010 ; SUV Fialový ; 3roky+ ; Pozor obsahuje malé části...

nejsem však schopen dosáhnout těch požadovaných duplikací již exsitujích řádků podle počtu prodaných kusů z tabulky 1

Asi to bude velesložitost, což? Dneska ty duplikace dělám ručně, ale při větších objednávkách mě to dost nebaví a tuším, že excel je téměř všehoschopný... ale asi jen ve správných rukou.

Re: Excel: funkce řádky asi, už si nevím rady

Napsal: 04 led 2012 07:42
od cmuch
Ahoj,
pokud si do listu 2 do nějakého sloupce dáš počet ks a tento sloupec definuješ v tomto makru tak by ti to mohlo pomoci.
na řádku Set bunka = Range("C2") dáš sloupec kde máš ty ks.
Potom zpusť makro, musíš mít aktivní list 2, které můžeš vložit do standartního modulu.
Předtím si udělej zálohu kdyby se nepovedlo :D

Kód: Vybrat vše

Sub DuplikovatRadky()
    Dim bunka As Range
    ' 1. bunka s počtem ks
    Set bunka = Range("C2")
    Do While Not IsEmpty(bunka)
        If bunka > 1 Then
            Range(bunka.Offset(1, 0), bunka.Offset(bunka.Value - 1, _
                0)).EntireRow.Insert
            Range(bunka, bunka.Offset(bunka.Value - 1, 1)).EntireRow.FillDown
        End If
        Set bunka = bunka.Offset(bunka.Value, 0)
    Loop
 End Sub

Re: Excel: funkce řádky asi, už si nevím rady

Napsal: 04 led 2012 09:33
od Majkie79
Zdravíčko,

funguje to téměř báječně. Makro proběhne správně a řádky se naprosto podle zadání a zadaného počtu zduplikují na konci operace však vyběhne hláška:

"Run-time Error '13'
Time Mismatch"

Při Debug se žlutě probarví odstaveček:

Range(bunka.Offset(1, 0), bunka.Offset(bunka.Value - 1, _
0)).EntireRow.Insert


Jinak to běhá parádně.. veliký dík.

Re: Excel: funkce řádky asi, už si nevím rady

Napsal: 04 led 2012 16:39
od cmuch
Ahoj,
je to tím, že v nějaké buňce tvého sloupce je něco jiného než číslo (od 2 řádku níž).
Zkus zkontrolovat.

Re: Excel: funkce řádky asi, už si nevím rady

Napsal: 04 led 2012 17:37
od d1amond
A co třeba jednu malou kontrolu, zda jde o číslo? Uživatelé blbnou občas.

Re: Excel: funkce řádky asi, už si nevím rady

Napsal: 04 led 2012 19:18
od cmuch
To je pravda,
Tady je menší náprava.

Kód: Vybrat vše

Sub DuplikovatRadky()
    Dim bunka As Range
    ' 1. bunka s poètem ks
    Set bunka = Range("C2")
    Do While Not IsEmpty(bunka)
      If Not IsNumeric(bunka) Then
        Set bunka = bunka.Offset(1, 0)
      End If
        If bunka > 1 Then
            Range(bunka.Offset(1, 0), bunka.Offset(bunka.Value - 1, _
                0)).EntireRow.Insert
            Range(bunka, bunka.Offset(bunka.Value - 1, 1)).EntireRow.FillDown
        End If
        Set bunka = bunka.Offset(bunka.Value, 0)
    Loop
  MsgBox "Hotovo"
End Sub

Re: Excel: funkce řádky asi, už si nevím rady  Vyřešeno

Napsal: 06 led 2012 12:35
od Majkie79
Paráda, funguje to parádně..

Moc díky za pomoc všem.

M.