Ciao,
avrei creato questa macro, provala e fammi sapere
Devono essere prima eliminate righe completamente vuote eliminate
Sub compatta()
Dim cella As Range
Dim riga, riga2 As Integer
Dim colonna, colonna2 As Integer
Dim valore_b1 As String
Dim riga_ind As Integer
Dim valore_cella As String
Dim valore_cella_nasc As String
Dim LastRowIndex As Integer
Application.ScreenUpdating = False
valore_b1 = ActiveSheet.Range("b1").Value
valore_cella_nasc = ActiveSheet.Range("R1").Value
riga_ind = 1
colonna2 = 1
riga2 = 1
ActiveSheet.Range("b1").Value = ""
For riga = 1 To 1000 Step 3
For colonna = 1 To 26
If (ActiveSheet.Cells(riga, colonna).Value <> "" And ActiveSheet.Cells(riga, colonna).Value <> valore_cella_nasc) Then
If ActiveSheet.Cells(riga, colonna).Font.Superscript <> True Then
Sheets("Foglio2").Cells(riga2, colonna2).Value = ActiveSheet.Cells(riga, colonna).Value
Sheets("Foglio2").Cells(riga2 + 1, colonna2).Value = ActiveSheet.Cells(riga + 1, colonna).Value
Sheets("Foglio2").Cells(riga2 + 2, colonna2).Value = ActiveSheet.Cells(riga + 2, colonna).Value
colonna2 = colonna2 + 1
Else
colonna2 = 1
riga2 = riga_ind
Sheets("Foglio2").Cells(riga2, 1).Value = valore_b1 & "." & ActiveSheet.Cells(riga, colonna).Value
riga_ind = riga_ind + 3
colonna2 = colonna2 + 1
End If
End If
Next colonna
Next riga
Application.ScreenUpdating = True
End Sub
---
pensa bene a quello che cerchi, allega un file di esempio, prova il registratore di macro, imparerai e potresti già avere la soluzione