Condividi tramite

estrapolare dati da tabella excel

Anonimo
2022-08-23T09:15:12+00:00

Buongiorno

avrei bisogno di estrapolare dei dati da una tabella excel che ha per ogni riga: codice cliente, nome cliente, varie colonne di dati come fatturato, modalità pagamento ecc...) e nome venditore.

Io dovrei estrapolare da tale foglio tanti fogli excel quanti sono i venditori; in ogni foglio dovranno quindi esserci solamente tutti i dati relativi ai clienti di quel venditore. Ho provato con cerca vert ma essendoci più valori ricorrenti, non funziona.

Potrebbe funzionare una pivot, ma, visto che per ogni riga cliente dovranno esserci anche delle colonne fisse di note da aggiungere manualmente, non riesco a gestirla.

spero di essere stato chiaro e ringrazio anticipatamente

Francesco

Microsoft 365 e Office | Excel | Per il lavoro | 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

Risposta accettata dall'autore della domanda

Gianfranco55 25,190 Punti di reputazione Moderatore volontario
2022-08-23T10:56:04+00:00

ciao

se hai versioni inferiori al 365

si usa INDICE/AGGREGA()

Per il 365 si usa normalmente FILTRO()

se alleghi almeno la struttura lo facciamo.

NB

i fogli li crei tu a mano vero?

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2022-08-23T12:04:32+00:00

    grazie, ho risolto con funzione filtro

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-08-23T12:04:07+00:00

    grazie! ho seguito il consiglio

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-08-23T11:27:07+00:00

    Ciao Francesco,

    Avrei dovuto anche indicare che questo codice richiede che si disponga di Excel 365/Excel 2021. Se tu utilizzi una versione precedente di Excel, pubblicherò un codice alternativo

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2022-08-23T11:17:59+00:00

    Ciao Francesco,

    avrei bisogno di estrapolare dei dati da una tabella excel che ha per ogni riga: codice cliente, nome cliente, varie colonne di dati come fatturato, modalità pagamento ecc...) e nome venditore.

    Io dovrei estrapolare da tale foglio tanti fogli excel quanti sono i venditori; in ogni foglio dovranno quindi esserci solamente tutti i dati relativi ai clienti di quel venditore. Ho provato con cerca vert ma essendoci più valori ricorrenti, non funziona.

    Potrebbe funzionare una pivot, ma, visto che per ogni riga cliente dovranno esserci anche delle colonne fisse di note da aggiungere manualmente, non riesco a gestirla.

    Un modo per raggiungere questo obiettivo sarebbe sfruttare VBA.

    Quindi, a titolo di esempio, prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '========>>

    Option Explicit

    '-------->>

    Public Sub Tester()

    Dim WB As Workbook
    
    Dim SH\_Tabella As Worksheet, SH\_Venditore As Worksheet 
    
    Dim oTabella As ListObject 
    
    Dim Rng\_Tabella As Range 
    
    Dim arrDati As Variant, arrVenditori() As Variant 
    
    Dim sIntestazione As String, sVenditore As String 
    
    Dim i As Long, iColonna As Long, iCtr As Long 
    
    Const sFoglio\_Tabella As String = **"Foglio1"                 '<<=== Modifica** 
    
    Const sTabella As String = **"Tabella1"                           '<<=== Modifica** 
    
    Const sColonna\_Venditore As String = **"E"                    '<<=== Modifica** 
    
    Set WB = ThisWorkbook 
    
    Set SH\_Tabella = WB.Sheets(sFoglio\_Tabella) 
    
    With SH\_Tabella 
    
        Set oTabella = .ListObjects("Tabella1") 
    
        iColonna = .Columns(sColonna\_Venditore).Column 
    
    End With 
    
    Set Rng\_Tabella = oTabella.DataBodyRange 
    
    sIntestazione = Rng\_Tabella.Offset(-1, 0).Cells(1, sColonna\_Venditore) 
    
    arrDati = Rng\_Tabella.Value 
    
    For i = 1 To UBound(arrDati)  ' items\_range.Rows.Count 
    
        If arrDati(i, iColonna) <> "" Then 
    
            sVenditore = arrDati(i, iColonna) 
    
            DeleteSheetWithoutWarning sVenditore 
    
            With WB 
    
                Set SH\_Venditore = .Worksheets.Add(After:=.Sheets(.Sheets.Count)) 
    
            End With 
    
            With SH\_Venditore 
    
                .Name = sVenditore 
    
                .Range("A1").Formula2 = "=" & oTabella.Name & "[#Headers]" 
    
                .Range("A2").Formula2 = "=FILTER(" & sTabella & \_ 
    
                    "," & sTabella & "[" & sIntestazione & "] = """ \_ 
    
                    & sVenditore & """)" 
    
                    .Range("A1").CurrentRegion.EntireColumn.AutoFit 
    
            End With 
    
        End If 
    
        iCtr = iCtr + 1 
    
        ReDim Preserve arrVenditori(1 To iCtr) 
    
        arrVenditori(iCtr) = sVenditore 
    
    Next i 
    
    Call MsgBox(Prompt:="Fatto!" & vbNewLine \_ 
    
        & "I segenti fogli sono ststi creati/aggiornati: " \_ 
    
        & vbNewLine & vbNewLine & Join(arrVenditori, vbNewLine), \_ 
    
        Buttons:=vbInformation, \_ 
    
        Title:="REPORT") 
    

    End Sub

    '-------->>

    Private Sub DeleteSheetWithoutWarning(sheet_name As String)

    Application.DisplayAlerts = False 
    
    On Error Resume Next 
    
    ThisWorkbook.Worksheets(sheet\_name).Delete 
    
    On Error GoTo 0 
    
    Application.DisplayAlerts = True 
    

    End Sub

    '<<========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel.
    • Salva il file con l'estensione xlsm
    • Alt+F8 per aprire la finestra di gestione delle macro
    • Seleziona Tester
    • Esegui

    Questo codice presuppone che la tabella originale sia una tabella di Excel. A seconda delle tue esigenze, il codice potrebbe essere modificato automaticamente per creare fogli aggiuntivi ogni volta che un nuovo fornitore viene aggiunto alla tabella dati originale,

    Potresti scaricare il mio file di prova Francesco20220823.xlsm

    A causa di un problema con l'attuale editor del forum, che inserisce righe vuote indesiderate nel codice copiato dal forum, suggerirei di copiare il mio codice direttamente dal mio file di prova.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento