query sql in excel



  • query sql in excel
    di gia (utente non iscritto) data: 09/03/2014 23:42:27

    Ciao a tutti, ho un problema che non riesco a risolvere. Cerco di spiegarmi di seguito.

    Ho una tabella in excel con 32 colonne di cui le prime 18 sono campi chiave le ultime 14 sono campi numerici.
    Le righe sono variabili in funzione dell'aggiornamento del database.

    Vorrei ricreare con VBA(o altri modi) lo stesso risultato di una query group by su un database.
    L'ulteriore complicazione è che in un altro foglio di lavoro ho una maschera dove l'utente può selezionare da 5 caselle combinate fino a un max di 5 campi che dovrebbero essere raggruppati nella query group by (i campi possono essere min 1 e max 5).

    Quindi in sql sarebbe:
    SELECT campo1, campo2,...fino a max campo5, SUM(campo19) AS campo19, SUM(campo20) AS campo20,....SUM(campo32) AS campo32,
    FROM TABELLA
    GROUP BY campo1, campo2,...fino a max campo5

    Nel caso di selezione di 3 campi, in un nuovo floglio di lavoro dovrei avere una tabella con 3 campi chiave e 14 campi numerici.

    Ho provato a cercare di risolvere in proprio ma senza nessun successo.
    Grazie in anticipo per l'aiuto.






  • di paolomath data: 10/03/2014 09:01:11

    cit. --- Nel caso di selezione di 3 campi, in un nuovo floglio di lavoro dovrei avere una tabella con 3 campi chiave e 14 campi numerici. ---

    Invece cosa ottieni? La struttura SQL sembra corretta, magari non punti ai dati che vorresti... Dove si vede la maschera per la scelta dei campi nella stringa SQL?

    Magari con un file e un pezzo di codice si farebbe prima.

    Bye bye.



  • di Grograman (utente non iscritto) data: 10/03/2014 10:14:33

    Omammamia 18 campi chiave?
    Sicuro di aver organizzato bene i tuoi dati??

    A parte gli scherzi, la mossa migliore è registrarsi mentre crei la query da microsoft sql.
    Poi la puoi editare come fosse una stringa di testo utilizzando le variabili (combobox, listbox, msgbox) e reinserirla nel comando orignale.

    Se l'ho salvato dovrei avere un esempio da qualche parte. Cerco!



  • di Grograman (utente non iscritto) data: 10/03/2014 10:23:46

    Allegato file "Esempio Query.zip"



  • di gia (utente non iscritto) data: 10/03/2014 21:14:05

    Innanzitutto vi ringrazio per il tempo dedicato.

    Allego la tabella oggetto di elaborazione. La tabella ha 5 colonne testo e 14 colonne numeriche.

    Ho cercato di utilizzare la funzione di microsoft query che mi avete suggerito, ma ho dei problemi a comprendere il codice risultante soprattutto nella parte che si riferisce alle colonne dinamiche.

    Infatti le colonne della mia tabella (su cui dovrei effettuare il raggruppamento) non sono statiche ma possono essere selezionate dall'utente (tramite una maschera di selezione in excel) da 1 a 5 per le colonne testo e da 1 a 14 per le colonne.

    Ora il problema è come far accettare alla clausola "select" e "group by" delle colonne variabili. Suppongo che un suggerimento fosse di utilizzare le variabili (combobox, listbox, msgbox), ma dal codice inviato da Grograman non riesco ben a capire come utilizzare parte del codice ai miei fini. Riporto di seguito la parte di codice che mi sembra di dover utilizzare (la connessione di questa parte di codice con la select e la group by sono per me campo ignoto):
    If Cells(1, 1).Value <> 0 Then
    InPuTMese = Cells(1, 1).Value
    Else
    MsgBox "Inserire il mese da esportare nella cella A1", vbInformation, "Informazione mancante"
    Exit Sub

    Adesso esco dal lavoro e vado a studiarci su a casa. Se avete dei suggerimenti sono ben accetti e mi scuso per l'involontaria confusione del post.

    ciao



  • di gia (utente non iscritto) data: 10/03/2014 21:16:37

    allegato file tabella 1.xlsx



  • di gia (utente non iscritto) data: 11/03/2014 09:03:10

    allegato file tabella 1.xlsx