Author Topic: Input dati Excel  (Read 12336 times)

0 Members and 1 Guest are viewing this topic.

Offline bertolana

  • Novizio del forum
  • *
  • Posts: 9
  • Karma: 1
  • Laureato
Input dati Excel
« on: 01 January , 2010, 15:40:39 PM »
Un saluto ed un augurio di buon anno a tutto il forum!  :inchino:
Vi faccio qualche domandina su Excel:
1) è possibile consentire in una cella l'inserimento di un input numerico libero ovvero che in funzione del valore assunto in una qualche altra cella sia possibile che il valore assunto dalla cella stessa sia il risultato di una formula?
2) esiste una qualche funzione che consente l'azzeramento dei soli valori numerici presenti in un certo numero di celle senza peraltro cancellare le formule presenti nelle celle stesse?
3) c'è una qualche guida specifica  sull'inserimento delle funzioni personalizzate in excel?

io non ho alcuna esperienza di programmazione ma sono "affascinato" dai lavori sviluppati da vari colleghi in primis da afazio.... e vorrei provare a costruire qcs di buono...

grazie ancora e complimenti a tutti gli utilizzatori ed in particolare a chi gestisce questo forum con tanta "diligenza" e "conoscenza"

bye
berto

Offline Gilean

  • Administrator
  • Bisnonno Veterano
  • *****
  • Posts: 3292
  • Karma: 202
Re: Input dati Excel
« Reply #1 on: 01 January , 2010, 15:45:14 PM »
Inannzitutto ciao a te :

1- Non ho capito bene la domanda, potresti esplicitarla meglio?

2-se azzero il contenuto della cella, ma questa contiene la formula, cosa dovrebbe contenere? al limite potresti inserire un condizionale che punti ad una cella: es:

nella cella A1 puoi mettere 1 o 0. Con 0 cancelli il risultato della formula nella cella A2, mentre con 1 visualizzi la formula, inserendo questa formula nella A2:

=SE(A1=1;Formula che vuoi tu;"")

3- Se cerchi su google troverai molto, la programmazione in excel da risultati ottimali specie utilizzando macro ed oggetti.
Il calcolo è come la pelle delle @@, lo tiri dove vuoi tu.
Esempio di programmazione a Loop:
L'enunciato che segue è falso
L'enunciato precedente è vero.

Nonostante la consapevolezza dei rischi che si corrono dopo aver visto le prestazioni da 3° dan

Offline bertolana

  • Novizio del forum
  • *
  • Posts: 9
  • Karma: 1
  • Laureato
Re: Input dati Excel
« Reply #2 on: 01 January , 2010, 16:11:55 PM »
grazie della sollecita risposta; provo a spiegare meglio la prima domanda con l'esmpio concreto che vorrei risolvere:

all'interno di un foglio di calcolo ho alcune celle in cui i dati geometrici dei profili in acciaio vengono ottenuti in automatico da un profilario utilizzando le funzioni SOMMA.SE ovvero CERCA.VERT una volta scelto il tipo di profilo standard (ad. es. IPE360); io vorrei fare in modo di consentire un input libero in quelle celle per calcolare per. es. un profilo composto per saldatura di dimensioni qualsiasi, senza perdere le formule scritte......

spero di essermi spiegato meglio
grazie
berto


Offline Gilean

  • Administrator
  • Bisnonno Veterano
  • *****
  • Posts: 3292
  • Karma: 202
Re: Input dati Excel
« Reply #3 on: 01 January , 2010, 16:31:14 PM »
se ho capito bene  vorresti inputare dati in quelle celle pur mantenendo le formule? se e' cosi' non penso si possa fare.
Il calcolo è come la pelle delle @@, lo tiri dove vuoi tu.
Esempio di programmazione a Loop:
L'enunciato che segue è falso
L'enunciato precedente è vero.

Nonostante la consapevolezza dei rischi che si corrono dopo aver visto le prestazioni da 3° dan

Offline bertolana

  • Novizio del forum
  • *
  • Posts: 9
  • Karma: 1
  • Laureato
Re: Input dati Excel
« Reply #4 on: 01 January , 2010, 16:43:08 PM »
hai capito bene.....
....mi sa che allora dovrò sistemare il foglio diversamente
grazie

afazio

  • Guest
Re: Input dati Excel
« Reply #5 on: 01 January , 2010, 17:53:08 PM »
Lo potresti fare ricorrendo a qualche artifizio

In qualche parte del tuo file, in un foglio specifico crei due sezioni. La prima con le celle contenenti le formule e la seconda, avente stesso formato della prima, contenente gli eventuali dati inputati da te.
Poi inserisci una cella di scelta coi due valori "dati liberi" "dati calcolati" che punta ad una particolare cella il cui valore sarà 0 per il primo caso ed 1 per il secondo caso.
Aquesto punto, in altra parte del tuo file, crei una terza copia, nel formato, dei dati che hai gia stabilito altrove. Ciascuna cella conterrà una formula di matrice.
Supponiamo che:
- in A1:A8 del foglio2 hai la parte di celle con le formule
- in B1:B8 del foglio2 hai la parte di celle coi dati in input
- in C1 del foglio2 hai la cella di controllo (quella che assume valore 0 o 1). Chiamo questa cella col nome CONTROLLO

Adesso torni nel foglio1, selezioni il range A1:A8, scrivi nella prima cella la formula di matrice:

={CONTROLLO*(FOGLIO2!A1:A8) + (1-CONTROLLO)*(FOGLIO2!B1:B8)}


e premi Ctrl+Shift+Invio

N.B.: Non digitare le parentiesi graffe, queste ti appariranno dopo aver premuto Ctrl+Shift+Invio.

Come potrai constatare, quando CONTROLLO vale 1, la seconda parte della formula va a zero, mentre quando vale 0 la prima parte della formula va a zero e la seconda va a 1, riportando quindi nel primo caso i dati calcolati e nel secondo caso i dati di input




« Last Edit: 01 January , 2010, 18:01:21 PM by afazio »

afazio

  • Guest
Re: Input dati Excel
« Reply #6 on: 01 January , 2010, 17:59:13 PM »
grazie della sollecita risposta; provo a spiegare meglio la prima domanda con l'esmpio concreto che vorrei risolvere:

all'interno di un foglio di calcolo ho alcune celle in cui i dati geometrici dei profili in acciaio vengono ottenuti in automatico da un profilario utilizzando le funzioni SOMMA.SE ovvero CERCA.VERT una volta scelto il tipo di profilo standard (ad. es. IPE360); io vorrei fare in modo di consentire un input libero in quelle celle per calcolare per. es. un profilo composto per saldatura di dimensioni qualsiasi, senza perdere le formule scritte......

spero di essermi spiegato meglio
grazie
berto



Se il tuo problema e' un sagomario, prova a scaricarti il mio (che trovi sul sito di lexatus). In quel sagomario c'e' anche la possibilita di calcolarsi le propietà meccaniche anche di un profilo saldato. Sezione Custom.

Offline bertolana

  • Novizio del forum
  • *
  • Posts: 9
  • Karma: 1
  • Laureato
Re: Input dati Excel
« Reply #7 on: 01 January , 2010, 19:16:58 PM »
afazio ti ringrazio per le indicazioni che mi  hai dato nel post precedente: la soluzione è forse un pò  "artifiziosa" ma sicuramente ingegnosa e direi che fa al caso mio;

ho guardato il tuo sagomario ed è un lavoro eccellente; avrei mille domande da farti per capire come lo hai progettato: per ora te ne faccio una sola:
nella sezione Custom come fai a fare in modo che nella stessa cella compaia, a seconda della tipologia di profilo scelta, la corretta formula per calcolare, ad esempio, il momento di inerzia?

mi ricordo di una tua interessante disquisizione su di un altro forum con ing. rugarli riguardo la classificazione dei profili a pressoflessione: sei riuscito ad arrivare a una qualche conclusione "implementabile" in excel o il problema è ancora aperto?

grazie ancora
berto

afazio

  • Guest
Re: Input dati Excel
« Reply #8 on: 01 January , 2010, 20:36:00 PM »
afazio ti ringrazio per le indicazioni che mi  hai dato nel post precedente: la soluzione è forse un pò  "artifiziosa" ma sicuramente ingegnosa e direi che fa al caso mio;

ho guardato il tuo sagomario ed è un lavoro eccellente; avrei mille domande da farti per capire come lo hai progettato: per ora te ne faccio una sola:
nella sezione Custom come fai a fare in modo che nella stessa cella compaia, a seconda della tipologia di profilo scelta, la corretta formula per calcolare, ad esempio, il momento di inerzia?

Nel foglio denominato "Intestazioni" ho raggruppato tutte le diverse intestazioni possibili con le formule relative ai diversi tipi di profilo.
A ciascuna intestazione ho attribuito un nome e poi attarverso codice che si attiva all'evento "on change" non faccio altro che copiare ed incollare la relativa intestazione in funzione della scelta effettuata nel foglio "custom".

Trovi la parte del codice relativo a ciò nella sezione di codice del foglio "custom"
Code: [Select]
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tabq As String, numq As Integer


    For numq = 1 To ActiveWorkbook.Names("cnumprof").RefersToRange.Value
   
    If ActiveWorkbook.Names("cprofilo" & numq).RefersToRange.Address = Target.Address Then
        tabq = Target.Value
        Call cIntestazione(tabq, numq)
    End If
   
    Next
End Sub

La procedura che fa il copincolla è la sub  cIntestazione(tabq, numq) che rovi nel modulo "intestazioni"

Code: [Select]
Sub cIntestazione(tabq As String, numq As Integer)
           
            Sheets("Intestazioni").Select
            Range("cInt_" & tabq).Select
            Application.CutCopyMode = False
            Selection.Copy
            Sheets("Custom").Select
            Range("ctestata" & numq).Select
            ActiveSheet.Paste
            Range("C_custom" & numq).Select
End Sub



mi ricordo di una tua interessante disquisizione su di un altro forum con ing. rugarli riguardo la classificazione dei profili a pressoflessione: sei riuscito ad arrivare a una qualche conclusione "implementabile" in excel o il problema è ancora aperto?

grazie ancora
berto


Come avrai capito dalla discussione con l'ing. Rugarli, la questione della classificazione delle sezioni e' qualcosa di abbastanza complesso, forse ancora nemmeno risolto in maniera universale. Il metodo delle RECLASS dell'ing. P Rugarli e' qualcosa di proprietario (cioè SUO esclusivo) e che in ogni caso sarebbe davvero arduo implementarlo in excel con VBA (ritengo anche con programma stand alone scritto in C++ o C# o anche VB). Il metodo che ho invece descritto in quella sede, che solo allora ho scoperto trattavasi di un metodo inglese, invece e' facile implementarlo in excel. Lo faro' quando ne avro necessita massiccia, per adesso mi limito a classifcare le sezioni sfruttando il mio sagomario (puoi vedere che buona parte dei profili hanno la classificazione secondo EC3) o con calcoletti a mano.

saluti

afazio

  • Guest
Re: Input dati Excel
« Reply #9 on: 01 January , 2010, 20:40:57 PM »
afazio ti ringrazio per le indicazioni che mi  hai dato nel post precedente: la soluzione è forse un pò  "artifiziosa" ma sicuramente ingegnosa e direi che fa al caso mio;

ho guardato il tuo sagomario ed è un lavoro eccellente; avrei mille domande da farti per capire come lo hai progettato: per ora te ne faccio una sola:
nella sezione Custom come fai a fare in modo che nella stessa cella compaia, a seconda della tipologia di profilo scelta, la corretta formula per calcolare, ad esempio, il momento di inerzia?

mi ricordo di una tua interessante disquisizione su di un altro forum con ing. rugarli riguardo la classificazione dei profili a pressoflessione: sei riuscito ad arrivare a una qualche conclusione "implementabile" in excel o il problema è ancora aperto?

grazie ancora
berto


Una sola nota:
attenzione al mio sagomario: purtroppo la parte relativa ai profili accoppiati non l'ho mai terminata e presenta ancora degli errori che rendono tale parte ancora "Non affidabile"
Quando avrò un po' di tempo (se mai ne avro') e' mia intenzione completare anche quella parte.

saluti

Offline bertolana

  • Novizio del forum
  • *
  • Posts: 9
  • Karma: 1
  • Laureato
Re: Input dati Excel
« Reply #10 on: 02 January , 2010, 08:45:34 AM »
che dire afazio: grazie ancor.....sei il solito pozzo di conoscenza e illuminante condivisione!
ti chiedo un ultimo aiuto se puoi/vuoi: riguardo all'evento "on change", se ben ricordo, sempre su ingforum, e sempre in quel post in cui parlasti con ing.rugarli, avevi postato una spiegazione di come fare a realizzare alcune interessanti situazioni; all'epoca mi ero riproposto di provare ad approfondire il discorso quando avrei avuto un pò di tempo (= in questi giorni di ferie!), però i tuoi posts sono tutti "cancellati" ed io non me li ero copiati: riesci a riproporli qua? oppure a darmi solo qualche indicazione per rinfrescare la memoria?
grazie  :inchino:
berto

afazio

  • Guest
Re: Input dati Excel
« Reply #11 on: 02 January , 2010, 11:29:09 AM »
che dire afazio: grazie ancor.....sei il solito pozzo di conoscenza e illuminante condivisione!
ti chiedo un ultimo aiuto se puoi/vuoi: riguardo all'evento "on change", se ben ricordo, sempre su ingforum, e sempre in quel post in cui parlasti con ing.rugarli, avevi postato una spiegazione di come fare a realizzare alcune interessanti situazioni; all'epoca mi ero riproposto di provare ad approfondire il discorso quando avrei avuto un pò di tempo (= in questi giorni di ferie!), però i tuoi posts sono tutti "cancellati" ed io non me li ero copiati: riesci a riproporli qua? oppure a darmi solo qualche indicazione per rinfrescare la memoria?
grazie  :inchino:
berto

Per la classificazione delle sezioni, lo faro' appena rotorno al lavoro.
Da qualche parte sulla scrivania ho lasciato degli appunti, oltre al fatto che li ho tutto quanto necessario (norme e limiti di snellezze per le classi) per riproporre la discussione.

Per l'evento "on change":
ogni qualvolta viene prodotto un qualsiasi cambiamento ad un foglio di lavoro, il sistema produce un evento che in questo caso si chiama "on change" che viene inviato all'applicazione insieme all'indirizzo della cella o del range che e' stato "cambiato".
L'applicazione controlla se nel codice del foglio che viene modificato esiste un gestore dell'evento e nel caso positivo lo esegue automaticamente.

Per scrivere del codice che gestisce un evento di foglio, basta andare nello spazio progettazione e fare doppio clik, nell'elenco a sinistra, sul foglio che ci interessa.

Preparo alcune immagini e illustro meglio questa possibilita con un esempio banalisismo.

afazio

  • Guest
Re: Input dati Excel
« Reply #12 on: 02 January , 2010, 11:34:45 AM »
Per la classificazione delle sezioni, lo faro' appena rotorno al lavoro.
Da qualche parte sulla scrivania ho lasciato degli appunti, oltre al fatto che li ho tutto quanto necessario (norme e limiti di snellezze per le classi) per riproporre la discussione.

