Condividi:        

macro excel split

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

macro excel split

Postdi nicola_na78 » 11/06/10 15:47

Ciao a tutti, sono nuovo del forum..... avrei bisogno di una mano a creare una macro che utilizza la funzione split mi spiego meglio:
ho una colonna (D) "% sc." formata da n righe, dove dentro inserisco la percentuale di sconto es. D1 = 35+25+10, D2 = 25+10 ecc....... ciclando tutte le righe della colonna D dovrei fare in modo che il valore della colonna D1 = 35+25+10 mediante la funzione split venga diviso cosi: E1 = 35 , F1 = 25 , G1 = 10 , D2 = 25+10 diventa E2 = 25 F2 = 10 ...... così anche per le altre righe.
Vi ringrazio a tutti anticipatamente.
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Sponsor
 

Re: macro excel split

Postdi maxmula » 11/06/10 16:18

Apri l'editor di VBA ed aggiungi un Modulo al tuo foglio di calcolo.
Nel modulo, incolla questo codice:

Codice: Seleziona tutto
Function SPLITTA(STRINGA As String, SEPARATORE As String, POSIZIONE As Integer)
    ST = Split(STRINGA, SEPARATORE)
   
    If POSIZIONE <= UBound(ST) Then
        RISPOSTA = ST(POSIZIONE)
    Else
        RISPOSTA = ""
    End If
   
    SPLITTA = RISPOSTA

End Function



Poi applica le seguenti formule

In E1: =SPLITTA(D1;"+";0)
In F1: =SPLITTA(D1;"+";1)
In G1: =SPLITTA(D1;"+";2)
In H1: =SPLITTA(D1;"+";3)
In I1: ... e così via

Nota: gli indici della posizione iniziano da 0. Se vuoi puoi fare qualche piccolo aggiustamento in modo che gli si possa passsare un più naturale valore "1" per indicare il primo elemento.

Con un'intelligente modifica, inoltre, puoi anche evitare di modificare manualmente le formule in ogni cella: sposti tutto in giù di una riga, quindi a partire da E1 verso destra metti una serie di numeri 1, 2, 3, 4, ecc.

Le formule di prima ora diventano:

In E2: =SPLITTA(D2;"+";E$1)

Dopodiché copi la formula e la incolli in tutte le altre celle in cui ti serve...

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: macro excel split

Postdi maxmula » 11/06/10 16:20

...ovviamente, anche nel secondo caso, la serie di numeri in riga 1 deve partire da 0 per usare il codice che ho postato... ;)
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: macro excel split

Postdi pietrol » 11/06/10 16:48

Ciao a tutti
posto una soluzione elternativa a quella di maxmula(ciao).
In effetti Nicola io avevo capito volessi una macro e non una funzione, per cui da lanciare con un tasto oppure richiamandola con ALT+F8

Codice: Seleziona tutto
 Sub SplittaCelle()
    Dim sconti() As String, PrimaRiga As Integer, UltimaRiga As Integer
   
    With ActiveSheet
        PrimaRiga = 2   'correggere se sbagliata
        UltimaRiga = .Range("D" & Rows.Count).End(xlUp).Row
       
        For Each Cella In .Range("D" & PrimaRiga & ":D" & UltimaRiga)
            If Cella.Value <> "" Then
                Erase sconti
                sconti() = Split(Cella.Value, "+")
                For m = 0 To UBound(sconti)
                    Cella.Offset(0, m + 1) = CInt(sconti(m))
                Next m
            End If
        Next Cella
    End With
End Sub


ciao
pietrol

Mod Flash30005 - Corretto post secondo quanto riportato dal post successivo dell'autore.
Ho così eliminato il post di correzione per migliorare la leggibilità dell'argomento
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: macro excel split

Postdi Anthony47 » 12/06/10 18:03

E giacche' ci sono gia' 2 proposte e ci piace esagerare, aggiungo anche questa ipotesi:
-selezioni tutta la colonna D
-Menu /Dati /Testo in colonna
-spunti Delimitati, Avanti; nel box Altro segni +, Avanti; nell' area Destinazione segni E1; Fine.
Se il numero di valori in col D e' variabile, magari e' opportuno azzerare precedentemente le colonne E-F-G- etc
In caso che l' operazione sia da eseguire con una certa frequenza, registra una macro mentre fai tutto questo, poi associ la macro a un Pulsante (trovi la forma nella barra degli strumenti Moduli) e potrai ripetere l' operazione al solo click sul pulsante.

Eleganti ambedue le precedenti soluzioni, con l' uso della "rara funzione" (rara in quanto a uso e conoscenza) split; rozzo e grossolano quanto ho proposto io, ma col vantaggio che insegna all' utente come risolvere da soli molte delle esigente quotidiane.

Dimenticavo: "Benvenuto nel forum, nicola_na78"

Ciao a tutti
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro excel split

Postdi maxmula » 13/06/10 12:34

Sarà anche rara ma è estremamente utile!!!
Da quando ne ho scoperto l'esistenza ho realizzato funzioni spettacolari facendone usi "non convenzionali"! :)

Buon proseguimento a tutti,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: macro excel split

Postdi nicola_na78 » 14/06/10 08:08

grazie a tutti per il vostro gentile aiuto..... le soluzioni descritte sono ottime, proprio quelle che cercavo..... grazie ancora.
nicola
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26


Torna a Applicazioni Office Windows


Topic correlati a "macro excel split":


Chi c’è in linea

Visitano il forum: Nessuno e 32 ospiti