CONTASE in VBA



  • CONTA.SE in VBA
    di Luca (utente non iscritto) data: 20/01/2015 18:18:07

    Buonasera a tutti,
    chiedo scusa se disturbo ma dopo un'ora di tentativi e ricerche infruttuose non so più sbattere la testa

    Vorrei che in una macro venisse eseguita una funzione di CONTA.SE

    Scrivo sotto il codice e mi da errore 1004
    Che caspita sbaglio?
    Saluti
    Luca
     
    Sub Macro1()
    
    Range("B38").Value = "=COUNTIF(S3:S800,<2)"
    
    End Sub



  • di alfrimpa (utente non iscritto) data: 20/01/2015 18:40:39

    Ciao

    Prova utilizzando la proprietà FormulaLocal.

    Alfredo
     
    Sub macro1()
    Range("B38").FormulaLocal = "=COUNTIF(S3:S800, > 2)
    End sub






  • di Mister_x (utente non iscritto) data: 20/01/2015 19:13:40

    ciao

    Range("B38") = Application.CountIf(Range("S3:S800"), " < 2")

    ciao
     
    Range("B38") = Application.CountIf(Range("S3:S800"), " < 2")






  • di Walter Lagnocca (utente non iscritto) data: 20/01/2015 19:21:31

    Un caro saluto ad Alfredo;
    l'idea di utilizzare la proprietà FormulaLocal mi sembra buona, ma, la struttura credo debba essere:

    W Lagnocca
     
    Range("B38").FormulaLocal = "=CONTA.SE(S3:S800;" & Chr(34) & "<2" & Chr(34) & ")"



  • di alfrimpa (utente non iscritto) data: 20/01/2015 19:50:41

    Ciao Walter

    È vero che sono influenzato (e quindi imbottito di tachipirina) per cui non ho pensato all'ovvia soluzione proposta da Mister_x (che saluto) ma prima di "pubblicare" la mia risposta ho fatto una veloce verifica su internet ed ho trovato una formula esattamente "identica" (io l'ho solo adattata) alla mia.

    Alfredo





  • di Walter Lagnocca (utente non iscritto) data: 21/01/2015 13:43:14

    Con il sincero augurio che nessuno se ne abbia a male, una precisazione.

    Non conosco a fondo il modus operandi di Luca, in ogni caso, la Funzione:
    - Application.CountIf
    è sostanzialmente diversa da:
    - FormulaLocal

    Application.CountIf inserisce i "B38" un Valore assoluto.

    FormulaLocal inserisce i "B38" una Funzione.

    Questo comporta che ad ogni variazione di un Valore in "S3:S800", con Application.CountIf il Valore in "B38" dovrà essere necessariamente ricalcolato; mentre con FormulaLocal, "B38", si aggiorna in modo dinamico.
    Poi, ovviamente, dipende da quello che Luca desideri ottenere.

    A margine di quanto sopra, per Excel 2013, la Funzione:
    - Range("B38") = Application.CountIf(Range("S3:S800"), " < 2")
    dovrebbero essere modificata in:
    - Range("B38") = Application.CountIf(Range("S3:S800"), "<2")
    (" < 2" senza spazzi intermedi)

    Tanto è dovuto per opportuna chiarezza.


    W Lagnocca



  • di Mister_x (utente non iscritto) data: 21/01/2015 14:43:17

    ciao Walter

    gli spazi gli inserisco io perche' alle volte il softuer ,quando metto il segno di <
    mi elimina tutto quello che viene dopo,
    quindi su un appunto datomi da V.F. di inserire uno spazio per ovviare a questi, quando copio la sub() dove vi e' il segno di < aggiungo spazi
    PS normalmente il VB quando si riporta col copiaincolla tutta la sub() pensa lui a eliminare questi, altre volte no
    in questo caso bisogna procedere manualmente
    vedro in seguito di inserire note a riguardo

    ciao





  • di Walter Lagnocca (utente non iscritto) data: 21/01/2015 16:53:09

    Ciao, Mister_x;
    il mio non voleva essere un'appunto, non mi permetterei mai; ho già avuto modo di apprezzare i Tuoi interventi in altre circostanze.

    Pensavo solo che nella versione Excel 2013 fosse necessario togliere gli spazzi contrariamente a versioni di Excel più datate e ho voluto partecipare questo mio dubbio agli Utenti che, come me, utilizzano Excel 20113.

    Una buona serata.

    Walter Lagnocca



  • di Vecchio Frac data: 21/01/2015 18:23:51

    cit. Mister_x: " il softuer "
    ---> LOL ^_^

    Il problema con le due parentesi angolari (o segni di minore e maggiore) "<" e ">" si verifica (e neanche sempre) nella parte di questi post riservata all'inserimento di codice, essendo preformattata per visualizzare il testo con un certo carattere e con uno sfondo giallo, il parser crede di dover interpretare i suddetti simboli come facenti parte di tag HTML e quindi a volte li codifica e a volte no. Ecco il consiglio di pre-post-mettere degli spazi a quei simboli (ma solo per il riquadro di inserimento codice e, ripeto, neanche sempre). Problema già noto a patron Mauro ma risulta particolarmente difficile metterci mano: perciò pazienza, sappiamo che il problema c'è e se si verifica occorre riscrivere la riga incriminata con l'accorgimento degli spazi aggiuntivi :)