Prenos VBA - Kako uporabljati Excel VBA Transpose?

Kazalo:

Anonim

Prenos VBA

Kot uporabnik programa Microsoft Excel ste pogosto uporabljali funkcijo prenosa, ki omogoča preklapljanje med vrsticami in stolpci za matriko. Pretvarjanje vrstic v stolpec in stolpcev v vrstice je tisto, kar funkcija excel počne za vas v excelu. Število vrstic postane število stolpcev in obratno. Pomeni, če imate v nizu 2 vrstici in 3 stolpce, se bo po prenosu spremenil v matriko s 3 vrsticami in 2 stolpcema. V tej vadnici bomo podali VBA Transpose, ki vam bo omogočil, da avtomatizirate način prenosa, ki ga uporabljate v Excelu.

Sintaksa prenosa v Excelu VBA

VBA Transpose ima naslednjo skladnjo:

Kje,

Arg1 : To je obvezen argument, ki ni nič drugega kot obseg celic, ki smo jih želeli prenesti (tj. Niz).

Prvi del skladnje ni nič drugega kot izraz, pod katerim je mogoče uporabiti funkcijo Transpose. Na primer, WorksheetFunction.

Kako uporabljati Excel VBA Transpose?

Naučili se bomo uporabljati Transpose z nekaj primeri v Excelu VBA.

Predlogo VBA Transpose Excel lahko prenesete tukaj - VBA Transpose Excel Predloga

Primer # 1 - VBA Prenos enodimenzionalnega niza

Predpostavimo, da delate na podatkih s seznami (ki so enodimenzionalni niz), kot so imena zaposlenih, ki so jih dobili ("Lalit", "Sneha", "Etil", "John", "Cory") in želite ta seznam da jih prilepimo v celico excel. Poglejmo, kako to lahko storimo.

Za uporabo funkcije Transpose v VBA sledite spodnjim korakom.

1. korak: Vstavite nov modul in določite nov podpostop, da ustvarite makro v VBA.

Koda:

 Sub Trans_ex1 () Konec Sub 

2. korak: Določite novo spremenljivko, ki lahko vsebuje enodimenzionalni niz.

Koda:

 Sub Trans_ex1 () Dim Arr1 kot različica konec Sub 

3. korak: S pomočjo funkcije Array določite seznam kot matriko. To je seznam, ki ste ga želeli prilepiti v svoj excel list.

Koda:

 Sub Trans_ex1 () Dim Arr1 kot varianta Arr1 = Array ("Lalit", "Sneha", "Ethyl", "John", "Cory") End Sub 

4. korak: Zdaj uporabite metodo Range.Value, da določite obseg, v katerega ste želeli prilepiti te vrednosti.

Koda:

 Sub Trans_ex1 () Dim Arr1 kot varianta Arr1 = Array (razpon "Lalit", "Sneha", "Ethyl", "John", "Cory") ("A1: A5"). 

5. korak: Uporabite Application.WorksheetFunction.Prestavite na dani niz, da lahko prenesete seznam, opredeljen pod spremenljivko Arr1.

Koda:

 Pod Trans_ex1 () Dim Arr1 kot varianta Arr1 = Array (razpon "Lalit", "Sneha", "Etil", "John", "Cory") ("A1: A5"). Vrednost = Application.WorksheetFunction.Transpose (Arr1 ) Končni pod 

Tu smo opredelili kodo, ki bo sistemu omogočila prenos podatkov v nizu seznamov z imenom Arr1 in nato shranjevanje pod celico A1: A5 na aktivnem delovnem listu.

6. korak: Pritisnite tipko F5 ali Run pod VBE, da zaženete to kodo in si ogledate izhod pod aktivno preglednico excel.

Lahko vidite, da je dani niz seznama prenesen v en sam stolpec in shranjen pod celico A1 do A5.

Primer # 2 - VBA Prenos dvodimenzionalnega niza

Recimo, da imate dvodimenzionalni niz zaposlenih in njihove plače, kot je spodaj:

To je dvodimenzionalni podatek s šestimi vrsticami in dvema stolpcema. Po prenosu bi bil niz z dvema vrsticama in šestimi stolpci.

Za uporabo funkcije Transpose v VBA sledite spodnjim korakom.

1. korak: Določite podproces za shranjevanje makra.

Koda:

 Sub Trans_Ex2 () Konec Sub 

2. korak: Odločite se za območje, v katerega želite prenesti te podatke. To lahko storite s funkcijo Sheets.Range.Value. Shranil bi preneseni niz v celico D1 do I2.

Koda:

 Podatki lista Trans_Ex2 () ("Primer # 2"). Območje ("D1: I2"). Vrednost = Končaj Pod 

Korak 3: Uporabite WorksheetFunction.Transpose, da lahko dodelite matriko A1: B6 za prenos funkcije.

