Condividi:        

CELLA CONTENENTE CODICI

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

CELLA CONTENENTE CODICI

Postdi nicola_na78 » 07/11/17 17:15

Salve a tutti, è possibile fare questo?:
estrarre da ogni rigo della colonna A questa stringa separata dalla ","

es. rigo A1 contiene (081401971, 8140198, 80814020, 38140218, 33080207, 3081046)
nella colonna "B" il seguente risultato:

b1 081401971
b2 8140198
b3 80814020
b4 38140218
b5 33080207
b6 3081046

Grazie, buona serata.

Nicola

office2007
win7
nicola_na78
Utente Senior
 
Post: 186
Iscritto il: 11/06/10 15:26

Sponsor
 

Re: CELLA CONTENENTE CODICI

Postdi Marius44 » 07/11/17 19:01

Ciao
non andando molto d'accordo con le formule io userei la Funzione SPLIT di VBA, con Delimiter la virgola, e poi gli elencherei, con un ciclo da 0 a UBound della funzione, gli argomenti n colonna.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: CELLA CONTENENTE CODICI

Postdi Anthony47 » 07/11/17 23:50

Ma se sapete che Excel consente, tramite il comando Testo-in-colonna, di separare i dati in orizzontale, perche' vi fate strutture dati che invece vanno in verticale?

Cio' detto,
Codice: Seleziona tutto
Function UT2Cippa(ByVal myStr As String, Optional mySep As String = ",") As Variant
'Quando non basta Text to Column
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=109038
'Sintassi:
'   UT2Cippa(StringaDiPartenza [Separatore])
'   Restituisce un array verticale od orizzontale secondo la posizione della formula
'
Dim aOut(), mySplit, pCC As Long, vOr As Boolean
Dim oArr()
'
If Len(Replace(myStr, " ", "", , , vbTextCompare)) < 1 Then UT2Cippa = "???": Exit Function
If Parent.Caller.Rows.Count > 1 Then
    pCC = Parent.Caller.Rows.Count
    vOr = True
Else
    pCC = Parent.Caller.Columns.Count
End If
If (Len(myStr) - Len(Replace(myStr, mySep, "", , , vbTextCompare))) < pCC Then
    myStr = myStr & String(pCC - Len(myStr) - 1 + Len(Replace(myStr, ",", "", , , vbTextCompare)), mySep)
End If
mySplit = Split(Replace(myStr, " ", "", , , vbTextCompare), mySep, , vbTextCompare)
If (UBound(mySplit) + 1) > pCC Then
    mySplit(pCC - 1) = "... (" & (UBound(mySplit) + 1) - pCC & ")"
End If

If vOr Then
    UT2Cippa = Application.WorksheetFunction.Transpose(mySplit)
Else
    UT2Cippa = mySplit
End If
End Function

Va inserita in un Modulo standard del vba e poi usata in una formula matriciale:
-selezionare le celle in cui si vuole scrivere il risultato
-scivere la formula nella barra della formula
-confermare con Contr-Maiusc-Enter

Se le voci da restituire sono superiori alle celle in cui la formula e' stata inserita, allora l'ultimo item sara' sostituito dalla dizione "...(N° di Celle Mancanti). In questo caso:
-selezionare l'area che gia' contiene la formula
-allungare /allargare l'area almeno del numero di celle mancanti
-premere F2 (edit formula) e confermare con Contr-Maiusc-Enter

Se le celle in cui e' stata inserita la formula sono piu' degli item in cui la stringa e' stata frazionata allora le ultime celle saranno vuote

Il separatore di default e' la "virgola", ma puo' essere opzionalmente inserita nel richiamo della funzione.
La formula puo' essere inserita sia in orizzontale che in verticale.

Con l'esempio fornito, allora bisogna inserire in B1:Bx la formula
Codice: Seleziona tutto
=UT2Cippa(A1)

Sarebbe analogamente accettabile la formula =UT2Cippa(A1;",")
Ovviamente ha senso dichiarare il separatore se questo deve essere diverso dalla "virgola"

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


Torna a Applicazioni Office Windows


Topic correlati a "CELLA CONTENENTE CODICI":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti