Condividi:        

Riposizioamento riga in cella excel

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

Riposizioamento riga in cella excel

Postdi AleRosa » 23/12/17 16:04

Buonasera a tutti.
Mi chiedevo se ci fosse un modo per "ricollocare" il testo di una cella excel.
Mi spiego. Attualmente la mia cella contiene:

S2: Mi chiamo Pinco
S3: Il mio nome è Veronica e vengo da Bari
S4: Chissà se un giorno ci ritroveremo
S1: Vorrei tanto un gelato
S5: in questa città fa moltissimo freddo rispetto alla Sicilia

Vorrei che questa cella diventasse:
S1: Vorrei tanto un gelato
S2: Mi chiamo Pinco
S3: Il mio nome è Veronica e vengo da Bari
S4: Chissà se un giorno ci ritroveremo
S5: in questa città fa moltissimo freddo rispetto alla Sicilia

Dove praticamente S1 viene spostato dalla 4a alla 1a posizione. C'è una macro o qualsiasi altra cosa da poter applicare a tutte le celle? (in cui, ovviamente, i testi di S1, S2 ecc. variano).
Grazie!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Sponsor
 

Re: Riposizioamento riga in cella excel

Postdi Anthony47 » 23/12/17 20:13

Per questo ci vorra' una macro; ad esempio:
Codice: Seleziona tutto
Sub AleS1()
Dim I As Long, freeCol As String, S1Pos As Long, lfPos As Long
'
freeCol = "B"           '<<< Una colonna LIBERA per i risultati
For I = 2 To Cells(Rows.Count, "A").End(xlUp).Row
    If Left(Cells(I, "A"), 1) = Chr(10) Then
        Cells(I, "A") = Mid(Cells(I, "A"), 2)
    End If
    S1Pos = 0
    S1Pos = InStr(1, Cells(I, "A").Value, Chr(10) & "S1:", vbTextCompare)
    If S1Pos > 0 Then
        lfPos = InStr(S1Pos + 1, Cells(I, "A").Value & Chr(10), Chr(10), vbTextCompare)
        mys1 = Mid(Cells(I, "A"), S1Pos + 1, lfPos - S1Pos + 0)
'        mysplit = Split(Cells(I, "A").Value, Chr(10), , vbTextCompare)
        myc = mys1 & Replace(Cells(I, "A").Value & Chr(10), mys1, "", , , vbTextCompare)
        Cells(I, freeCol) = Left(myc, Len(myc) - 1)
    Else
        Cells(I, freeCol) = Cells(I, "A")
    End If
Next I
MsgBox ("Completato...")
End Sub

Il codice va messo in un Modulo standard del vba, es Modulo 1.
La riga marcata <<< va personalizzata indicando una colonna libera in cui sara' creata la nuova sequenza di valori.

La macro contiene anche le istruzioni per rimuovere l'eventuale "testo a capo" iniziale.

Fai sapere, ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Riposizioamento riga in cella excel

Postdi Zer0Kelvin » 24/12/17 12:38

Ciao.
(in cui, ovviamente, i testi di S1, S2 ecc. variano).
Variano come?
Se dai informazioni vaghe riceverai, probabilmente, soluzioni approssimative.
La sottostringa che indichi come S1, S2 ecc. termina sempre con una sola cifra (es da 1 a 9)?
Comunque, supponendo che sia così, che i dati siano in Col A e cominciano dalla riga 1 e che la colonna B sia libera, puoi provare questa
Codice: Seleziona tutto
Sub Test_001()
Dim Cl As Collection
Dim SS As Variant
Dim Cella As Range
Dim C As Long
For Each Cella In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Cells
    SS = Split(Cella, Chr(10))
    Set Cl = New Collection
    For C = LBound(SS) To UBound(SS)
        If SS(C) <> "" Then
            Cl.Add SS(C), "Cl" & Right(Split(SS(C), ":")(0), 1)
        End If
    Next C
    Cella.Offset(0, 1) = ""
    On Error Resume Next
    For C = 1 To Cl.Count
        Cella.Offset(0, 1) = Cella.Offset(0, 1) & Cl("Cl" & C) & Chr(10)
    Next C
    On Error GoTo 0
    Set Cl = Nothing
Next Cella
End Sub
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 388
Iscritto il: 08/04/12 11:23


Torna a Applicazioni Office Windows


Topic correlati a "Riposizioamento riga in cella excel":


Chi c’è in linea

Visitano il forum: Ricky0185 e 38 ospiti