Koda:

 Podatki lista Trans_Ex2 () ("Primer # 2"). Obseg ("D1: I2"). Vrednost = WorksheetFunction.Transpose (konec pod 

4. korak: Določiti moramo argument za funkcijo Transpose. Želeli smo prenesti obseg niza A1: B6. Tako kot argument uporabite Range ("A1: B6").

Koda:

 Podatki lista Trans_Ex2 () ("Primer # 2"). Obseg ("D1: I2"). Vrednost = WorksheetFunction.Transpose (obseg ("A1: B6")) End Sub 

5. korak: Pritisnite tipko F5 ali Run in zaženite to kodo in si oglejte izhod.

Tu se območje matrice A1: B6 prenaša in shrani v obseg matrike D1: I2 s pomočjo funkcije VBA Transpose v excelu.

Primer # 3 - VBA Prenos matrike s posebnim načinom lepljenja

Array lahko tudi prestavimo matriko in prilepimo kot Excel z uporabo Alt + E + S. Pri tej lepljivi metodi lahko uporabimo različne operacije.

Upoštevajmo iste podatke, kot smo jih uporabili v prejšnjem primeru.

Za uporabo funkcije Transpose v VBA sledite spodnjim korakom.

1. korak: Določite podproces za shranjevanje makra.

Koda:

 Sub Trans_Ex3 () Konec Sub 

2. korak: Določite dve novi spremenljivki, eno, ki lahko vsebuje matriko izvornih podatkov (sourceRng) in druge, ki lahko vsebujejo obseg izhodne matrike (targetRng).

Koda:

 Sub Trans_Ex3 () Dim sourceRng Kot Excel.Range Dim taretRng Kot Excel.Range End Sub 

Upoštevajte, da je vrsta teh spremenljivk definirana kot (Excel.Range). Ker smo želeli prenesti podatke, ki so razpon matrike.

Korak 3: Nastavite obseg vira kot A1: B6 (Podatki, ki smo jih želeli prevzeti) s pomočjo funkcije Sheets.Range.

Koda:

 Sub Trans_Ex3 () Dim sourceRng kot Excel.Range Dim taretRng kot Excel.Range Set sourceRng = Sheets ("Primer # 3"). Obseg ("A1: B6") End Sub 

4. korak: Ciljno / ciljno območje nastavite kot D1: I2 (obseg celic, v katerih bo shranjen izhod) s pomočjo funkcije Sheets.Range.

Koda:

 Pod Trans_Ex3 () Dim sourceRng kot Excel.Range Dim taretRng kot Excel.Range Set sourceRng = Sheets ("Primer # 3"). Obseg ("A1: B6") Nastavite targetRng = Sheets ("Primer # 3"). "D1: I2") Konec pod 

5. korak: Zdaj z ukazom Copy (Kopiraj) kopirajte obseg izvornih podatkov z delovnega lista.

Koda:

 Pod Trans_Ex3 () Dim sourceRng kot Excel.Range Dim taretRng kot Excel.Range Set sourceRng = Sheets ("Primer # 3"). Obseg ("A1: B6") Nastavite targetRng = Sheets ("Primer # 3"). "D1: I2") sourceRng.Kopiraj konec Sub 

6. korak: Uporabili bomo funkcijo PasteSpecial na spremenljivki targetRng, da bomo shranili preneseni izhod pod ciljni obseg (D1: I2) na svoj delovni list.

Koda:

 Pod Trans_Ex3 () Dim sourceRng kot Excel.Range Dim taretRng kot Excel.Range Set sourceRng = Sheets ("Primer # 3"). Obseg ("A1: B6") Nastavite targetRng = Sheets ("Primer # 3"). "D1: I2") sourceRng.Kopiraj targetRng.PasteSpecial paste: = xlPasteValues, delovanje: = xlNone, SkipBlanks: = False, Transpose: = True End Sub 
  • Prilepi : Omogoča lepljenje vrednosti v drugačni obliki (na primer Prilepi kot vrednosti, kot formule, kot format itd.). Podobno je kot v Excelu (naredimo Alt + E + S, da imamo različne možnosti prilepi posebne paste). V našem primeru smo ga nastavili, da prilepi kot vrednosti.
  • Delovanje : lahko se izvajajo različne operacije, kot so seštevanje, odštevanje, množenje, deljenje (na enak način kot v Excelu).
  • SkipBlanks : Če je nastavljeno True, ta ukaz omogoča, da preskočite praznine, če obstajajo iz vaših podatkov, medtem ko izvajate različne operacije posebne paste. Nastavili smo ga na Lažno, pomeni, da nismo želeli preskočiti prostih mest.
  • Transpose : Če je nastavljeno True, omogoča prenos podatkov iz matrike podatkov.

7. korak: Zaženite to kodo s pritiskom na tipko F5 ali Run in poglejte izhod.

Stvari, ki jih je treba zapomniti

  • Med delom na dvodimenzionalnem nizu mora biti vedno uporabljen vodoraven (ena vrstica, več stolpcev), da lahko uporabimo metodo prenosa.
  • Ob uporabi VBA Transpose v Excelu je obvezno ugotoviti število vrstic in število stolpcev. Če imamo 3 vrstice in 5 stolpcev, bi bilo po prenosu 5 vrstic s tremi stolpci.
  • Običajno metoda Transpose ne vključuje oblikovanja izvornih podatkov. Če želite uporabiti isto obliko, kot jo imajo izvorni podatki, jo morate ročno nastaviti ali s pomočjo posebne možnosti XlPasteFormat prilepiti obliko izvornih podatkov na ciljne podatke.
  • Število elementov, ki jih funkcija Transpose lahko sprejme v polju, ne sme presegati 5461.
  • Niz ne more vsebovati nobenega elementa / niza z dolžino večjo od 255. Če je vključen, bo povzročil napake, kot so 13, Type Mismatch, 5, Neveljaven klic ali argument postopka, 1004, aplikacija, določena ali napaka, definirana s predmetom .
  • Izvorni niz ne more vsebovati nobene ničelne vrednosti (na primer "Null", "# N / A").

Priporočeni članki

To je vodnik za prenos VBA. Tu smo razpravljali, kako uporabiti Excel VBA Transpose skupaj s praktičnimi primeri in naložljivo predlogo Excela. Ogledate si lahko tudi druge naše predlagane članke -

  1. Vodnik po VBA funkciji
  2. Excel TRANSPOSE Formula
  3. Naučite se primera VBA v Excelu
  4. Odstranite (izbrišite) prazne vrstice v Excelu