Per l'evento "on change":
ogni qualvolta viene prodotto un qualsiasi cambiamento ad un foglio di lavoro, il sistema produce un evento che in questo caso si chiama "on change" che viene inviato all'applicazione insieme all'indirizzo della cella o del range che e' stato "cambiato".
L'applicazione controlla se nel codice del foglio che viene modificato esiste un gestore dell'evento e nel caso positivo lo esegue automaticamente.

Per scrivere del codice che gestisce un evento di foglio, basta andare nello spazio progettazione e fare doppio clik, nell'elenco a sinistra, sul foglio che ci interessa.

Preparo alcune immagini e illustro meglio questa possibilita con un esempio banalisismo.

Vogliamo far si che non appena inseriamo il numero 1 in una ben determinata cella, il sistema scriva il numero 2 in altra cella da noi stabilita.
Per questo apriamo un file vuoto di escel, stabiliamo due celle e ad esse diamo rispettivamente i nomi "uno" e "due"



Per attribuire i nomi alle celle basta digitarlo nello spazio in alto a sinistra indicato con la freccetta e premere invio oppure attraverso il comando di menu' "inserisci nome"

afazio

  • Guest
Re: Input dati Excel
« Reply #13 on: 02 January , 2010, 11:57:13 AM »
Vogliamo far si che non appena inseriamo il numero 1 in una ben determinata cella, il sistema scriva il numero 2 in altra cella da noi stabilita.
Per questo apriamo un file vuoto di escel, stabiliamo due celle e ad esse diamo rispettivamente i nomi "uno" e "due"



Per attribuire i nomi alle celle basta digitarlo nello spazio in alto a sinistra indicato con la freccetta e premere invio oppure attraverso il comando di menu' "inserisci nome"


Adesso andiamo nello spazio progettazione, doppio clik sul foglio che vogliamo gestisca l'evento. Si apre lo spazio dove inserire il codice.



Adesso scriviamo in questo spazio il codice di gestione dell'evento on_change

Private Sub Worksheet_Change(ByVal cella As Range)

Il parametro passato dal sistema alla sub è proprio il range (in questo caso una sola cella) che io ho chiamato con "cella", in cui si verifica il cambiamento.

Per evitare che il sistema diveti lentissimo nel caso in cui dovesse gestire i cambiamenti in qualsiasi cella e' opportuno limitare con un if iniziale l'ambito di esecuzione della sub. Essa deve essere eseguita solo se si cambia la cella che abbiamo chiamato "uno"
Quindi scriveremo il rigo di codice

If cella = Range("uno") Then

che terminiamo immediatamente con il corrispondente end if (per evitare di dimenticarcelo nel caso in cui il codice divenisse complesso.

all'interno scriveremo il codice che fara scrivere 1 o 2 nella cella "due" a seconda se inseriamo 2 o 1 nella cella "uno"



« Last Edit: 02 January , 2010, 12:04:37 PM by afazio »

Offline bertolana

  • Novizio del forum
  • *
  • Posts: 9
  • Karma: 1
  • Laureato
Re: Input dati Excel
« Reply #14 on: 02 January , 2010, 14:07:25 PM »
grazie ancora.
ora capisco di più anche il funzionamento del tuo sagomario che ritengo ti sarà "costato" un gran numero di ore di lavoro.....ma ne vale sicuramente la pena visto il risultato!!

domanda/curiosità per afazio ma anche per gilean o per chiunque mi vorrà rispondere: come fate da ingegneri civili ad essere così pratici di programmazione? è solo passione o avete seguito corsi particolari all'università che vi hanno "indirizzato"? io ho studiato a bologna  e, nonostante abbia frequentato parecchi esami di strutture, non ho mai incontrato corsi/proff. che mi abbiano aiutato particolarmente in questo?  ossia non ho mai fatto niente di più di un "banale/primordiale" utilizzo di excel

grazie
berto

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24