Trasposizione VBA - Come utilizzare Excel VBA Transpose?

Sommario:

Anonim

Trasposizione VBA

Essendo un utente di Microsoft Excel, potresti aver usato spesso la funzione di trasposizione che consente lo scambio tra righe e colonne per un array. La conversione di righe in colonne e colonne in righe è ciò che una funzione di trasposizione fa per te in Excel. Il numero di righe diventa un numero di colonne e viceversa. Significa che se hai 2 righe e 3 colonne nel tuo array, dopo averlo trasposto cambierà in un array con 3 righe e 2 colonne. In questo tutorial, passeremo a VBA Transpose che ti consentirà di automatizzare il metodo di trasposizione da utilizzare in Excel.

Sintassi di Transpose in Excel VBA

VBA Transpose ha la sintassi seguente:

Dove,

Arg1 : È un argomento richiesto che non è altro che un intervallo di celle che volevamo trasporre (cioè array).

La prima parte della sintassi non è altro che un'espressione in base alla quale è possibile utilizzare la funzione Transpose. Ad esempio, WorksheetFunction.

Come utilizzare Excel VBA Transpose?

Impareremo come usare un Transpose con alcuni esempi in Excel VBA.

Puoi scaricare questo modello di trasposizione Excel VBA qui - Modello di trasposizione Excel VBA qui

Esempio n. 1 - Trasposizione VBA dell'array monodimensionale

Supponiamo che tu stia lavorando su un dato con elenchi (che è una matrice unidimensionale) come i nomi di un dipendente dati ("Lalit", "Sneha", "Ethyl", "John", "Cory") e desideri questo elenco per essere incollato in modo eccellente. Vediamo come possiamo farlo.

Seguire i passaggi seguenti per utilizzare Transpose in VBA.

Passaggio 1: inserire un nuovo modulo e definire una nuova procedura secondaria per creare una macro in VBA.

Codice:

 Sub Trans_ex1 () End Sub 

Passaggio 2: definire una nuova variabile che può contenere l'array monodimensionale.

Codice:

 Sub Trans_ex1 () Dim Arr1 come variante fine sub 

Passaggio 3: definire l'elenco come un array usando la funzione Array. Questa sarebbe la lista che volevi incollare nel tuo foglio Excel.

Codice:

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

Passaggio 4: ora utilizza il metodo Range.Value per definire l'intervallo in cui incollare questi valori.

Codice:

 Sub Trans_ex1 () Dim Arr1 come variante Arr1 = Array ("Lalit", "Sneha", "Ethyl", "John", "Cory") Range ("A1: A5"). Valore = End Sub 

Passaggio 5: utilizzare Application.WorksheetFunction.Transpose sull'array specificato per poter trasporre l'elenco definito nella variabile Arr1.

Codice:

 Trans_ex1 secondario () Dim Arr1 come variante Arr1 = array ("Lalit", "Sneha", "Ethyl", "John", "Cory") Range ("A1: A5"). Valore = Application.WorksheetFunction.Transpose (Arr1 ) End Sub 

Qui, abbiamo definito un codice che consentirà al sistema di trasporre i dati nella matrice elenco denominata Arr1 e quindi memorizzarli nella cella A1: A5 sul foglio di lavoro attivo.

Passaggio 6: Premi F5 o il pulsante Esegui in VBE per eseguire questo codice e vedere l'output nel foglio di calcolo Excel attivo.

Si può vedere che l'array specificato dell'elenco viene trasposto in una singola colonna e memorizzato nella cella da A1 a A5.

Esempio n. 2 - Trasposizione VBA di array bidimensionali

Supponiamo di avere una schiera bidimensionale di dipendenti e i loro salari come di seguito:

Questo è un dato bidimensionale con sei righe e due colonne. Dopo la trasposizione, sarebbe un array con due righe e sei colonne.

Seguire i passaggi seguenti per utilizzare Transpose in VBA.

Passaggio 1: definire una procedura secondaria per memorizzare una macro.

Codice:

 Sottotitoli Trans_Ex2 () End Sub 

Passaggio 2: decidere l'intervallo in cui si desidera trasporre questi dati. Può essere fatto usando la funzione Sheets.Range.Value. Vorrei salvare l'array trasposto nella cella D1 in I2.

Codice:

 Sottotitoli Trans_Ex2 () ("Esempio n. 2"). Range ("D1: I2"). Valore = End Sub 

Passaggio 3: utilizzare WorksheetFunction.Transpose per poter assegnare un array A1: B6 per trasporre la funzione.

