Excel - makro za ponovno ureditev celic
- Težava
- Rešitev
Težava
Potrebujem vašo pomoč za rešitev naslednje težave.
- Imam nekaj datotek, ki vsebujejo več kot 50.000 zapisov. Nekateri zapisujejo stolpce ne glede na naslove. Vsaka datoteka, ki vsebuje na tisoče zapisov, ki zahtevajo prilagoditev stolpca glede na naslove. Poskušal sem ga s snemanjem makra, vendar je njegovo delo samo na vrstici #, ki je zabeležena v makru. Torej je neuporabna zame.
- Potrebujem makro, ki deluje samo v vrstici, če je stolpec vrstic Q ali R ali S ali T ali U (katera od njih vsebuje podatke, uporablja 'ali' pogoj), ki vsebuje podatke bodisi numerično ali besedilno. Če se ta pogoj uveljavi, potem makro opravi naslednje:
Datum v stolpcu „E“ izreži in prilepi v stolpec „F“ Datum v stolpcu „J“ izreži in prilepi v stolpec „H“ Datum v stolpcu „L“ izreži in prilepi v stolpec „J“, nato kopiraj „J“ in prilepi na „G“ Datum v stolpcu „M“ izreže in prilepi v stolpec „W“ Datum v stolpcu „N“ razreži in prilepi v stolpec „X“ Datum v stolpcu „O“ izreži in prilepi v stolpec „K“ Datum v stolpcu „ P 'razrezati in prilepiti v stolpcu "L" Datum v stolpcu "Q" razrezati in prilepiti v stolpcu "O" Datum v stolpcu "R" izrezati in prilepiti v stolpcu "N" Datum v stolpcu "U" izrezati in prilepiti na stolpec " P '
- Ta makro mora začeti delovati od surovega # 5 in se konča tam, kjer se zapisi končajo.
- Zelo vam bom hvaležen za to pomoč.
Rešitev
Poskusite to kodo:
Sub test () Dim lRow As Integer 'Spremenite Q v črko stolpca s podatki v zadnji vrstici. lRow = Razpon ("Q" & Rows.Count). End (xlUp) .Row Za vsako celico V območju ("Q5: Q" & lRow) Če je cell.Value "" _ ali cell.Offset (0, 1). Vrednost "" ali celica.Offset (0, 2) .Value "" _ Ali cell.Offset (0, 3) .Value "" _ Ali cell.Offset (0, 4) .Vrednost "" Nato cell.Offset ( 0, -12) .Cut Destination: = cell.Offset (0, -11) cell.Offset (0, -7) .Cut Destination: = cell.Offset (0, -9) cell.Offset (0, -5) ) .Cut Destination: = cell.Offset (0, -7) cell.Offset (0, -7). Kopiraj Cilj: = cell.Offset (0, -10) cell.Offset (0, -4). : = cell.Offset (0, 6) cell.Offset (0, -3) .Cut Destination: = cell.Offset (0, 7) cell.Offset (0, -2) .Cut Destination: = cell.Offset 0, -6) cell.Offset (0, -1) .Cut Destination: = cell.Offset (0, -5) cell.Copy Destination: = cell.Offset (0, -2) cell.Offset (0, 1) Destinacija: = cell.Offset (0, -3) cell.Offset (0, 4) .Cut Destination: = cell.Offset (0, -1) cell.ClearContents End Če Next End Sub
Hvala TrowaD-ju za ta nasvet.