Carlo ha una serie di valori interi nella colonna A. Vorrebbe un modo per mostrare i valori dispari nella colonna B e i valori pari nella colonna C. Vuole che i valori siano in celle contigue, senza spazi, e anche in ordine crescente. Carlo si chiede se sia necessaria una macro per elaborare i suoi dati in questo modo.
La risposta breve è che puoi, farlo anche senza ricorrere a una macro. Tuttavia, se devi eseguire spesso questo tipo di elaborazione, potrebbe essere più vantaggioso utilizzare effettivamente una macro.
Per prima cosa, diamo un’occhiata agli approcci non macro. Puoi, se lo desideri, scrivere formule semplici nelle colonne B e C che controllano semplicemente se il valore nella colonna A è pari o dispari e, se è appropriato per la colonna, copia il valore. Ad esempio, potresti avere quanto segue nella colonna B:
=SE(VAL.DISPARI(A1);A1;"")
Nella colonna C, tutto ciò che dovresti fare è sostituire VAL.DISPARI con VAL.PARI. Quando copi queste formule verso il basso, la colonna B contiene solo valori dispari e la colonna C contiene solo valori pari. Il problema, ovviamente, è che il risultato non corrisponde a quello che Carlo sta cercando: vuole i valori in celle contigue (senza spazi vuoti) e li vuole in ordine crescente.
Certo, puoi eseguire ulteriori passaggi per ottenere i risultati desiderati, ad esempio puoi copiare i risultati nelle colonne B e C e incollare i valori (in modo che le formule vengano rimosse) e quindi ordinare i risultati. Questo aggiunge ulteriori passaggi al tuo lavoro.
C’è un modo per ottenere un risultato molto più “pulito” semplicemente usando una formula di matrice. Supponiamo che i tuoi valori siano nelle celle A1:A100. Con le celle B1:B100 selezionate, inserisci quanto segue nella barra della formula:
=SE.ERRORE(PICCOLO(SE.ERRORE(INDICE($A$1:$A$100;PICCOLO(SE(RESTO($A$1:$A$100;2)=1;RIF.RIGA($A$1:$A$100));RIF.RIGA($A1:$A$100)));"");RIF.RIGA());"")
Ricorda che questa è tutta un’unica formula. Poiché è progettata per essere una formula di matrice, terminala immettendo Ctrl+Maiusc+Invio. Il risultato è che hai i valori dispari nella colonna B, in celle contigue, in ordine crescente. Per ottenere i valori pari nella colonna C, prima copia da B1:B100 a C1:C100. Quindi, seleziona l’intervallo C1:C100. Premi F2 per accedere alla modalità di modifica e cambia “=1” al centro della formula in “=0”. Ancora una volta, termina la formula premendo Ctrl + Maiusc + Invio.
Tieni presente che questa formula non funzionerà correttamente se sono presenti spazi vuoti nell’intervallo A1:A100 o se sono presenti valori di testo nell’intervallo. Il motivo per cui gli spazi vuoti non funzionano è perché sono trattati come uno 0 e lo 0 è considerato pari, quindi viene visualizzato nella colonna C. Una formula alternativa per determinare i valori dispari (colonna B) consiste nell’utilizzare la seguente formula di matrice nella cella B1:
=SE.ERRORE(PICCOLO(SE(RESTO($A$1:$A$100;2)>0;$A$1:$A$100;"x");RIF.RIGA());"")
Per affrontare il potenziale problema delle “celle vuote”, è poi possibile utilizzare la seguente formula di matrice nella cella C1:
=SE.ERRORE(PICCOLO(SE((RESTO($A$1:$A$100;2)=0)*NON(VAL.VUOTO($A$1:$A$100));$A$1:$A$100;"x");RIF.RIGA());"")
Copia B1:C1 giù per tutte le celle necessarie per ottenere i risultati.
In precedenza ho detto che potresti trovare più vantaggioso utilizzare una macro per elaborare i tuoi valori. Il motivo è semplice: puoi facilmente eliminare i valori duplicati (se necessario) e puoi ignorare gli spazi vuoti e i valori di testo. Ci sono molti modi in cui una tale macro potrebbe essere sviluppata. Ho scelto un approccio che richiede di selezionare quali celle si desidera elaborare, cancella le due colonne a destra di quelle celle e quindi inserisce i valori dispari e pari in quelle colonne.
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)