Codice:

 Sottotitoli Trans_Ex2 () ("Esempio # 2"). Intervallo ("D1: I2"). Valore = WorksheetFunction.Transpose (End Sub 

Passaggio 4: È necessario specificare l'argomento per la funzione Transpose. Volevamo trasporre una gamma di array A1: B6. Pertanto, utilizzare Range ("A1: B6") come argomento.

Codice:

 Sottotitoli Trans_Ex2 () ("Esempio n. 2"). Range ("D1: I2"). Valore = WorksheetFunction.Transpose (Range ("A1: B6")) End Sub 

Passaggio 5: Premi F5 o il pulsante Esegui per eseguire questo codice e vedere l'output.

Qui, l'intervallo di array A1: B6 viene trasposto e memorizzato in un intervallo di array D1: I2 con l'aiuto della funzione VBA Transpose in Excel.

Esempio n. 3 - Trasposizione VBA di un array con il metodo Incolla speciale

Possiamo anche trasporre l'array e incollare come speciale così come in Excel usando Alt + E + S. Con questo metodo speciale incolla possiamo usare diverse operazioni.

Consideriamo gli stessi dati che abbiamo usato nell'esempio precedente.

Seguire i passaggi seguenti per utilizzare Transpose in VBA.

Passaggio 1: definire una procedura secondaria per memorizzare la macro.

Codice:

 Sottotitoli Trans_Ex3 () End Sub 

Passaggio 2: definire due nuove variabili, una che può contenere l'array dell'origine dati (sourceRng) e altre che possono contenere l'intervallo dell'array di output (targetRng).

Codice:

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

Si noti che il tipo di queste variabili è definito come (Excel.Range). Perché volevamo trasporre i dati che sono un intervallo di array.

Passaggio 3: impostare l'intervallo di origine su A1: B6 (i dati di cui volevamo trasporre) utilizzando la funzione Sheets.Range.

Codice:

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

Passaggio 4: impostare l'intervallo di destinazione / destinazione come D1: I2 (intervallo di celle in cui verrà memorizzato l'output) utilizzando la funzione Fogli.

Codice:

 Sub Trans_Ex3 () Dim sourceRng As Excel.Range Dim taretRng As Excel.Range Imposta sourceRng = Fogli ("Esempio # 3"). Range ("A1: B6") Imposta targetRng = Fogli ("Esempio # 3"). Range ( "D1: I2") End Sub 

Passaggio 5: ora, utilizzare il comando Copia per copiare l'intervallo di dati di origine dal foglio di lavoro.

Codice:

 Sub Trans_Ex3 () Dim sourceRng As Excel.Range Dim taretRng As Excel.Range Imposta sourceRng = Fogli ("Esempio # 3"). Range ("A1: B6") Imposta targetRng = Fogli ("Esempio # 3"). Range ( "D1: I2") sourceRng.Copy End Sub 

Passaggio 6: useremo la funzione PasteSpecial sulla variabile targetRng per salvare l'output trasposto sotto l'intervallo target (D1: I2) nel foglio di lavoro.

Codice:

 Sub Trans_Ex3 () Dim sourceRng As Excel.Range Dim taretRng As Excel.Range Imposta sourceRng = Fogli ("Esempio # 3"). Range ("A1: B6") Imposta targetRng = Fogli ("Esempio # 3"). Range ( "D1: I2") sourceRng.Copy targetRng.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks: = False, Transpose: = True End Sub 
  • Incolla : consente di incollare i valori in un formato diverso (come Incolla come valori, Formule, Come formato, ecc.). È simile a quello di Excel (facciamo Alt + E + S per avere diverse opzioni speciali di incolla). Nel nostro esempio, l'abbiamo impostato per incollare come valori.
  • Operazione : Esistono diverse operazioni che possono essere eseguite come addizione, sottrazione, moltiplicazione, divisione (nello stesso modo in cui possiamo fare in Excel).
  • SkipBlanks : se impostato su True, questo comando consente di saltare gli eventuali spazi vuoti dai dati mentre si eseguono diverse operazioni speciali di incolla. Lo abbiamo impostato su False, significa che volevamo non saltare gli spazi vuoti.
  • Trasposizione : se impostato su True, consente di recepire una matrice di dati.

Passaggio 7: eseguire questo codice premendo F5 o il pulsante Esegui e vedere l'output.

Cose da ricordare

  • Mentre si lavora su un array monodimensionale, dovrebbe essere sempre orizzontale (una riga, più colonne) per applicare il metodo di trasposizione.
  • È obbligatorio scoprire il numero di righe e il numero di colonne durante l'utilizzo di VBA Transpose in Excel. Se abbiamo 3 righe e 5 colonne, dopo la trasposizione ci sarebbero 5 righe con tre colonne.
  • Normalmente, il metodo Transpose non include la formattazione dei dati di origine. Se si desidera applicare lo stesso formato di quello dei dati di origine, è necessario impostarlo manualmente o utilizzare l'opzione speciale incolla XlPasteFormat per conservare il formato dei dati di origine sui dati di destinazione.
  • Il numero di elementi che la funzione Transpose può contenere in un array non può superare 5461.
  • Un array non può contenere alcun elemento / stringa di lunghezza superiore a 255. Se incluso, causerà errori come 13, Tipo non corrispondente, 5, Chiamata o argomento della procedura non valida, 1004, errore definito dall'applicazione o definito dall'oggetto .
  • L'array di origine non può contenere alcun valore nullo (come "Null", "# N / A").

Articoli consigliati

Questa è stata una guida a VBA Transpose. Qui abbiamo discusso su come utilizzare Excel VBA Transpose insieme a esempi pratici e template Excel scaricabili. Puoi anche consultare i nostri altri articoli suggeriti:

  1. Guida alla funzione stringa VBA
  2. Excel TRANSPOSE Formula
  3. Scopri il caso VBA in Excel
  4. Rimuovi (Elimina) Righe vuote in Excel