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.

Prejšnji Članek Naslednji Članek

Top Nasveti