Conversione di colonne e righe in array in Excel: funzioni WRAPCOLS & WRAPROWS

  • Condividi Questo
Michael Brown

Il modo più rapido per trasformare una colonna o una riga di valori in una matrice bidimensionale è utilizzare la funzione WRAPCOLS o WRAPROWS.

Sin dai primi giorni di vita di Excel, questo programma è stato molto utile per il calcolo e l'analisi dei numeri, ma la manipolazione degli array è sempre stata una sfida. L'introduzione degli array dinamici ha reso l'uso delle formule degli array molto più semplice. Ora Microsoft sta rilasciando una serie di nuove funzioni di array dinamici per manipolare e ridisegnare gli array. Questa esercitazione vi insegnerà come utilizzare due di queste funzioni,WRAPCOLS e WRAPROWS, per trasformare in un attimo una colonna o una riga in una matrice 2D.

    Funzione WRAPCOLS di Excel

    La funzione WRAPCOLS di Excel trasforma una riga o una colonna di valori in una matrice bidimensionale in base al numero specificato di valori per riga.

    La sintassi prevede i seguenti argomenti:

    WRAPCOLS(vettore, wrap_count, [pad_with])

    Dove:

    • vettore (obbligatorio) - la matrice o l'intervallo monodimensionale di origine.
    • numero di giri (obbligatorio) - il numero massimo di valori per colonna.
    • pad_with (facoltativo) - il valore da inserire nell'ultima colonna se non ci sono elementi sufficienti per riempirla. Se omesso, i valori mancanti saranno inseriti con #N/A (valore predefinito).

    Ad esempio, per modificare l'intervallo B5:B24 in una matrice bidimensionale con 5 valori per colonna, la formula è:

    =WRAPROWS(B5:B24, 5)

    La formula viene inserita in una singola cella e si riversa automaticamente in tutte le celle necessarie. Nell'output WRAPCOLS, i valori vengono disposti verticalmente, dall'alto verso il basso, in base alla formula numero di giri Una volta raggiunto il valore, viene avviata una nuova colonna.

    Funzione WRAPROWS di Excel

    La funzione WRAPROWS di Excel converte una riga o una colonna di valori in una matrice bidimensionale in base al numero di valori per riga specificato dall'utente.

    La sintassi è la seguente:

    WRAPROWS(vettore, wrap_count, [pad_with])

    Dove:

    • vettore (obbligatorio) - la matrice o l'intervallo monodimensionale di origine.
    • numero di giri (obbligatorio) - il numero massimo di valori per riga.
    • pad_with (facoltativo) - il valore da aggiungere all'ultima riga se non ci sono elementi sufficienti per riempirla. L'impostazione predefinita è #N/A.

    Ad esempio, per trasformare l'intervallo B5:B24 in una matrice 2D con 5 valori in ogni riga, la formula è:

    =WRAPROWS(B5:B24, 5)

    Si inserisce la formula nella cella in alto a sinistra dell'intervallo di versamento e si popolano automaticamente tutte le altre celle. La funzione WRAPROWS dispone i valori orizzontalmente, da sinistra a destra, in base al valore numero di giri Dopo aver raggiunto il valore, inizia una nuova riga.

    Disponibilità di WRAPCOLS e WRAPROWS

    Entrambe le funzioni sono disponibili solo in Excel per Microsoft 365 (Windows e Mac) e in Excel per il Web.

    Nelle versioni precedenti, è possibile utilizzare formule tradizionali più complesse per eseguire trasformazioni da colonna a matrice e da riga a matrice. Nel prosieguo di questa esercitazione, esamineremo in dettaglio le soluzioni alternative.

    Suggerimento: per eseguire un'operazione inversa, ovvero cambiare una matrice 2D in una singola colonna o riga, utilizzare rispettivamente la funzione TOCOL o TOROW.

    Come convertire una colonna/una riga in un intervallo in Excel - esempi

    Ora che avete imparato a conoscere l'uso di base, analizziamo più da vicino alcuni casi specifici.

    Impostazione del numero massimo di valori per colonna o riga

    A seconda della struttura dei dati originali, è possibile che siano adatti a essere riorganizzati in colonne (WRAPCOLS) o in righe (WRAPROWS). Qualunque sia la funzione utilizzata, si tratta della funzione numero di giri che determina il numero massimo di valori in ogni colonna/riga.

    Ad esempio, per trasformare l'intervallo B4:B23 in una matrice 2D, in modo che ogni colonna abbia un massimo di 10 valori, utilizzate questa formula:

    =WRAPCOLS(B4:B23, 10)

    Per riordinare lo stesso intervallo per riga, in modo che ogni riga abbia un massimo di 4 valori, la formula è:

    =WRAPROWS(B4:B23, 4)

    L'immagine seguente mostra l'aspetto di questo sistema:

    Imbottire i valori mancanti nell'array risultante

    Nel caso in cui i valori non siano sufficienti a riempire tutte le colonne e le righe dell'intervallo risultante, WRAPROWS e WRAPCOLS restituiranno errori #N/A per mantenere la struttura dell'array 2D.

    Per modificare il comportamento predefinito, è possibile fornire un valore personalizzato per il parametro opzionale pad_with argomento.

    Ad esempio, per trasformare l'intervallo B4:B21 in una matrice 2D con un massimo di 5 valori e riempire l'ultima riga con dei trattini se i dati non sono sufficienti per riempirla, utilizzate questa formula:

    =WRAPROWS(B4:B21, 5, "-")

    Per sostituire i valori mancanti con stringhe di lunghezza zero (spazi vuoti), la formula è:

    =WRAPROWS(B4:B21, 5, "")

    Si prega di confrontare i risultati con il comportamento predefinito (formula in D5) dove pad_with è omesso:

    Unire più righe in un intervallo 2D

    Per combinare alcune righe separate in un'unica matrice 2D, si impilano prima le righe orizzontalmente con la funzione HSTACK e poi si avvolgono i valori con WRAPROWS o WRAPCOLS.

    Ad esempio, per unire i valori di 3 righe (B5:J5, B7:G7 e B9:F9) e raggrupparli in colonne, ciascuna contenente 10 valori, la formula è la seguente:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Per combinare i valori di più righe in un intervallo 2D in cui ogni riga contiene 5 valori, la formula assume questa forma:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Combinare più colonne in una matrice 2D

    Per unire più colonne in un intervallo 2D, occorre prima impilarle verticalmente con la funzione VSTACK e poi avvolgere i valori in righe (WRAPROWS) o colonne (WRAPCOLS).

    Ad esempio, per combinare i valori di 3 colonne (B5:J5, B7:G7 e B9:F9) in un intervallo 2D in cui ogni colonna contiene 10 valori, la formula è:

    =WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)

    Per combinare le stesse colonne in un intervallo 2D in cui ogni riga contiene 5 valori, utilizzare questa formula:

    =WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)

    Avvolgere e ordinare l'array

    Se l'intervallo di origine contiene valori in ordine casuale e si desidera che l'output sia ordinato, procedere in questo modo:

    1. Ordinare l'array iniziale nel modo desiderato utilizzando la funzione SORT.
    2. Fornire l'array ordinato a WRAPCOLS o WRAPROWS.

    Ad esempio, per suddividere l'intervallo B4:B23 in righe, con 4 valori in ciascuna, e ordinare l'intervallo risultante da A a Z, costruite una formula come questa:

    =WRAPROWS(SORT(B4:B23), 4)

    Per suddividere lo stesso intervallo in colonne, con 10 valori in ciascuna, e ordinare l'output in ordine alfabetico, la formula è la seguente:

    =WRAPCOLS(SORT(B4:B23), 10)

    I risultati sono i seguenti:

    Suggerimento: per organizzare i valori della matrice risultante in ordine decrescente , impostare il terzo argomento ( ordine_di_ordine ) della funzione SORT a -1.

    Alternativa WRAPCOLS per Excel 365 - 2010

    Nelle vecchie versioni di Excel in cui la funzione WRAPCOLS non è supportata, è possibile creare una formula personalizzata per avvolgere i valori di una matrice monodimensionale in colonne, utilizzando insieme 5 funzioni diverse.

    Alternativa WRAPCOLS per convertire una riga in un intervallo 2D:

    IFERROR(IF(ROW(A1)> n , "", INDICE( intervallo_riga , , RIGA(A1) + (COLONNA(A1)-1)* n )), "")

    Alternativa WRAPCOLS per convertire una colonna in un intervallo 2D:

    IFERROR(IF(ROW(A1)> n , "", INDICE( intervallo_colonne , RIGA(A1) + (COLONNA(A1)-1)* n )), "")

    Dove n è il numero massimo di valori per colonna.

    Nell'immagine seguente, si utilizza la formula seguente per trasformare un intervallo di una riga (D4:J4) in una matrice di tre righe.

    =IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLONNA(A1)-1)*3)), "")

    Questa formula trasforma un intervallo di una colonna (B4:B20) in una matrice di cinque righe:

    =IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLONNA(A1)-1)*5)), "")

    Le soluzioni di cui sopra emulano le analoghe formule WRAPCOLS e producono gli stessi risultati:

    =WRAPCOLS(D4:J4, 3, "")

    e

    =WRAPCOLS(B4:B20, 5, "")

    Tenete presente che, a differenza della funzione WRAPCOLS della matrice dinamica, le formule tradizionali seguono l'approccio una-formula-una-cella. Quindi, la nostra prima formula viene inserita in D8 e copiata 3 righe in basso e 3 colonne a destra. La seconda formula viene inserita in D14 e copiata 5 righe in basso e 4 colonne a destra.

    Come funzionano queste formule

    Nel cuore di entrambe le formule, si utilizza la funzione INDEX che restituisce un valore dall'array fornito in base a un numero di riga e di colonna:

    INDICE(array, riga_num, [colonna_num])

    Poiché si tratta di un array a una riga, si può omettere il parametro numero_riga quindi l'impostazione predefinita è 1. Il trucco è quello di avere col_num calcolato automaticamente per ogni cella in cui viene copiata la formula. Ecco come fare:

    RIGA(A1)+(COLONNA(A1)-1)*3)

    La funzione ROW restituisce il numero di riga del riferimento A1, pari a 1.

    La funzione COLONNA restituisce il numero di colonna del riferimento A1, che è anch'esso 1. Sottraendo 1 si ottiene zero. E moltiplicando 0 per 3 si ottiene 0.

    Quindi, si somma l'1 restituito da ROW e lo 0 restituito da COLUMN e si ottiene 1 come risultato.

    In questo modo, la formula INDEX nella cella in alto a sinistra dell'intervallo di destinazione (D8) subisce questa trasformazione:

    INDICE($D$4:$J$4, ,RIGA(A1) + (COLONNA(A1)-1)*3))

    modifiche a

    INDICE($D$4:$J$4, ,1)

    e restituisce il valore della prima colonna dell'array specificato, che è "Mele" in D4.

    Quando la formula viene copiata nella cella D9, i riferimenti di cella relativi cambiano in base alla posizione relativa di righe e colonne, mentre il riferimento assoluto all'intervallo rimane invariato:

    INDEX($D$4:$J$4,, RIGA(A2)+(COLONNA(A2)-1)*3))

    si trasforma in:

    INDEX($D$4:$J$4,, 2+(1-1)*3))

    diventa:

    INDICE($D$4:$J$4,, 2))

    e restituisce il valore della seconda colonna dell'array specificato, che è "Albicocche" in E4.

    La funzione IF controlla il numero di righe e se è maggiore del numero di righe specificato (3 nel nostro caso) restituisce una stringa vuota (""), altrimenti il risultato della funzione INDEX:

    IF(ROW(A1)>3, "", INDEX(...))

    Infine, la funzione IFERROR risolve un errore #REF! che si verifica quando la formula viene copiata in un numero di celle superiore a quello realmente necessario.

    La seconda formula, che converte una colonna in un intervallo 2D, funziona con la stessa logica, con la differenza che si utilizza la combinazione ROW + COLUMN per calcolare il valore della colonna. numero_riga per INDEX. L'argomento col_num non è necessario in questo caso, poiché c'è solo una colonna nell'array di origine.

    Alternativa WRAPROWS per Excel 365 - 2010

    Per avvolgere i valori di una matrice monodimensionale in righe in Excel 2019 e versioni precedenti, è possibile utilizzare le seguenti alternative alla funzione AVVOLGIMENTI.

    Trasforma una riga in un intervallo 2D:

    IFERROR(IF(COLONNA(A1)> n , "", INDICE( intervallo_riga , , COLONNA(A1)+(RIGA(A1)-1)* n )), "")

    Cambiare una colonna in un intervallo 2D:

    IFERROR(IF(COLONNA(A1)> n , "", INDICE( intervallo_colonne , COLONNA(A1)+(RIGA(A1)-1)* n )), "")

    Dove n è il numero massimo di valori per riga.

    Nel nostro set di dati di esempio, utilizziamo la seguente formula per convertire un intervallo di una riga (D4:J4) in un intervallo di tre colonne. La formula arriva nella cella D8 e poi viene copiata su 3 colonne e 3 righe.

    =IFERROR(IF(COLONNA(A1)>3, "", INDEX($D$4:$J$4, , COLONNA(A1)+(ROW(A1)-1)*3)), "")

    Per rimodellare un intervallo di 1 colonna (B4:B20) in un intervallo di 5 colonne, inserire la formula seguente in D14 e trascinarla su 5 colonne e 4 righe.

    =IFERROR(IF(COLONNA(A1)>5, "", INDEX($B$4:$B$20, COLONNA(A1)+(ROW(A1)-1)*5)), "")

    In Excel 365, gli stessi risultati possono essere ottenuti con le formule WRAPCOLS equivalenti:

    =WRAPROWS(D4:J4, 3, "")

    e

    =WRAPROWS(B4:B20, 5, "")

    Come funzionano queste formule

    In sostanza, queste formule funzionano come nell'esempio precedente. La differenza sta nel modo in cui si determinano i valori di numero_riga e col_num coordinate per la funzione INDEX:

    INDEX($D$4:$J$4,, COLONNA(A1)+(RIGA(A1)-1)*3))

    Per ottenere il numero di colonna della cella in alto a sinistra nell'intervallo di destinazione (D8), si utilizza questa espressione:

    COLONNA(A1)+(RIGA(A1)-1)*3)

    che cambia in:

    1+(1-1)*3

    e dà 1.

    Di conseguenza, la formula seguente restituisce il valore della prima colonna dell'array specificato, che è "Mele":

    INDICE($D$4:$J$4,, 1)

    Finora il risultato è lo stesso dell'esempio precedente, ma vediamo cosa succede in altre celle...

    Nella cella D9, i riferimenti di cella relativi cambiano come segue:

    INDEX($D$4:$J$4,, COLONNA(A2)+(RIGA(A2)-1)*3))

    Quindi, la formula si trasforma in:

    INDICE($D$4:$J$4,, 1+(2-1)*3))

    diventa:

    INDICE($D$4:$J$4,, 4))

    e restituisce il valore della quarta colonna dell'array specificato, che è "Ciliegie" in G4.

    La funzione IF controlla il numero di colonne e, se è maggiore del numero di colonne specificato, restituisce una stringa vuota (""), altrimenti il risultato della funzione INDEX:

    SE(COLONNA(A1)>3, "", INDICE(...))

    Come tocco finale, IFERROR impedisce la comparsa di errori #REF! nelle celle "extra" se si copia la formula in un numero di celle superiore a quello effettivamente necessario.

    La funzione WRAPCOLS o WRAPROWS non funziona

    Se le funzioni "a capo" non sono disponibili in Excel o danno luogo a un errore, è molto probabile che il motivo sia uno dei seguenti.

    #NOME? errore

    In Excel 365, potrebbe verificarsi un errore #NAME? perché il nome della funzione è stato scritto in modo errato. In altre versioni, indica che le funzioni non sono supportate. Come soluzione, è possibile utilizzare l'alternativa WRAPCOLS o WRAPROWS.

    #VALORE! errore

    Si verifica un errore #VALORE se il parametro vettore non è un array monodimensionale.

    Errore #NUM!

    Si verifica un errore #NUM se il parametro numero di giri è 0 o un numero negativo.

    Errore #SPILL!

    Nella maggior parte dei casi, l'errore #SPILL indica che non ci sono abbastanza celle vuote in cui riversare i risultati. Se l'errore persiste, controllate cosa significa #SPILL in Excel e come risolverlo.

    Ecco come utilizzare le funzioni WRAPCOLS e WRAPROWS per convertire un intervallo monodimensionale in un array bidimensionale in Excel. Vi ringrazio per la lettura e spero di vedervi sul nostro blog la prossima settimana!

    Eserciziario da scaricare

    Funzioni WRAPCOLS e WRAPROWS - esempi (file .xlsx)

    Michael Brown è un appassionato di tecnologia dedicato con una passione per la semplificazione di processi complessi utilizzando strumenti software. Con oltre un decennio di esperienza nel settore tecnologico, ha affinato le sue competenze in Microsoft Excel e Outlook, nonché in Fogli Google e Documenti. Il blog di Michael è dedicato alla condivisione delle sue conoscenze e competenze con gli altri, fornendo suggerimenti e tutorial facili da seguire per migliorare la produttività e l'efficienza. Che tu sia un professionista esperto o un principiante, il blog di Michael offre spunti preziosi e consigli pratici per ottenere il massimo da questi strumenti software essenziali.