Excel- makro na vyhledání a přesunutí

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 07 čer 2010 18:54

Zdravím,
potřeboval bych poradit s makrem. Mám tabulku na import do eshopu, kde jsou čísla artiklů atd. Ale jeden výrobek, má například několik barev a velikostí, ale i ty jsou označeny vlastním číslem:( potřebuju makro, které když najde ve sloupci A řádky, které mají podobná čísla, lišící se pouze poslední cifrou (např. 19543734,19543736 a 19543739). Pak aby první jemu podobné vzal hodnotu z CA a z CB a vložil do CP toho předka, pokud bude další s podobným číslem lišící se tou poslední cifrou tak aby opět vzal CA a CB a vložil do toho prvního ale ne do CP ale do následující tzn. CS atd... Ty obsahy buněk CA a CB by měli být zřetězeny že mezi nimi bude středník. a vždy když najde takto podobného a převede ty dvě data do nového sloupce původního (předka) tak aby smazal obsah buňky A aktuálního.
Doufám, že to není moc komplikovaně napsané. Pokud to bude nutné, klidně sem hodím soubor s čím to je potřeba pracovat :D
Předem moc děkuji za jakékoli rady :blush:

Reklama
navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod navstevnik » 07 čer 2010 22:42

Cetl jsem vic nez jednou, ale vychazi mi pouze, ze neco se ma nekam presunout a pak neco smazat.
Pripojit prilohu s testovacimi daty, tedy stavem pred presunem a na dalsim listu (muze i na tomtez) rucne vytvorenym vysledkem a s popisem co a jak vztahujicim se ke konkretnim bunkam, protoze "podobne cislo, predek,..." je prilis obecne urceni, bylo potreba hned a ne az na vyzvani.

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod navstevnik » 08 čer 2010 23:14

Nize je uvedena procedura (v editoru VBA - Alt+F11 - vlozit do standardniho modulu, pripadne upravit nazvy listu, volat z nabidky Nastroje>Makro>Makra - Alt+F8 - nebo klavesovou zkratkou), snad se mi to z popisu pozadavku podarilo splnit, vysledek je na listu 2:

Kód: Vybrat vše

Option Explicit

Sub FindTranspose()
  Dim SBlk As Range, SCll As Range, SCllVal As Long, SCllLeft As String
  Dim TBlk1 As Range, TBlk2 As Range, TBlk3 As Range, TCll As Range, TOfsR As Long, TOfsC As Integer
  ' cilove bloky
  With Worksheets("sheet2")
    Set TBlk1 = .Range("a1:be1")
    Set TBlk2 = .Range("cy1")
    Set TBlk3 = .Range("dc1")
    Set TCll = .Range("dd1")
  End With
  TOfsR = -1
  With Worksheets("sheet1")
    Set SBlk = .Range("A1:A" & .Cells(Rows.Count, 1).End(xlUp).Row)  ' zdoj blok
  End With
  ' list 1 setridit podle sloupce A:A
  Worksheets("sheet1").Select
  SBlk.Resize(SBlk.Rows.Count, 107).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  ' prohledavat SBlk
  SCllLeft = vbNullString
  For Each SCll In SBlk.Cells
    ' cislo ve sl A:A bez posledni cislice - skupina
    If Left(CStr(SCll.Value), Len(CStr(SCll.Value)) - 1) <> SCllLeft Then
      ' nova skupina
      SCllLeft = Left(CStr(SCll.Value), Len(CStr(SCll.Value)) - 1)
      TOfsR = TOfsR + 1  ' ofset radku na cilovem listu
      ' prenest bloky
      TBlk1.Offset(TOfsR, 0).Value = SCll.Resize(1, 57).Value  ' AAx:BEx
      TBlk2.Offset(TOfsR, 0).Value = SCll.Offset(0, 102).Value  ' CYx
      TBlk3.Offset(TOfsR, 0).Value = SCll.Offset(0, 106).Value  ' DCx
      ' prenest AAx;BEx;CVx -> DDx
      TCll.Offset(TOfsR, 0).Value = SCll.Value & ";" & SCll.Offset(0, 56).Value & ";" & SCll.Offset(0, 99).Value
      TOfsC = 1
    Else
      ' prvek ze skupiny
      ' prenest AAy;BEy;CVy -> DEx (DFx,...)
      TCll.Offset(TOfsR, TOfsC).Value = SCll.Value & ";" & SCll.Offset(0, 56).Value & ";" & SCll.Offset(0, 99).Value
      TOfsC = TOfsC + 1  ' ofset sloupcu
    End If
  Next SCll
  With Worksheets("sheet2")
    .Range(.UsedRange.Address).Columns.AutoFit  ' upravit sirku sloupcu
  End With
  Set SBlk = Nothing
  Set SCll = Nothing
  Set TBlk1 = Nothing
  Set TBlk2 = Nothing
  Set TBlk3 = Nothing
  Set TCll = Nothing
End Sub


Protoze testovaci data obsahuji pouze vyrobky jedne skupiny 2642102Y, otestuj na vetsim poctu skupin

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 08 čer 2010 23:28

Mockrát děkuju, jdu to zkusit. přikládám jinou přílohu, která doufám bude více jasná a hlavně bude více pochopitelná. Hned to zkusím a každopádně hrozně moc děkuji!
Přílohy
ukazka.xlsx
(10.64 KiB) Staženo 216 x

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 08 čer 2010 23:45

super! Funguje to! Sice to je tak že to bere ty čísla artiklů a až teď jsem si uvědomil, že záleží na shodnosti těch popisů, ale to vůbec nevadí, takhle je to super. Mockrát děkuju.

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod navstevnik » 09 čer 2010 00:04

Mam tomu rozumet tak, ze i kdyz procedura odpovida ukazce, kterou jsi odstranil, je to OK? Ta nova ukazka by totiz vyzadovala napsat uplne jinou proceduru.

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 09 čer 2010 07:35

No to ano. Ale je to vlastně výsledkem to samé. Tahle metoda, je rychlejší a sice můžou nastat situace kdy to nějaký výrobek nesrazí do toho jednoho, ale to nevadí to. takových situacích nastane zanedbatelne mnozstvi. Takhle to jde taky a vyhoda je rychlost oproti tomu druhemu. Jeste jednou diky moc

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 17 čer 2010 09:37

Mohl by mi někdo ještě pomoci? Ten předešlej kód upravit tak, aby se v podmínce vytvoření té skupiny nebralo v potaz hodnota sloupce A bez poslední cifry, ale to, jestli jsou shodné hodnoty (v tomto případě texty) ve sloupci F?

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod navstevnik » 17 čer 2010 13:21

Jak jsem uvedl, uvedena procedura byla napsana pro ukazku, kterou jsi z dotazu odstranil. Takze pozadujes upravit tuto proceduru nebo mas na mysli napsat novou proceduru pro ukazku z 8.6.10?

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 21 čer 2010 12:12

Vložím úplně novou ukázku jak to má být, budou asi trochu změny, ale nejdřív odzkouším jednu věc a pak bych sem hodil přímo tu ukázku... A ještě jednou moc díky za pomoc

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 01 črc 2010 12:53

Tak už konečně vím jak to musí být. Mělo by to fungovat stejně jako je makro výše napsané, ale porovnávat by se nemělo podle buněk s číslem artiklu A ale podle toho zda jsou shodné popisy, to znamená buňky ve sloupci F, a podle shodnosti tvořit ty skupiny. A další změna je v tom, že kromě přesunu těch hodnot ze sloupce A by se měli zkopírovat také za text ve sloupci E a oddělit čárkou.

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod navstevnik » 01 črc 2010 13:08

Predmetna procedura byla napsana pro v mezicase odstraneny soubor ukazka.xlsx. V ukazce z 8.6. jsou vsak zaznamy slucovany do jinych sloupcu.
Takze se jednoznacne rozhodni, co potrebujes: upravit proceduru pro puvodni ukazku nebo napsat novou proceduru pro novou ukazku.


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Přesunutí sms do nového android telefonu
    od Petr98 » 21 říj 2023 16:10 » v Mobily, tablety a jiná přenosná zařízení
    4
    1962
    od meda2016 Zobrazit poslední příspěvek
    21 říj 2023 21:45
  • WIN 10 přesunutí složek users na jiný disk
    od Richard_ZZR » 10 úno 2024 11:30 » v Windows 11, 10, 8...
    3
    906
    od petr22 Zobrazit poslední příspěvek
    10 úno 2024 13:26
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1234
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Excel a OneDrive
    od sginfo » 11 zář 2023 15:28 » v Kancelářské balíky
    16
    6711
    od mirekol Zobrazit poslední příspěvek
    20 říj 2023 08:31
  • Excel - vlastní formát Příloha(y)
    od Story-Long » 11 srp 2023 14:50 » v Kancelářské balíky
    3
    2220
    od Story-Long Zobrazit poslední příspěvek
    14 srp 2023 10:11

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů