Trasponi dati da colonne in più righe quanti sono i dati in colonne.

Anonimo
2015-10-06T09:59:13+00:00

Buongiorno a tutti, ho bisogno del vostro aiuto per poter disporre in righe continue i dati riportati in colonne al fine di utilizzare il foglio di Excel ottenuto come base dati per altre operazioni lavorative.

I dati sono disposti  in Excel  in questo modo:

COGNOME E NOME            INDIRIZZO                  TELEFONO

CICCIO PICCIO                   V. M. D'zeglio15              casa 1111111

                                                                                   cellulare 222222

                                                                                   ufficio 3333333

                                                                                   fax 4445555

BIANCO VERDE               V. G. MAZZINI,14                casa 1111111

                                                                                   cellulare 222222

                                                                                   ufficio 3333333

                                                                                   fax 4445555

è possibile con codice VBA poter trasporre i dati nel modo sottoriportato per ogni nominativo ?

COGNOME E NOME            INDIRIZZO                  TELEFONO              colonna D               colonna E                     colonna  F

CICCIO PICCIO                   V. M. D'zeglio15              casa 1111111   cellulare 222222        ufficio 3333333                    fax 4445555

BIANCO VERDE               V. G. MAZZINI,14               casa 1111111  cellulare 222222         ufficio 3333333                 fax 4445555

e cosi via per tutti gli altri.

Ringrazio anticipatamente chi mi aiuta in questo.

Ciao Nicola.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

12 risposte

Ordina per: Più utili
  1. Anonimo
    2015-10-07T11:36:49+00:00

    Ciao Norman sto impostando il foglio finale, non appena pronto te lo posto.

    Ho richiesto il vostro aiuto su un altro argomento che ho pubblicato, se potete datemi un vostro consiglio e aiuto.

    A presto Norman e grazie ancora per l'aiuto che mi hai dati fino ad oggi.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-10-07T06:24:45+00:00

    Ciao Nicola,

    A scanso di equivoci, e per accelerare la risoluzione, credo che l'approccio migliore sarebbe di fornirmi con un secondo foglio (Foglio2), che colloca la disposizione desiderata dei dati finali. 

    Per rendere questa richiesta meno onerosa, i dati sul foglio2 potrebbero essere limitate (diciamo) a quelli per Contratto 2.

    In questo modo, sono sicuro che posso fornirti un codice adatto.

    ===

    Regards,

    Norman

    nicola

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-10-06T21:12:09+00:00

    Ciao Nicola,

    Potresti confermare che nel  caso del tuo esempio

    Riportare nella colonna A solo una Matricola  anziché tutte quelle ottenute con il filtro.

    Per esempio:

    112233A

    E non

    112233A

    112233A

    112233A

    112233A

    il risultato dovrebbe essere quattro righe di dati, anche se tre delle righe avranno la colonna A vuota .

    Se così fosse, sono i dati nella colonna BO da ripetere in ogni riga delle nuove colonne? Se non fosse così, che dovrebbe accadere, ad esempio, alle diverse date nella colonna AK?

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-10-06T19:22:18+00:00

    Ciao Norman, grazie come sempre per il tuo gentilissimo e competente intervento.

    Sono molto contento del tuo aiuto, ho bisogno di risolvere questo problema poiché ho un lavoro che devo portare a termine a fine mese e solo con il vostro aiuto sono tranquillo di rispettare i tempi.

    Ho provato il tuo file e va bene.

    Ho questa richiesta da farti Norman, nel caso ( nella realtà il mio foglio consta di 120 colonne circa, sono migliaia di dati che devo inserire)  di molteplici colonne le devo inserire cosi come hai fatto qui: Const sIntstazione As String = "COGNOME E NOME," _

    & "INDIRIZZO," _

    & "TELEFONO," _

    & "TelCell," _

    & "TelUfficio," _

    & "Fax"

    ****oppure possiamo rimediare in un altro modo?

    Norman ti allego il file di esempio a questo link : http://1drv.ms/1Q5t55y

     e ti spiego cosa dovrebbe accadere in realtà al fine di lavorare bene ed una volta solo:

    1) si dovrebbe filtrare la colonna BO che riporta i contratti per es. per 1, 2 o altro parametro, poi successivamente  Riportare nella colonna A solo una Matricola  anziché tutte quelle ottenute con il filtro.

    Per esempio:

    112233A

    E non

    112233A

    112233A

    112233A

    112233A

    **2)**ora come ultimo passaggio riportare in colonne consecutive tutte le righe della colonna TESTO di quella matricola Filtrata cosi come hai fatto nel file che hai postato.

    Spero di essere stato chiaro e comprensibile, se hai bisogno di ulteriori dettagli chiedimeli pure Norman.

    Ti ringrazio per la pazienza che hai con me e per l'aiuto che mi dai.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-10-06T15:50:24+00:00

    Ciao Nicola,

    Buongiorno a tutti, ho bisogno del vostro aiuto per poter disporre in righe continue i dati riportati in colonne al fine di utilizzare il foglio di Excel ottenuto come base dati per altre operazioni lavorative.

    I dati sono disposti  in Excel  in questo modo:

    COGNOME E NOME            INDIRIZZO                  TELEFONO

    CICCIO PICCIO                   V. M. D'zeglio15              casa 1111111

                                                                                       cellulare 222222

                                                                                       ufficio 3333333

                                                                                       fax 4445555

    BIANCO VERDE               V. G. MAZZINI,14                casa 1111111

                                                                                       cellulare 222222

                                                                                       ufficio 3333333

                                                                                       fax 4445555

    è possibile con codice VBA poter trasporre i dati nel modo sottoriportato per ogni nominativo ?

    COGNOME E NOME            INDIRIZZO                  TELEFONO              colonna D               colonna E                     colonna  F

    CICCIO PICCIO                   V. M. D'zeglio15              casa 1111111   cellulare 222222        ufficio 3333333                    fax 4445555

    BIANCO VERDE               V. G. MAZZINI,14               casa 1111111  cellulare 222222         ufficio 3333333                 fax 4445555

    e cosi via per tutti gli altri.

    In un modulo standard, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim srcSH As Worksheet, destSH As Worksheet

        Dim srcRng As Range, destRng As Range

        Dim Rng As Range, rCell As Range

        Dim arrIn As Variant, arrIntestazioni As Variant

        Dim LRow As Long

        Dim i As Long, j As Long, k As Long, iCtr As Long

        Dim NumeroDiCampi As Long                                  ****

        Const NumeroDiColonne As Long = 3                        '<<===== Modifica

        Const sIntstazione As String = "COGNOME E NOME," _

    & "INDIRIZZO," _

    & "TELEFONO," _

    & "TelCell," _

    & "TelUfficio," _

    & "Fax"

        Set WB = ThisWorkbook                                  

        With WB

            Set srcSH = .Sheets("Foglio1")                                '<<===== Modifica

            Set destSH = .Sheets("Foglio2")                              '<<===== Modifica

        End With

        arrIntestazioni = Split(sIntstazione, ",")

        NumeroDiCampi = UBound(arrIntestazioni) + 1

        Set destRng = destSH.Range("A1")

        With destRng.Resize(1, NumeroDiCampi)

            .Value = arrIntestazioni

            With .Font

                .Size = 12

                .Color = vbBlue

                .Bold = True

                .Underline = True

            End With

        End With

        On Error Resume Next

        With srcSH

            LRow = LastRow(srcSH, .Columns("A:A"))

            Set srcRng = .Range("A2:A" & LRow)

            Set Rng = srcRng.SpecialCells(xlCellTypeConstants, xlTextValues)

        End With

        On Error GoTo 0

        If Not Rng Is Nothing Then

            ReDim arrIn(1 To Rng.Cells.Count, 1 To NumeroDiCampi)

            For Each rCell In Rng.Cells

                iCtr = iCtr + 1

                With rCell

                    For j = 1 To NumeroDiColonne

                        arrIn(iCtr, j) = .Cells.Offset(0, j - 1)

                    Next j

                    For k = j To NumeroDiCampi

                        arrIn(iCtr, k) = _

                                  .Cells.Offset(k - NumeroDiColonne, _

                                             NumeroDiColonne - 1).Value

                    Next k

                End With

            Next rCell

        End If

        With destRng.Offset(1).Resize(UBound(arrIn, 1), NumeroDiCampi)

            .Value = arrIn

            .EntireColumn.AutoFit

        End With

        Call MsgBox(Prompt:="Tutto fatto " _

                          & vbNewLine & vbNewLine _

                          & iCtr _

                          & " record trasposti su foglio " _

                          & destSH.Name, _

                    Buttons:=vbInformation, _

                    Title:="REPORT")

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

                            Optional Rng As Range)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

                           after:=Rng.Cells(1), _

                           Lookat:=xlPart, _

                           LookIn:=xlFormulas, _

                           SearchOrder:=xlByRows, _

                           SearchDirection:=xlPrevious, _

                           MatchCase:=False).Row

        On Error GoTo 0

    End Function

    '<<=========

    Potresti scaricare il mio file di prova Nicola20151006.xlsm a:

                        **http://1drv.ms/1OVYgTq**

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento