Condividi:        

[EXCEL 2003] Numero di variabili.... variabile

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[EXCEL 2003] Numero di variabili.... variabile

Postdi manacla » 13/04/11 22:56

Ciao a tutti e scusate il gioco di parole.

Avrei la seguente domanda da porvi:

Ho un certo numero di colonne in un foglio che contiene dati.
Il problema è che le colonne non sono mai lo stesso numero, potrei averne 4 e la volta dopo 5 etc.
Io avrei bisogno di creare una variabile per ogni colonna che contenga il numero di dati contenuto nella colonna stessa, praticamente il numero di righe non vuote (anch'esso differente di volta in volta).
Queste variabili le dovrò poi usare in contemporanea per creare vari cicli in cascata.

E' possibile, quindi, far creare a VBA le variabili (una per colonna) in modo autonomo?
Se si, come si fa?
Se no, conoscete altri metodi?

Spero di essere stato abbastanza chiaro.
Avrei voluto inserire un file da scaricare come esempio ma non mi è ancora permesso.
Vi ringrazio anticipatamente!!

Ciao
Cla
manacla
Newbie
 
Post: 9
Iscritto il: 13/04/11 22:35

Sponsor
 

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi Avatar3 » 14/04/11 00:00

Chiaro in parte e mi sembra possibile realizzare qualcosa di adatto alle tue esigenze
senza un file esempio la richiesta mi sembra, invece, vaga

quiandi crea almeno qualche altro post oppure escogita un sistema per inviare un link per scaricare il tuo file
(che dovrai inviare)
Troverai il metodo nei topic "in testa" di questa sezione

Ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi manacla » 14/04/11 08:13

Grazie per la risposta, ora vedo di allegare un file.
manacla
Newbie
 
Post: 9
Iscritto il: 13/04/11 22:35

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi manacla » 14/04/11 08:14

Forse al prossimo
manacla
Newbie
 
Post: 9
Iscritto il: 13/04/11 22:35

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi manacla » 14/04/11 08:15

Ecco l'allegato

http://uploading.com/files/5bed3cf7/Qprova.xls/

Il file è così composto:

Foglio "DatiGen"
Foglio in cui sono riportati i risultati dell'inchiesta
Le prime 4 colonne riportano i dati generali ovvero ad esempio
colonna A 0=Maschio, 1=Femmina
colonna B 1=primafascia di età etc

Foglio "Pivot"
Qui c'è la tabella pivot.
In alto i 4 campi dei dati e in basso i risultati della risposta alla prima domanda.

Foglio "Risultati"
Foglio dove riporterò il numero di risposte per ciascuna domanda relative alla combinazione sesso-età-regione-istruzione

Foglio "elenco dati"
In questo foglio ho riportato i parametri dei dati personali di chi risponde. Come dicevo questi parametri possono variare, ora ne ho messi 4 ma possono essercene di più o di meno.

Foglio "Composizione"
In quest'ultimo foglio c'è l'elenco delle domande con le possibili risposte e i valori abbinati, ad esempio
prima domanda è possibile rispondere Si o No: 0=Si - 1=No

Quello che vorrei è una macro che in automatico imposta i valori nella tabella pivot e vada a riempire il foglio "Risultati".
Quindi, impostare nella tabella pivot:
sesso=0
età=1
regione=Emilia-Romagna
istruzione=1
prendendoli dal foglio "Elenco dati" e poi inserire a turno le 3 domande, e riportare il risultato.

poi di nuovo
sesso=0
età=1
regione=Emilia-Romagna
istruzione=2
poi inserire a turno le 3 domande, e riportare il risultato.
Finito con tutti i tipi di istruzione, cambiare regione e ricominciare con istruzione=1 etc, etc.

Riportare i risultati nel foglio "Risultati" dovrei farcela da solo,
quello che mi preoccupa sono le varie impostazioni della tabella pivot.
Se i tipi di dati personali fossero di numero fisso, con vari cicli For Next sarei riuscito a fare da solo, ma con dati variabili mi sono bloccato.

Ora spero di essere stato abbastanza chiaro
Spero possiate aiutarmi.
Grazie
Cla
manacla
Newbie
 
Post: 9
Iscritto il: 13/04/11 22:35

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi Avatar3 » 14/04/11 10:52

Il foglio "Risultati" non è compilato ad Hoc per realizzare una macro semplice pertanto dovresti fare le seguenti operazioni:
1) Riempire la colonna A di "M" e di "F"
2) Riempire la colonna B con le Età (tuti i range 18-25, 26-35, 36-45 etc)
3) Rimpire la colonna C con le relative regioni
4) invertire nelle colonne E2 e F2 i due responsi (SI in E2, No in F2)
5) invertire nelle colonne G2 e H2 i due responsi (SI in G2, No in H2)
a questo punto inserisci nel VBA questo codice

Codice: Seleziona tutto
Sub CompilaRis()
Application.ScreenUpdating = False
Application.Calculation = xlManual
RTG = Worksheets("DatiGen").Range("A" & Rows.Count).End(xlUp).Row
RTR = Worksheets("Risultati").Range("A" & Rows.Count).End(xlUp).Row
Dim VSex(2) As String
Dim VEta(5) As String
Dim VIstr(5) As String
Dim VDom(2) As String
Dim Dom3 As Integer
VSex(1) = "M"
VSex(2) = "F"

VEta(1) = "18-25"
VEta(2) = "26-35"
VEta(3) = "36-45"
VEta(4) = "46-60"
VEta(5) = "over 60"

VIstr(1) = "elementare"
VIstr(2) = "media"
VIstr(3) = "professionale"
VIstr(4) = "superiore"
VIstr(5) = "universita"

Worksheets("Risultati").Select
  Range("E3:L" & RTR + 1000).ClearContents
For RR = 2 To RTG
    Sesso = Worksheets("DatiGen").Range("A" & RR).Value + 1
    Età = Worksheets("DatiGen").Range("B" & RR).Value
    Regione = Worksheets("DatiGen").Range("C" & RR).Value
    Istruzione = Worksheets("DatiGen").Range("D" & RR).Value
    Domanda1 = Worksheets("DatiGen").Range("E" & RR).Value + 1
    Domanda2 = Worksheets("DatiGen").Range("F" & RR).Value + 1
    Domanda3 = Worksheets("DatiGen").Range("G" & RR).Value + 1
    CodUniv = VSex(Sesso) & VEta(Età) & Regione & VIstr(Istruzione)
    For RRR = 3 To RTR
        CodRis = Range("A" & RRR).Value & Range("B" & RRR).Value & Range("C" & RRR).Value & Range("D" & RRR).Value
        If CodUniv = CodRis Then
        Cells(RRR, 4 + Domanda1).Value = Cells(RRR, 4 + Domanda1).Value + 1
        Cells(RRR, 6 + Domanda2).Value = Cells(RRR, 6 + Domanda2).Value + 1
        Cells(RRR, 8 + Domanda3).Value = Cells(RRR, 8 + Domanda3).Value + 1
        End If
    Next RRR
Next RR
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Allego anche il file
https://rapidshare.com/files/457359868/Qprova1.xls

Ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi manacla » 14/04/11 13:01

Grazie Avatar3, grazie tantissimo per la risposta.

Il tuo codice funziona, ma non mi hai risolto il problema del "Numoro di variabili... variabile".

Tu, nel codice hai creato degli Array ad esempio VEta(5) e all'interno hai caricato i valori:
VEta(1) = "18-25"
VEta(2) = "26-35"
VEta(3) = "36-45"
VEta(4) = "46-60"
VEta(5) = "over 60"
Il problema è che in questo caso erano (5) ma potrebbero essere 7 o 2 o 10.
Poi anche i valori delle età potrebbero cambiare e ad esempio "18-25" la prossima volta potrebbe diventare "18-30".
E' per questo che parlavo di variabili...variabili, problema che mi ha bloccato.

Esiste una soluzione a tutto ciò?
Grazie ancora
Cla
manacla
Newbie
 
Post: 9
Iscritto il: 13/04/11 22:35

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi Avatar3 » 14/04/11 14:41

Penso di si
al posto di assegnare il valore vettore nel codice VBA
lo fai tramite tabella
Ad esempio "esagerando" potresti dimensionare 10 vettori età
e fai scorrere la tabella dalla Riga1 alla RigaN facendo assumere ad ogni vettore il range età
e così anche per tutte le altre variabili
E' chiaro che la tabella si dovrà riferire a quel determinato foglio DatiGenerali
quindi avrai tabelle diverse per dati generali diversi ma la macro rimane sempre la stessa

Ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi manacla » 14/04/11 15:03

Significa che per tenermi al riparo da sorprese dovrei dimensionare 80 vettori... mi sembra un po' troppo.

Non c'è un altro metodo?
Secondo te, l'idea di una tabella pivot era sbagliata o di difficile gestione?

Cla
manacla
Newbie
 
Post: 9
Iscritto il: 13/04/11 22:35

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi manacla » 14/04/11 15:26

E poi c'è un'altra cosa,
le domande... io ne ho messe 3 ma potrebbero essere 20 o 50 e ogni domanda può avere diversi numeri di alternative di risposta, si-no, oppure 4 alternative o 3 o 5 ... insomma non ci sono valori fissi.

Cla
manacla
Newbie
 
Post: 9
Iscritto il: 13/04/11 22:35

Re: [EXCEL 2003] Numero di variabili.... variabile

Postdi Avatar3 » 14/04/11 20:57

Non si può realizzare un progetto senza avere uno schema di lavoro o l'idea di progetto o l'area di intervento

prova a interpellare un ingegnere o architetto e di loro "vorrei realizzare una villa, ma non so quale e quanto sarà la superficie del terreno né se deciderò per una mansarda o terrazzo o tutto tetto o attico, di finestre ne vorrei 5 ma forse 10 o 20 e balconi..."

insomma pensaci bene prima di dire di voler fare un progetto perché il progetto è sempre fine a se stesso.
La mia macro ti permette più possibilità alla domanda3 potrebbe essere da 1 a 20 (o più) valori senza differenza (provalo e vedrai che funzionerà), altro non saprei cosa dirti

ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL 2003] Numero di variabili.... variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 30 ospiti