Inserimento formule da VBA e simbolo @

Anonimo
2021-10-03T23:14:37+00:00

Salve a tutti,

sto preparando una macro il cui scopo è mettere la formula che mi serve nella cella, ma ho problemi con il simbolo @:
per esempio range="=media(1,2)" risulta in =**@**media(1,2) con conseguente errore di #NOME? ; questo ho risolto usando average al posto di media nel codice.

Invece un codice del tipo "=average(if(intervallo>cella; ..."

viene messo nella formula della cella come =MEDIA(SE(**@**intervallo>cella ...

e la formula non fa il suo dovere, se tolgo le @ invece funziona normalmente.

Per esempio, calcolando la media di due grandezze selezionando il periodo temporale,

compaiono le chiocciole e invece di calcolare la media da-a (cosa che funziona togliendo le chiocciole), nella prima riga trovo la media di tutti i valori.

Cosa sono quelle chiocciole e come faccio a evitarle?

Grazie!

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2021-10-04T17:28:12+00:00

Ciao MB22_MS,

Salve, ho caricato un file di esempio qui:

https://1drv.ms/x/s!AsxSPMFdun_V8T3ijFTIXd-dBhua?e=Os54Ow

Uso Excel in italiano, e la macro verrà poi utilizzata su altri pc sempre in italiano.
Grazie

Per quanto riguarda la tua procedura problemachiocciola, vedo tre problemi:

  • Il VBA parla solo inglese e, quindi, non riconosce funzioni con nomi italiani
  • Alcune delle formule che stai utilizzando sono intrinsecamente formule matriciali; VBA richiede che queste formule vengano inserite come formule matriciali utilizzando la funzione VBA FormulaArray
  • Questa macro dovrebbe trovarsi in un modulo di codice standard anziché nel modulo codice dell'oggetto Questa_cartella_di_lavoro.

Pertanto la tua procedura potrebbe diventare:

'========>>

Public Sub problemachiocciola()

[g1].Formula = "=Average(1,2,3)" 

[g2].Formula = "=average(1,2,3)" 

[g3].Formula = "=If(1<2, 3)" 

[g4].Formula = "=if(1<2, 3)" 

[g5].FormulaArray = "=if(b1:b4<b5, b1:b4)" 

[g6].FormulaArray = "=Average(If(b1:b4<b5, b1:b4))" 

[g7].FormulaArray = "=Average(If(b1:b4<b5, b1:b4))" 

[g8].FormulaArray = "=average(if(b1:b4<b5, b1:b4))" 

[g9].FormulaArray = "=average(if(b1:b4<b5, if(b1:b4>1, b1:b4)))" 

End Sub

'<<========

In questo modo le formule imposte nelle celle G1:G9 restituiscono tutte i risultati attesi:

     [![Immagine](https://learn-attachment.microsoft.com/api/attachments/fa33976b-6b58-4bbc-8386-da8987490d1e?platform=QnA"https://1drv.ms/x/s!AmTW9HzZG8cqj35w6kK3cVjVpTn9?e=tDmSMb" title="https://1drv.ms/x/s!AmTW9HzZG8cqj35w6kK3cVjVpTn9?e=tDmSMb" rel="ugc nofollow">MB22_MS20211004.xlsm **** 

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-10-04T12:29:59+00:00

    ciao

    una curiosità

    ma non puoi mettere semplicemente

    la formula sul foglio?

    e magari usare MEDIA.PIU.SE()

    Lo scopo finale è l'elaborazione automatica di centinaia di file diversi, quindi no.

    Ho riportato solo un pezzettino per far intendere quale fosse il problema... anche un eventuale utilizzo di un templato non fa al caso mio, quindi vorrei riuscire a sistemare questa cosa.

    Farei tutta l'elaborazione e i calcoli in vba ma ho necessità che le formule restino in chiaro sul foglio

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Gianfranco55 25,190 Punti di reputazione Moderatore volontario
    2021-10-04T11:32:58+00:00

    ciao

    una curiosità

    ma non puoi mettere semplicemente

    la formula sul foglio?

    e magari usare MEDIA.PIU.SE()

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-10-04T09:40:17+00:00

    Salve, ho caricato un file di esempio qui:

    https://1drv.ms/x/s!AsxSPMFdun_V8T3ijFTIXd-dBhua?e=Os54Ow

    Uso Excel in italiano, e la macro verrà poi utilizzata su altri pc sempre in italiano.
    Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-10-03T23:45:24+00:00

    Ciao MB22_MS,

    sto preparando una macro il cui scopo è mettere la formula che mi serve nella cella, ma ho problemi con il simbolo @:
    per esempio range="=media(1,2)" risulta in =**@**media(1,2) con conseguente errore di #NOME? ; questo ho risolto usando average al posto di media nel codice.

    Invece un codice del tipo "=average(if(intervallo>cella; ..."

    viene messo nella formula della cella come =MEDIA(SE(**@**intervallo>cella ...

    e la formula non fa il suo dovere, se tolgo le @ invece funziona normalmente.

    Per esempio, calcolando la media di due grandezze selezionando il periodo temporale,

    Immagine

    compaiono le chiocciole e invece di calcolare la media da-a (cosa che funziona togliendo le chiocciole), nella prima riga trovo la media di tutti i valori.

    Cosa sono quelle chiocciole e come faccio a evitarle?

    Per evitare che sia necessario indovinare la configurazione dei tuoi dati o il codice che stai utilizzando, ti chiedo gentilmente di caricare un file di esempio, senza dati sensibili, che dimostri i risultati problematici e che includa il codice che stai utilizzando .

    Credo anche che sarebbe utile se volessi confermare la lingua imposta con la tua versione di Excel.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento