Excel - Un macro pentru rearanjarea celulelor

  • Problema
  • Soluţie

Problema

Am nevoie de ajutorul tău pentru a rezolva următoarea problemă.

  • Am câteva fișiere care conțin date de peste 50.000 de înregistrări. Unele înregistrări nu conțin date în coloane conform titlurilor. Fiecare fișier conține mii de înregistrări care necesită ajustarea coloanelor în funcție de titluri. Am încercat-o prin înregistrarea macro, dar lucrul ei numai pe rândul # care a înregistrat în macro. Deci, inutil pentru mine.
  • Am nevoie de o macrocomandă care funcționează numai pe rând, dacă aceasta este coloana Q sau R sau S sau T sau U (oricare dintre acestea conține date, utilizare sau condiție) conținând date numerice sau text. Dacă această condiție devine reală atunci macroul face următoarele:

 Dată din coloana "E" tăiată și lipiți pe coloana "F" Data din coloana "J" tăiați și lipiți pe coloana "H" Data din coloana "L" tăiați și lipiți pe coloana "J" apoi copiați "J" pe "G" Data în coloana "M" tăiați și lipiți pe coloana "W" În coloana "N" tăiați și lipiți pe coloana "X" P "tăiați și lipiți pe coloana" L "Data din coloana" Q "taieți și lipiți pe coloana" O "Dați în coloana" R "tăiați și lipiți pe coloana" N " P“ 
  • Această macrocomandă ar trebui să înceapă să funcționeze din materia primă # 5 și se termină acolo unde se termină înregistrările.
  • Îți voi fi foarte recunoscător pentru acest ajutor.

Soluţie

Încercați acest cod:

 Sub test () Dim lRow As Integer 'Schimbați Q până la litera de coloană cu datele din ultimul rând. lRow = Range ("Q" și Rows.Count) .End (xlUp) .Raz pentru fiecare celulă în interval ("Q5: Q" & lRow) În cazul cell.Value "" Or cell.Offset (0, 1). (0, 4) .Value "" Apoi, celula.Offset (0, 0, -12) .Cut Destinație: = cell.Offset (0, -11) cell.Offset (0, -7) .Cut Destinație: = cell.Offset (0, -9) cell.Offset ) .Cut Destinatie: = cell.Offset (0, -7) cell.Offset (0, -7) .Copia Destinatie: = cell.Offset (0, -10) cell.Offset (0, -4) : = cell.Offset (0, 6) cell.Offset (0, -3) .Cut Destinație: = cell.Offset (0, 7) cell.Offset (0, -2) .Cut Destinație: 0, -1) cell.Offset (0, -1) .Cut Destinație: = cell.Offset (0, -5) cell.Copy Destinație: = cell.Offset (0, -2) cell.Offset ) .Cut Destinatie: = cell.Offset (0, -3) cell.Offset (0, 4) .Cut Destinatie: = cell.Offset (0, -1) cell.ClearContents End If Next End Sub 

Mulțumită lui TrowaD pentru acest sfat.

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi