067. Riordinare tabella

Download PDF

Luigi ci scrive:

ho necessita di allineare i dati della colonna A con quelli contenuti nella colonna B traslando i dati della riga relativa
es
Colonna A Colonna B Colonna C
A C 10
B A 20
C D 30
D

RISULTATO
Colonna A Colonna B Colonna C
A A 20
B
C C 10
D D 30
GRAZIE

Risposta:

Di seguito il codice:

'Inibisco l'aggiornamento dello schermo
'per velocizzare l'esecuzione della macro
'e renderla più elegante
Application.ScreenUpdating = False

Sheet2.Select
Cells.ClearContents

'Copio la colonna A della Tabella Originale
'nella colonna A della Tabella RIORDINATA
Sheet1.Select
Columns("A:A").Select
Selection.Copy
Sheet2.Select
Range("A1").Select
ActiveSheet.Paste

'Copio le intestazioni della Tabella Originale
'nella nella Tabella RIORDINATA
Sheet1.Select
Rows("1:1").Select
Application.CutCopyMode = False
Selection.Copy
Sheet2.Select
Rows("1:1").Select
ActiveSheet.Paste
Application.CutCopyMode = False

'Definisco l'ultima riga della tabella originale
Last_Row = Sheet1.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

'Ciclo in tutte le righe della colonna B della Tabella Originale
For i_Orig = 2 To Last_Row

    'Ciclo in tutte le righe della colonna B della Tabella RIORDINATA
    For i_Modif = 2 To Last_Row

        'quando il valore della colonna B della Tabelle Originale "Sheet1.Cells(i_Orig, 2)"
        'è uguale al valore della colonna B della Tabella RIORDINATA "Sheet2.Cells(i_Modif, 1)"
        'in corrispondenza della relativa riga della Tabella RIORDINATA
        'riporto i dati delle colonne B e C della tabella Originale

        If Sheet1.Cells(i_Orig, 2) = Sheet2.Cells(i_Modif, 1) Then
           Sheet2.Cells(i_Modif, 2) = Sheet1.Cells(i_Orig, 2)
           Sheet2.Cells(i_Modif, 3) = Sheet1.Cells(i_Orig, 3)

        End If

    Next i_Modif

Next i_Orig


'Riablilito l'aggiornamento dello schermo
Application.ScreenUpdating = True

A voi il file
APRI
Riccardo Vincenti

The following two tabs change content below.