VBA-täytäntöönpano
Microsoft Excel -käyttäjänä olet ehkä käyttänyt usein transfektiotoimintoa, joka mahdollistaa rivien ja sarakkeiden vaihtamisen taulukkoon. Rivien muuttaminen sarakkeiksi ja sarakkeet riveiksi on se, mitä transponointitoiminto tekee sinulle erinomaisesti. Rivien lukumäärä muuttuu sarakkeiksi ja päinvastoin. Tarkoittaa, jos ryhmässäsi on 2 riviä ja 3 saraketta, siirron jälkeen se muuttuu taulukkoksi, jossa on 3 riviä ja 2 saraketta. Tässä opetusohjelmassa käydään läpi VBA Transponentti, jonka avulla voit automatisoida Excelissä käyttämäsi transponointimenetelmä.
Transponentin syntaksi Excel VBA: ssa
VBA Transponentilla on seuraava syntaksi:
Missä,
Arg1 : Se on vaadittava argumentti, joka on vain joukko solualueita, jotka halusimme siirtää (ts. Taulukko).
Syntaksin ensimmäinen osa ei ole muuta kuin lauseke, jonka alla Transpose-toimintoa voidaan käyttää. Esimerkiksi WorksheetFunction.
Kuinka käyttää Excel VBA -siirtoa?
Opimme käyttämään siirtämistä muutamalla esimerkillä Excel VBA: ssa.
Voit ladata tämän VBA Transpose Excel -mallin täältä - VBA Transpose Excel TemplateEsimerkki 1 - Yksiulotteisen taulukon VBA-siirto
Oletetaan, että työskentelet datan kanssa luetteloilla (joka on yhden ulottuvuuden taulukko), kuten työntekijälle annetut nimet (“Lalit”, “Sneha”, “etyyli”, “John”, “Cory”) ja haluat tämän luettelon liitetään Excel-soluihin. Katsotaan kuinka voimme tehdä tämän.
Noudata alla olevia vaiheita käyttääksesi Transponointia VBA: ssa.
Vaihe 1: Aseta uusi moduuli ja määrittele uusi aliproseduuri makron luomiseksi VBA: lle.
Koodi:
Sub Trans_ex1 () Loppu Sub
Vaihe 2: Määritä uusi muuttuja, joka voi pitää yhden ulotteisen taulukon.
Koodi:
Sub Trans_ex1 () Dim Arr1 Variant End End Sub
Vaihe 3: Määritä luettelo taulukkona Array-toiminnon avulla. Tämä olisi luettelo, jonka haluat liittää Excel-taulukkoosi.
Koodi:
Sub Trans_ex1 () Dim Arr1 Variantina Arr1 = Array ("Lalit", "Sneha", "etyyli", "John", "Cory") End Sub
Vaihe 4: Käytä nyt Range.Value-menetelmää määritelläksesi alue, johon nämä arvot haluat liittää.
Koodi:
Sub Trans_ex1 () Dim Arr1 Variantina Arr1 = Matriisi ("Lalit", "Sneha", "Etyyli", "John", "Cory") -alue ("A1: A5"). Arvo = End Sub
Vaihe 5: Käytä Application.WorksheetFunction.Translate annetussa taulukossa, jotta Arr1-muuttujan alla määritetty luettelo voidaan siirtää.
Koodi:
Sub Trans_ex1 () Dim Arr1 Variantina Arr1 = Matriisi ("Lalit", "Sneha", "Etyyli", "John", "Cory") Alue ("A1: A5"). Arvo = Sovellus.TyöarkkiFunktion.Transponentti (Arr1 ) Loppu alaosaan
Tässä olemme määritellyt koodin, jonka avulla järjestelmä voi siirtää Arr1-nimisen luettelotaulukon tiedot ja tallentaa sen sitten soluun A1: A5 aktiiviselle laskentataulukolle.
Vaihe 6: Paina F5- tai Suorita-painiketta VBE: n alla suorittaaksesi tämän koodin ja nähdä tulos aktiivisessa excel-taulukossa.
Voit nähdä, että luettelon annettu taulukko siirretään yhdeksi sarakkeeksi ja tallennetaan soluun A1 - A5.
Esimerkki 2 - VBA: n siirtäminen kaksiulotteiseen taulukkoon
Oletetaan, että sinulla on kaksiulotteinen ryhmä työntekijöitä ja heidän palkkansa alla:
Tämä on kaksiulotteinen data, jossa on kuusi riviä ja kaksi saraketta. Transponoinnin jälkeen se olisi taulukko, jossa olisi kaksi riviä ja kuusi saraketta.
Noudata alla olevia vaiheita käyttääksesi Transponointia VBA: ssa.
Vaihe 1: Määritä alimenettely makron tallentamiseksi.
Koodi:
Sub Trans_Ex2 () Loppu Sub
Vaihe 2: Päätä alue, johon haluat siirtää nämä tiedot. Se voidaan tehdä Sheets.Range.Value-toiminnolla. Säästän siirretyn taulukon soluun D1 - I2.
Koodi:
Sub Trans_Ex2 () -arkit ("Esimerkki # 2"). Alue ("D1: I2"). Arvo = Loppu Sub
Vaihe 3: Käytä WorksheetFunction.Transpose -sovellusta, jotta pystyt määrittämään taulukon A1: B6 toiminnon siirtämistä varten.
Koodi:
Sub Trans_Ex2 () -alustat ("Esimerkki # 2"). Alue ("D1: I2"). Arvo = WorksheetFunction.Transpose (End Sub
Vaihe 4: Meidän on määritettävä argumentti Transponointitoiminnolle. Halusimme siirtää joukon taulukkoa A1: B6. Käytä siis argumenttia Range (“A1: B6”).
Koodi:
Sub Trans_Ex2 () -arkit ("Esimerkki # 2"). Alue ("D1: I2"). Arvo = WorksheetFunction.Transpose (Range ("A1: B6")) End Sub
Vaihe 5: Paina F5 tai Suorita-painiketta suorittaaksesi tämän koodin ja nähdä tulosteen.
Tässä taulukon alue A1: B6 siirretään ja tallennetaan taulukon alueelle D1: I2 VBA Transpose -toiminnon avulla excelissä.
Esimerkki 3 - VBA-taulukon siirtäminen erityisellä liitäntämenetelmällä
Voimme myös siirtää taulukon ja liittää niin erikoisesti kuin Excelissäkin käyttämällä Alt + E + S. Voimme käyttää erilaisia operaatioita tämän liitä erityismenetelmän avulla.
Tarkastellaan samoja tietoja kuin olemme käyttäneet edellisessä esimerkissä.
Noudata alla olevia vaiheita käyttääksesi Transponointia VBA: ssa.
Vaihe 1: Määritä alimenettely makron tallentamiseksi.
Koodi:
Sub Trans_Ex3 () Loppu Sub
Vaihe 2: Määritä kaksi uutta muuttujaa, joista toinen voi pitää tietolähdematriisia (sourceRng) ja toisia, jotka voivat pitää lähtömatriisialueen (targetRng).
Koodi:
Sub Trans_Ex3 () himmennettävä lähdeRng kuten Excel.Range Dim taretRng kuten Excel.Range End Sub
Huomaa, että näiden muuttujien tyyppi on määritelty (Excel.Range). Koska halusimme siirtää tiedot, jotka ovat taulukkoalue.
Vaihe 3: Aseta lähdealueeksi A1: B6 (tiedot, jotka halusimme siirtää) Sheets.Range-toiminnon avulla.
Koodi:
Sub Trans_Ex3 () himmennetään lähdeRng kuten Excel.Range himmennetään lähteenäRng kuten Excel.Range Aseta lähdeRng = taulukot ("Esimerkki # 3"). Alue ("A1: B6") End sub
Vaihe 4: Aseta tavoite- / kohdealueeksi D1: I2 (solualue, johon lähtö tallennetaan) Sheets.Range-toiminnon avulla.
Koodi:
Sub Trans_Ex3 () himmennettävä lähdeRng kuten Excel.Range himmennettävä taretRng kuten Excel.Range Aseta lähdeRng = taulukot ("Esimerkki # 3"). Alue ("A1: B6") Aseta targetRng = taulukot ("Esimerkki # 3"). "D1: I2") Loppu alaosa
Vaihe 5: Käytä nyt Kopio-komentoa kopioidaksesi lähdetietoalue taulukollesi.
Koodi:
Sub Trans_Ex3 () himmennettävä lähdeRng kuten Excel.Range himmennettävä taretRng kuten Excel.Range Aseta lähdeRng = taulukot ("Esimerkki # 3"). Alue ("A1: B6") Aseta targetRng = taulukot ("Esimerkki # 3"). "D1: I2") sourceRng.Copy End Sub
Vaihe 6: Aiomme käyttää PasteSpecial-toimintoa muuttujalla targetRng tallentaaksesi siirretyn tulosteen tavoitealueelle (D1: I2) taulukkoon.
Koodi:
Sub Trans_Ex3 () himmennettävä lähdeRng kuten Excel.Range himmennettävä taretRng kuten Excel.Range Aseta lähdeRng = taulukot ("Esimerkki # 3"). Alue ("A1: B6") Aseta targetRng = taulukot ("Esimerkki # 3"). "D1: I2") sourceRng.Copy targetRng.PasteSpecial Paste: = xlPasteValues, Käyttö: = xlNone, SkipBlanks: = Väärä, Transponointi: = True End Sub
- Liitä : Mahdollistaa liittää arvot toiseen muotoon (kuten Liitä arvoiksi, Kaavoiksi, Muotoina jne.). Se on samanlainen kuin Excelissä (Alt + E + S: llä on erilaiset liitäntäasetukset). Esimerkissämme olemme asettaneet sen liittämään arvoiksi.
- Käyttö : On olemassa erilaisia toimintoja, kuten summaaminen, vähentäminen, kertoaminen, jakaminen (samalla tavalla kuin voimme tehdä Excelissä).
- SkipBlanks : Jos asetettu True, tämän komennon avulla voidaan ohittaa tietyt tyhjät tiedostot samalla kun tehdään erilaisia liitä erikoistoimenpiteitä. Asetimme sen väärään, mikä tarkoittaa, että emme halunneet jättää ohittamatta aihioita.
- Transponointi : Jos asetettu True, se sallii tietojoukon siirron.
Vaihe 7: Suorita tämä koodi napsauttamalla F5 tai Suorita-painiketta ja katso lähtö.
Muistettavat asiat
- Yhdenulotteisen taulukon parissa työskennellessään sen tulisi aina olla vaakatasossa (yksi rivi, useita sarakkeita), jotta voidaan käyttää transponointimenetelmää.
- On välttämätöntä selvittää rivien lukumäärä ja sarakkeiden lukumäärä, kun käytät VBA Transpose -ohjelmaa Excelissä. Jos meillä on 3 riviä ja 5 saraketta, siirron jälkeen olisi 5 riviä, joissa on kolme saraketta.
- Tavallisesti Transpose-menetelmä ei sisällä lähdetietojen alustamista. Jos haluat käyttää samaa muotoa kuin lähdetieto, sinun on joko asetettava se manuaalisesti tai käyttämällä erityistä liitäntävaihtoehtoa XlPasteFormat, pystyt pitämään lähdetietojen muodon kohdetietoihin.
- Niiden elementtien lukumäärä, joihin transfektiotoiminto voi ryhtyä, ei saa ylittää 5461.
- Taulukko ei voi sisältää mitään alkiota / merkkijonoa, jonka pituus on enemmän kuin 255. Jos se sisältyy, se aiheuttaa virheitä, kuten 13, tyypin yhteensopimattomuus, 5, virheellinen toimenpidekutsu tai argumentti, 1004, sovelluksen määrittelemä tai objektimääritelty virhe .
- Lähdematriisi ei voi sisältää mitään nolla-arvoa (kuten “Null”, “# N / A”).
Suositellut artikkelit
Tämä on opas VBA Transponentiin. Tässä keskustelimme siitä, kuinka käyttää Excel VBA Transponenttia käytännön esimerkkien ja ladattavan excel-mallin kanssa. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -
- Opas VBA-kielitoimintoon
- Excel TRANSPOSE -kaava
- Opi VBA-tapaus Excelissä
- Poista (Poista) tyhjät rivit Excelistä