Moderatori: Anthony47, Flash30005
ricky53 ha scritto:Ciao,
premesso che di norma sono contrario alla soluzione chiavi in mano (chi la riceve RISOLVE ma NON impara nulla) e quindi cerco di fare in modo che gli utenti arrivino al risultato passo passo fornendo loro le informazioni per iniziare, procedere ed arrivare alla fine.
Se i hai conoscenze di VBA potresti
1. ordinare per colonna "B" e poi per colonna "A"
2. utilizzare un ciclo for/next che scorra i dati e crea un nuovo foglio per ogni anno (diverso) della colonna "B"
3. rinomina il foglio con l'anno della cella i-esima
4. scrive in questo nuovo foglio tutti i dati dello stesso anno
5. ciclare fino alla fine dei dati del "Foglio1"
Questo è lo schema di base
Quanto sei in grado di fare da solo???
Ciao da Ricky53
Option Explicit
Public RR As Integer, I As Integer, J As Integer, Sh As Worksheet, Nome_Foglio As String
Sub Elabora_Dati_su_più_Fogli()
' ATTENZIONE: la macro cancella tutti i fogli presenti nel file XLS Attivo
' I dati sono nel "Foglio1"
' e partono dalla riga "2" colonne "A" e "B"
Application.ScreenUpdating = False
' Vengono cancellati tutti i fogli presenti nel file tranne "Foglio1"
Application.DisplayAlerts = False
For Each Sh In Worksheets
If UCase(Sh.Name) <> "FOGLIO1" Then
Sh.Delete
I = I + 1
End If
Next Sh
Application.DisplayAlerts = True
Foglio1.Select
' Ordinamento dei dati per colonna "B" e poi per colonna "A" (Ascendente)
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
' Elabora i dati e crea un nuovo foglio con il nome delle celle in colonna "B"
RR = Range("A" & Rows.Count).End(xlUp).Row
Nome_Foglio = ""
J = 2
For I = 2 To RR
If Foglio1.Cells(I, 2) <> Nome_Foglio Then
Sheets.Add
Sheets(1).Name = Foglio1.Cells(I, 2)
Nome_Foglio = Foglio1.Cells(I, 2)
Sheets(Nome_Foglio).Cells(1, 1) = Foglio1.Cells(1, 1)
J = 2
End If
Sheets(Nome_Foglio).Cells(J, 1) = Foglio1.Cells(I, 1)
J = J + 1
Next I
[A1].Select
Application.ScreenUpdating = False
MsgBox "Elaborazione Effettuata: '" & J & "' fogli inseriti"
End Sub
Option Explicit
Public RR As Integer, I As Integer, J As Integer, K As Integer, Sh As Worksheet, Nome_Foglio As String
Sub Elabora_Dati_su_più_Fogli()
' ATTENZIONE: la macro cancella tutti i fogli presenti nel file XLS Attivo
' I dati sono nel "Foglio2" (con nome "BASE DATI")
' e partono dalla riga "2" colonne "A" e "B"
Application.ScreenUpdating = False
' Vengono cancellati tutti i fogli presenti nel file tranne "Foglio1" (con nome "TOTALE") e "Foglio2" (con nome "BASE DATI")
Application.DisplayAlerts = False
For Each Sh In Worksheets
If UCase(Sh.Name) <> "TOTALE" And UCase(Sh.Name) <> "BASE DATI" Then
Sh.Delete
I = I + 1
End If
Next Sh
Application.DisplayAlerts = True
Foglio2.Select
' Ordinamento dei dati per colonna "B" e poi per colonna "A" (Ascendente)
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
' Elabora i dati e crea un nuovo foglio con il nome delle celle in colonna "B"
RR = Range("A" & Rows.Count).End(xlUp).Row
Nome_Foglio = ""
J = 2
K = 0
For I = 2 To RR
If UCase(Foglio2.Cells(I, 2)) <> UCase(Nome_Foglio) Then
' Sheets.Add
Sheets.Add before:=Worksheets(1)
K = K + 1
Sheets(1).Name = Foglio2.Cells(I, 2)
Nome_Foglio = Foglio2.Cells(I, 2)
Sheets(Nome_Foglio).Cells(1, 1) = Foglio2.Cells(1, 1)
J = 2
End If
Sheets(Nome_Foglio).Cells(J, 1) = Foglio2.Cells(I, 1)
J = J + 1
Next I
Foglio2.Select
[A1].Select
Application.ScreenUpdating = False
MsgBox "Elaborazione Effettuata: '" & K & "' fogli inseriti"
End Sub
Torna a Applicazioni Office Windows
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
Inserire add.in nella barra di avvio veloce in excel 2003 Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 4 |
Excel: problema con date se devo unirle a testi Autore: valle1975 |
Forum: Applicazioni Office Windows Risposte: 5 |
Visitano il forum: raimea e 15 ospiti