APPUNTO IN UNA CELLA NUMERICA
Hai un problema con Excel? 
APPUNTO IN UNA CELLA NUMERICA
di GIUS (utente non iscritto) data: 09/10/2012 15:16:45
Buonasera,
ho un file Exel divisi in dati letterari e dati numerici, la mia domanda è se in una cella in cui ho un numero, che poi verra totalizzato insieme ad altri in fondo alla tabella mediante la funzione somma, sia possibile inserire anche un commento letterale non come COMMENTO ma un commento che dopo stampare a video e anche in formato cartaceo
di HarryBosch data: 09/10/2012 15:48:41
Ciao Giuseppe,
fammi capire:
- vorresti che, se in una cella fosse inserito un numero, allora in questa cella deve comparire un commento?
- poi vuoi stampare tutti i commenti?
- sono tutti uguali o ogni numero avrà il suo commento?
Non ho ben capito..
di Vecchio Frac data: 09/10/2012 16:03:36
o.O
Vanni funziona meglio rispetto a Google Translate...
Gius non te la prendere, ma effettivamente non puoi scrivere come parli, cerca di essere più preciso ^_^
Stando alla tua richiesta letterale, comunque, è possibile mescolare in una cella numeri e lettere, a patto che il numero sia sempre in prima posizione e per considerare poi solo il valore della cella con una funzione apposta che restituisca Val() (con VBA... infatti =VALORE a me fa casino).
di GIUS (utente non iscritto) data: 09/10/2012 17:02:19
ueeeeeeeeeeeeeeeeeeeeeeee ciao Vanni, tu non parlare Frac se no fai ridondanza, sei un riferimento ciclico giusto per rimanere in tema ahahhahaaaah. Rispondo dopo il lavoro, ciao e ben trovato
sciorinamento
di GIUS (utente non iscritto) data: 09/10/2012 17:29:52
Cioò in una cella ho un numero ad es 25 dentro questa cella poi collocato a fianco o sotto il mumero dovrei scrivere tra virgolette dellwe lwttere ad es. ( m.q. 5) e poi di tutte le celle dovrei fare una sommatoria pero senza sommare i numeri in parentesi.
Si può fare?
di HarryBosch data: 09/10/2012 19:48:27
Vecchio Frac non farà mai "ridondanza", qualsiasi cosa voglia dire
I suoi spunti e suggerimenti sono sempre molto arguti e interessanti, dettati da chi la sa lunga sul linguaggio in questione.
@Gius
venendo alla questione, si può fare quello che dici, ovvero, da quanto mi sembra d'aver capito:
- inseriamo una stringa di testo nella cella vicino (o sotto)
- alla fine della colonna sommiamo solo i valori numerici (obvious)
Quello che rimane da sapere è semplice, ma importante:
come si deve costruire la stinga da inserire? nel tuo esempio hai associato al numero 5 la stringa m.q.5; esiste una relazione tra i due?
- m.q. (metri quadri?) e il numero diviso 5 ?
Aspetto indicazioni...
di Vecchio Frac data: 09/10/2012 20:58:56
Allora avevo capito male io :)
Credevo che il nostro mattacchione volesse poter inserire numeri e testo nella stessa cella, per ottenere poi la somma numerica (fermo restando che si potrebbe anche pensare ad un formato di cella personalizzato, senza star lì a far tanti arzigogoli con funzioni strane).
di GIUS (utente non iscritto) data: 10/10/2012 12:47:18
a già hai proprio ragione IL FORMATO PERSONALIZZATO, non ci avevo pensato, hai capito beme Frac numeri e lettere nella stessa cella, però alla fine devo fare la somma dei mumeri a fine foglio senza lo scritto alfabetico.
Se scrivo un pò sgrammaticato è perche sono in ufficio e non ho tempo, anzi non dovrei proprio chattare
di Vecchio Frac data: 10/10/2012 13:59:38
Questa non è una chat, è un forum :)
Fai prima con una funzione tua.
Da richiamare ad esempio così in una cella nel foglio di lavoro:
=solo_valore(A1:A10)
Function solo_valore(r As Range) As Long
Dim ac As Range, lng As Long
For Each ac In r
lng = lng + val(ac)
Next
solo_valore = lng
End Function |
di HarryBosch data: 10/10/2012 14:28:11
@VecchioFrac
Var restituisce solo i numeri posti all'inizio della stringa, o sbaglio?
Ne approfitto per inserire una variante della funzione proposta da VecchioFrac, che invece estrapola tutti i numeri inseriti in una stringa, anche se sono inseriti alla rinfusa;
ad esempio la stringa "HarryBosch17_Excel-7" viene restituita come "177"
Nota: se dichiaro la variabile "num" come Long, ottengo invece la somma dei valori inseriti nella stringa:
Dim num As Long
quindi "HarryBosch17_Excel-7" verrebbe restituita come "15" (1+7+7)
Function solo_numeri(r As Range) As Long
Dim num As Variant
For i = 1 To Len(r)
If IsNumeric(Mid(r, i, 1)) Then
num = num + Mid(r, i, 1)
End If
Next
solo_numeri = num
End Function |
grande Dott. Bosh
di GIUS (utente non iscritto) data: 10/10/2012 15:58:11
Ciao, ma la stringa di codice che mi hai inserito si usa così:
- scrivo il numero nella cella interessata;
- poi con il tasto destro dopo aver selezionato la cella interessata, faccio inserisci codice;
- poi scrivo (m.q.41) nella cella.
Giusto?
di HarryBosch data: 10/10/2012 16:05:50
Fai così GIUS:
- inserisci il codice in un modulo del vba
- supponiamo che le tue stringhe alfanumeriche siano lungo la colonna A;
- nella cella B1, o altra colonna, scrivi questa formula:
=solo_numeri(A1)
oppure
=solo_valori(A1)
se inserisci il codice di VecchioFrac
Ti usciranno i valori numerici della stringa; poi, puoi copiare la formula lungo la colonna e alla fine usare una formula "somma".
Si potrebbe anche modificare la funzione in modo che sommi automaticamente tutto un intervallo selezionato (attualmente la funzione che ho indicato "lavora" su una singola cella, diversamente da quella di VecchioFrac che lavora anche su un intero intervallo ma in maniera diversa).
mi spiego meglio
di GIUS (utente non iscritto) data: 10/10/2012 16:43:52
ciao,
allora sarò + coinciso, il tuo lavorare per la singola cella va bene, perchè devo inserire lettere in singole celle.
Il modello è così strutturato:
ho una colonna A con nomi di diverse persone e a fiamco ho colonne con numeri, il lavoro che vorrei fare è questo:
-in B5 devo inserire 12 e sotto a questo numero delle lettere che iniziano tutte per m.q. con vicino un numero ( es m.q.39
- in B10 il mumero 5
-in B12 il numero 6 con sotto ( m.q.4) per esempio
- in B15 il numero 4
- in B17 il numero 15 com sotto (m.q. 8)
- ecc. ecc.
Dopodicchè devo fare il totale della colonna B di tutti i numeri tranne quelli indi cati in parentesi, ossia (m.q.15) che sono indicati sotto i numeri
mamma che frana che sono
di GIUS (utente non iscritto) data: 10/10/2012 23:09:03
Ciao Bosh,
ho ripristinato internet a casa, però ho inserito il tuo codice e non va, conoscendo le mie capacità con il VBA credo proprio che abbia pasticciato.
Come devo risolvere?
di HarryBosch data: 11/10/2012 00:50:06
Meglio che alleghi il file con i valori che ti trovi, perché non riesco a capire la disposizione dei dati e quali numeri andrebbero successivamente alla stringa "m.q."
Almeno così riuscirei ad aiutarti senza andare a tentativi..
ok
di GIUS (utente non iscritto) data: 11/10/2012 09:32:25
si appena purifico il modello dai dati sensibili con dati di puro esempio allegherò il file, grazie
HO ALLEGATO
di GIUS (utente non iscritto) data: 11/10/2012 10:59:45
ho allegato il file.
Il modello è così strutturato:
ho una colonna A con nomi di diverse persone e a fiamco ho colonne con numeri, il lavoro che vorrei fare è questo:
-in B5 devo inserire 12 e sotto a questo numero delle lettere che iniziano tutte per m.q. con vicino un numero ( es m.q.39
- in B10 il mumero 5
-in B12 il numero 6 con sotto ( m.q.4) per esempio
- in B15 il numero 4
- in B17 il numero 15 com sotto (m.q. 8)
- ecc. ecc.
Dopodicchè devo fare il totale della colonna B di tutti i numeri tranne quelli indi cati in parentesi, ossia (m.q.15) che sono indicati sotto i numeri
Grazie.
!!!!!!!
di GIUS (utente non iscritto) data: 11/10/2012 11:58:49
La mia idea sarebbe se sia possibile automaticamente scrivere lettere nelle celle interessate o a limite fare click col tasto desto è inserire una stringa che mi faccia digitare lettere che poi devo digitare queste parole solamente " (m.q.5) oppure (m.q.10) eccc. ecc."
Chiedo qualcosa di fattibile?
di Vecchio Frac data: 11/10/2012 13:45:19
Secondo me è fattibile con (relativamente) poca fatica.
Crea un formato numerico personalizzato per le celle interessate che gestisca l'input in quel formato.
Formato celle --> Numero --> [Personalizzato]: (m.q. ##)
Se adesso digiti ad esempio "10", nella cella comparirà la scritta (m.q. 10) ma verrà trattata come un numero (cambia solo la rappresentazione, non il formato interno che è numerico).
grazie
di GIUS (utente non iscritto) data: 11/10/2012 15:23:12
Lo avevop fatto, solamente che poi sopra o affianco doveva comparire un numero il quale a sua volta doveva essere sommato insierme ad altri......FRAC
di Vecchio Frac data: 11/10/2012 15:41:58
Ok, allora ti ripropongo, leggermente modificata, la Function di ieri, solo che adesso fa la somma dei soli valori numerici che trova nelle prime posizioni delle celle del range specificato.
Se in colonna B hai dati così strutturati:
15
(m.q. 4)
8
(m.q. 6)
16
3
20
(m.q. 12)
Questa funzione (incollata in un modulo, ovvio) va inserita in una cella del foglio di lavoro nella forma =somma_valori(B1:B50), dove il range specificato contiene appunto tutte le celle in cui compaiono valori da sommare.
Function somma_valori(r As Range) As Long
Dim ac As Range, lng As Long
For Each ac In r
lng = lng + Val(ac)
Next
somma_valori = lng
End Function
|
di GIUS (utente non iscritto) data: 11/10/2012 16:06:24
Grazie, quando vado a casa ci provo,
Lo dovrei fare anche per la colonna C;D;E;F.... allora dovrò creare più moduli?
di Vecchio Frac data: 11/10/2012 17:53:20
No, è una funzione pubblica e generica, la richiami nello stesso mdo dappertutto, basta cambiare il range:
(in una cella ma non in colonna C) =somma_valori(C:C) restituisce la somma dei numeri che incontra nella colonna C oppure (in una cella non in colonna F) =somma_valori(F:F) somma i valori della colonna F.
va scritta...
di GIUS (utente non iscritto) data: 11/10/2012 22:08:29
La inserisco nella cella stesso, giusto questa funzione?
di Vecchio Frac data: 11/10/2012 22:16:10
Gius, ragiona un po'.
E' come una normale funzione incorporata di Excel (ad esempio =SOMMA).
Quindi inserisci questa funzione in una cella qualunque del foglio di lavoro, e metti nelle parentesi il range (ti basta la colonna) che contiene i valori da cui vuoi ricavare la somma.
Come ti ho già mostrato, se in B1:B100 hai tutti i tuoi bravi inserimenti, scritti come vuoi tu, in B101 scrivi: =somma_valori(B1:B100) e la funzione ti darà il risultato voluto.
avevo capito
di GIUS (utente non iscritto) data: 11/10/2012 23:14:07
Grazie, avevo capito che funzionava come una formula, anzi era una f(X), pero tutti quei Dim e altre stringhe non vanno + inserite? Poi chiedevo come riempire una cella così:
5
(m.q.10)
Grazie Frac
di Vecchio Frac data: 12/10/2012 11:37:56
Certo che sì, va inserito tutto quel pezzo di codice in un modulo. Preferibilmente con Option Explicit in testa, prima di Function e su una riga tutta per sè :)
Per riempire una cella nel modo che dici tu, dopo aver inserito il numerino premi Alt Invio per andare a capo all'interno della cella.
:-(((((((((
di GIUS (utente non iscritto) data: 12/10/2012 11:48:03
Buongiorno, la spiegazione è chiara la formula va inserita nella riga del totale e non la ho saputa inserire ( ti pareva strano), però nelle singole celle io devo inserire valori numerici e alfanumerici, come indicato precedentemente, Il lavoro è di una certa urgenza grazie.
Cordiali saluti
di Vecchio Frac data: 12/10/2012 11:56:47
La devi trattare come una formula incorporata.
Quindi nella cella del totale devi scriverla come fosse una formula, con il segno di uguale davanti; per esempio così:
=somma_valori(B1:B100)
fatto
di GIUS (utente non iscritto) data: 12/10/2012 12:17:56
Mi esce scritto così:
#NOME?
di GIUS (utente non iscritto) data: 12/10/2012 13:27:16
aiuto
di Vecchio Frac data: 12/10/2012 14:35:02
Rispondi:
- La Function l'hai scritta in un modulo?
- Come l'hai scritta?
- Nel foglio Excel la richiami esattamente come l'hai scritta dopo Function?
- Vero che non metti spazi vuoti dopo il segno di uguale? "= somma_valori()"
- Come la richiami nel foglio Excel?
di GIUS (utente non iscritto) data: 13/10/2012 15:16:43
La function l'avevo inserita nella cella con il segno =Function... , mi sembra di capire che ho sbagliato dovevo fare un inserirla in un modulo, ho rifatto cosi. Poi nella cella TOTALE, uscendo da VBA e tornando al foglio, ho scritto nella cella =SOMMA_VALORI (C1:C100) e mi ha sommatoanche i commenti(m.q.5) cosa che non volevo
di Vecchio Frac data: 13/10/2012 15:41:09
No, non può sommare i commenti che cominciano con una lettera. La funzione prende solo il valore della cella (se i primi caratteri sono numerici prende solo quelli, altrimenti ritorna zero che per le somme è ininfluente).
di GIUS (utente non iscritto) data: 13/10/2012 17:15:20
aaaaaaaaaaaaaaaaaaaaaaaaaaa ecco io vorrei che tutto il contenuto in parentesi non venga preso in conto
di Vecchio Frac data: 13/10/2012 21:03:12
Ma è così... la funzione somma_valori fa esattamente questo: tiene conto solo dei numeri che compaiono a inizio cella, e non dopo un carattere alfanumerico).
di GIUS (utente non iscritto) data: 14/10/2012 01:20:44
allora mi stai dicendo che non ce niente da fare per escludere dalla sommatoria questo; (m.q.5) ?
di Vecchio Frac data: 14/10/2012 09:24:49
Ma non hai capito... attualmente la funzione per come è costruita *esclude* cioè che è preceduto da un non numero o in altre parole *non* tiene conto di quello che c'è dalla parentesi in poi:
15 (m.q. 5) --> 15
ciao --> 0
163cucù --> 163
pippo 88 --> 0
di GIUS (utente non iscritto) data: 14/10/2012 17:43:52
a me per es. 153 (m.q.5) scritto sotto 153 dava 3 e poi per ogni foglio dovrei fare lo stesso discorso, quindi creo un modulo per ogni foglio?, inoltre poi dovrei costruire un foglio finale che mi mostra un grafico con l'andamento mese mese del mercato
di GIUS (utente non iscritto) data: 14/10/2012 17:51:42
la stringa (m.q.5) deve essere esclusa dal totale
di Vecchio Frac data: 14/10/2012 18:23:05
Non devi creare un modulo nuovo per ogni foglio (cosa che non ha senso: i Moduli sono già visibili a tutta la cartella di lavoro, basta che le routines e le funzioni siano dichiarate con o senza la parola chiave Public), quindi la tua Function somma_valori la scrivi una volta sola ed è disponibile ovunque.
Impossibile che, con la funzione data, la stringa "153 (m.q. 5)" dia come risultato 3.
Il foglio finale con il grafico è ovviamente un discorso a parte :)
di GIUS (utente non iscritto) data: 14/10/2012 21:49:44
certo il grafico a parte e credo che riesca a farlo da solo, ma sei sicuro che 15 (m.q.5) non faccia 15*5 o 15/5. A me interessa solo che faccia testo 15 nel discorso.
Grazie
di Vecchio Frac data: 15/10/2012 08:36:23
Non può essere che così.
Guardiamo insieme la funzione.
Firma: somma_valori accetta una parametro "r" di tipo Range e restituisce un numero intero di tipo Long compreso nell'intervallo fra -2.147.483.648 e 2.147.483.647.
Dimensionamento variabili: "ac" è di tipo Range (rappresenta una cella alla volta), "lng" è di tipo Long e conterrà il risultato della somma.
Corpo funzione: un semplice ciclo per ogni cella del Range passato in argomento alla funzione. Ad ogni passaggio la variabile "lng" viene riempita con il valore attuale della cella esaminata. Questo è il cuore del procedimento: la funzione Val() restituisce i numeri inclusi in una stringa sotto forma di valore numerico di tipo appropriato; quello che non è numerico viene interpretato e se non può essere considerato un carattere valido nella costruzione di un numero viene ignorato (ad esempio un numero può essere espresso come potenza del 10: "1E2" viene correttamente letto come "100"). Bisogna solo stare attenti agli spazi che è come non ci fossero.
Infine il risultato della somma viene riassegnato alla funzione e quindi questo è il valore di ritorno della funzione.
Morale: una cella che contenga "15 (m.q. 5)" restituisce 15; una cella che contenga "a 10" restituisce zero; una cella che contenga "1 2 3" restituisce 123.
Per elaborazioni più sofisticate bisogna modificare la funzione.
Per i tuoi scopi, questa fa quel che chiedevi.
Function somma_valori(r As Range) As Long
Dim ac As Range, lng As Long
For Each ac In r
lng = lng + Val(ac)
Next
somma_valori = lng
End Function |
di GIUS (utente non iscritto) data: 15/10/2012 09:03:45
LO RIFARò APPENA POSSIBILE, GRAZIE
di GIUS (utente non iscritto) data: 15/10/2012 14:53:52
Ciao,
allorascrivendo nella cella: € 5 (m.q. 2) scompare il segno €, il quale vorrei che permanga dato che la cella deve avere il formato contabilita, inoltre il TOTALE mi da sempre #VALORE, forse anche perchè in alcune celle c'è il segno "-" e altre sono vuote.
di GIUS (utente non iscritto) data: 15/10/2012 17:06:12
non so se sono stato chiaro, forse c'è qualche parametro che non è chiaro.
Grazie
chiedo la luna
di GIUS (utente non iscritto) data: 15/10/2012 21:47:58
Scusate ma quanto chiesto è impossibile farlo?
di Vecchio Frac data: 16/10/2012 11:08:34
Non credo, ma io temo di aver esaurito le soluzioni...
cit. " Ciao, allora scrivendo nella cella: € 5 (m.q. 2) scompare il segno €, il quale vorrei che permanga dato che la cella deve avere il formato contabilita, inoltre il TOTALE mi da sempre #VALORE, forse anche perchè in alcune celle c'è il segno "-" e altre sono vuote. "
Riallega un file con dati di esempio.
di GIUS (utente non iscritto) data: 16/10/2012 11:43:15
Forse nella fretta o pasticciato un pò, ti riallego il un file con il modulo VBA con il codice che hai gentilmente preparato per me la prima volta.ciao
:-)
di GIUS (utente non iscritto) data: 16/10/2012 12:18:27
Ho allegato il file, inoltre se perpiacere è possibil avere la stringa "(m.q.3)" più piccola e il segno € davanti ai numeri.
Ciao, grazie
di Vecchio Frac data: 16/10/2012 13:57:14
Ho visto.
Funziona in realtà... devi scrivere la formula in modo corretto, cioè senza spazi aggiuntivi.
In cella Totali (colonna C) hai scritto:
=somma_valori (C2:C100)
e invece deve essere:
=somma_valori(C2:C100)
Comunque mescolare testo e numeri e pretendere formattazioni fantasiose non è semplice... trovo più realizzabile una colonna aggiuntiva per i m.q. a lato, e lasciare la colonna dei numeri solo con numeri, formattabili come valuta come desideri tu.
di GIUS (utente non iscritto) data: 16/10/2012 14:39:21
... in realtaà per la colonna aggiuntiva, sarebbe uno spreco perchè come vedi i mq li metto solo quando supero un valore e nn sempre. Cmq tu mi dicesti di mettere gli spazi nella formula cmq grazie. Testerò
Ciao
di GIUS (utente non iscritto) data: 16/10/2012 14:46:00
non va, prova a inserire stesso tu la formula
di Vecchio Frac data: 16/10/2012 18:49:16
Uno spreco? hai tante di quelle colonne a disposizione... e poi Excel è fatto apposta :)
Io ho *sempre* detto di *non* mettere spazi nella formula quando la digiti in Excel.
Ho inserito la formula. Dà esattamente il valore che ti aspetti :)
Allego immagine zippata, così lo vedi anche tu.
Comunque ripensa all'interfaccia e sei a posto, lascia nella colonna del totale i soli numeri formattati come valuta e calcolane la somma, a fianco metti una colonna di testo libero per i m.q. in eccedenza
ho risolto
di GIUS (utente non iscritto) data: 16/10/2012 23:51:40
in pratica dovevo creare un modulo con il tuo primo elaborato
Grazie
di Vecchio Frac data: 17/10/2012 07:26:42
Esattamente quello che dicevo qualche post fa... il 12 ottobre alle ore 14.35 ... :D
di GIUS (utente non iscritto) data: 17/10/2012 08:56:56
.... si però non mi da il segno € quando ho una cella con dentro anche (m.q.10)
Vuoi Approfondire?