Excel come Access



  • Excel come Access
    di Paloma (utente non iscritto) data: 07/05/2015 15:00:36

    Buongiorno a tutti,
    pongo una domanda semplice ma che ad oggi non ho saputo dare risposta nè riesco a trovare le parole giuste per cercarlo nel forum. Vorrei che excel si comportasse come Access, per una volta.
    Io ad esempio ho una lista di persone (es. 30) a cui devo associare 20 caratteristiche in base ad un profilo, in access creerei 3 tabelle: una tabella con la lista delle persone e il tipo di profilo associato (es. A e B), una tabella con le caratteristiche del profilo A, una tabella con le caratteristiche del profilo B, farei una query ed ecco la mia lista con 600 record con ciascuna persone e le sue caratteristiche.
    Come posso fare in excel senza una brutale copia e incolla per tutte le 20 persone?

    Grazie a chi mi saprà dare una dritta



  • di alfrimpa data: 07/05/2015 15:39:32

    Ciao Paloma

    Senza un file di esempio è difficile rispondere; allegane quindi uno con qualche decina di record e mostra il risultato che vuoi ottenere.

    Alfredo





  • di Paloma (utente non iscritto) data: 07/05/2015 16:01:47

    Ciao Alfredo, ti ho allegato l'esempio.
    Si tratterebbe semplicemente di moltiplicare i record di una tabella per una lista di utenti, però in excel non mi viene in mente come fare..



  • di alfrimpa data: 09/05/2015 15:56:17

    Buona giornata Paloma.

    Nella speranza tu sia ancora interessato/a al quesito che hai posto allego file nel quale è inserita una macro che fa quanto hai richiesto. Devi andare sul foglio "Risultato" e cliccare sul pulsante "Sviluppa".

    Ritengo doveroso precisare che il codice non è mio ma di GiuseppeMN (mio caro amico ed occasionale frequentatore di questo Forum) cui va il mio (ma ritengo anche il tuo) sentito ringraziamento.

    Alfredo





  • di alfrimpa data: 09/05/2015 15:58:22

    Dimenticavo: la macro in questione è riportata in calce.

    Alfredo
     
    Sub Sviluppa()
    Application.ScreenUpdating = False
    Dim NRec As Long, x As Long, Rec As Long
    Dim Fgl(2) As String
        Sheets("Risultato").Select
            NRec = Range("B" & Rows.Count).End(xlUp).Row
                If NRec < 2 Then NRec = 2
                    Range(Cells(2, 1), Cells(NRec, 3)).ClearContents
                With Worksheets("User_List")
                NRec = .Range("B" & Rows.Count).End(xlUp).Row
                    
                x = 1
                    Do While .Cells(x + 1, 2) <> ""
                        Fgl(1) = .Cells(x + 1, 1)
                        Fgl(2) = .Cells(x + 1, 2)
                    With Worksheets(Fgl(2))
                        NRec = Range("B" & Rows.Count).End(xlUp).Row + 1
                        Rec = .Range("A" & Rows.Count).End(xlUp).Row
                        Range(.Cells(2, 1), .Cells(Rec, 3)).Copy Cells(NRec, 2)
                        Rec = Range("B" & Rows.Count).End(xlUp).Row
                        Range(Cells(NRec, 1), Cells(Rec, 1)) = Fgl(1)
                    End With
                x = x + 1
                    Loop
                End With
        Rec = Range("A" & Rows.Count).End(xlUp).Row
            Range(Cells(3, 1), Cells(3, 3)).Copy
                Range(Cells(3, 1), Cells(Rec, 3)).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                    Application.CutCopyMode = False
    Application.ScreenUpdating = True
        Range("A2").Select
    End Sub
    






  • di Paloma (utente non iscritto) data: 11/05/2015 10:14:27

    Alfredo, grazie mille! la utilizzo subito!