2 problemi



  • 2 problemi
    di Raffaele_53 data: 01/10/2015 21:13:30

    Ciao a tutti

    1) Mi è capitato proprio ieri sera un problema con una formula di oltre 1000 caratteri.
    Faccio un esempio semplice. Se scrivo in G2=A2+G$1 e poi trascino giù e destra le formule si adeguano da sole. Alcune volte però non posso farlo (causa le difficoltà della formula).
    Ultimamente in questi casi "il testo" lo scrivo tramite VBA, pertanto nelle varie celle ho un testo simile a "A2+G$1". La cosa che non riesco e mettergli il segno = davanti al testo per farla diventare una vera formula.

    2) Faccio un esempio. Il 2 quante volte ci stà nel 10. Risposta 5 volte
    Ora se prendo per esempio 2 e 4 (come se avessi 2 mele su 4)
    Posso dedure che il 4 sia = 10 e il 2 sia uguale a 5 (in realta vorrei proprio ottenere 2/4)
    Domanda dal numero 1 come posso ottenere questo valore 1/2, conoscendo solo questo dato 0,5 ?
    Lo fatta semplice, perchè in realta sono numeri simili a 0,1212121212 e mi serve conoscere anche il secondo.

    Grazie a Voi



  • di isy data: 01/10/2015 21:58:59

    Ciao Raffaele_53

    Titolo: 2 problemi
    Inserisci Due distinte Discussioni, se hai un esempio allega i file



  • di Raffaele_53 data: 01/10/2015 22:29:28

    Ciao isy
    In merito al 1° quesito, ho creato una formula e avrei dovuto usarla per 254 celle.
    Ogni formula è differente dalle altre.
    Tramite VBA sono riuscito a scriverle tutte (in solo testo), alla fine sono andato per ogni cella a mettergli il segno = davanti.
    Esempio in V3, come si fà a mettere il segno = davanti al "testo scritto" tramite VBA?

    Per il 2° quesito sarebbe solo un'operazione matematica (non serve allegato) che si riferisce al post "Esercizio 17: frazioni"



  • di Mister_x (utente non iscritto) data: 01/10/2015 22:59:13

    ciao Raffaele

    usato questo sistema per inserimento formule poche volte, comunque devi passarlo come stringa
    vedi sub() postata che mette in cella G2 la formula =$A$1+$G$1
    da come vedi A1= R1C1 mentre per G1=R1C7 quindi numero di riga e numero di colonna
    a questo punto puoi variare a tuo piacimento con cicli For
    PS se vuoi usare anche le funzioni queste le devi scrivere in inglese: stessa funzione ma con
    =SOMMA($A$1+$G$1) .. Fun = "=SUM(R1C1+R1C7)"
    ciao
    per la seconda tento di capire cosa vuoi ottenere


     
    Sub ScriviFun()
    
    Dim Fun As String
    Fun = "=R1C1+R1C7"       '''''Fun = "=SUM(R1C1+R1C7)"
    Worksheets("Foglio1").Range("G2").FormulaR1C1 = Fun
       
    End Sub






  • di Raffaele_53 data: 02/10/2015 00:12:27

    Grazie Mister_x
    Andava bene se scrivevo la formula completta (ma sono tutte differenti)

    In realta ho scritto solo la prima formula, poi ho tolto il segno uguale e l'ho ricopiata in ogni cella.
    A quest punto ho creato alcune macro con doppio FOR, la prima cambiava la riga/colonna con Replace(cella,"SE(C3<>","SE(" & x & y & "<>") >>>una funtion che in base al numero x mi tramutava in carattere lettera
    Seconda che mi modificava la riga della formula C3:R3 diventava C4:R4 ecc ecc
    Terza che mi modificava la colonna della formula C3:C18 diventava D3:D18 ecc ecc
    L'ultima che modificava il range C3:F6 di riferimento, ex G3:J6 ecc ecc

    Ha questo punto dovevo solo mettergli il segno = davanti (ho provato in diversi modi, nisba).
    Ho dovuto farlo a mano, però per 256 celle.



  • di Luca73 data: 02/10/2015 09:32:16

    Ciao
    ma se anzichè togliere l' =, copiare e poi far partire la macro
    secondo me potevi direttamente far partire la macro che leggeva la formula, la modificava e la inseriva in una seconda cella direttamente come formula.
    Riguardo a quanto ha scritto Mister_X ti faccio notare che esistono almeno 4 modi di inserire una formula che sono
    .Formula (una la codifica A1 in inglese)
    .FormulaLocal (una la codifica A1 nella linga del tuo Excel (per me italiano))
    .FormulaR1C1 (una la codifica R1C1 in inglese)
    .FormulaR1C1Local (una la codifica A1 nella linga del tuo Excel (per me italiano))

    Per vedere le differenze fa girare la seguente macro (Formula) con una formula qualsiasi in A1

    Nel Tuo Caso, inoltre to sarebbe bastata una riga di codice tipo DaTestoAFormula per trasformare il testo in formula

    Ciao
    Luca

     
    Sub Formula()
    MsgBox "Formula:" & Range("A1").Formula
    MsgBox "Formula:" & Range("A1").FormulaLocal
    MsgBox "Formula:" & Range("A1").FormulaR1C1
    MsgBox "Formula:" & Range("A1").FormulaR1C1Local
    End Sub
    
    Sub DaTestoAFormula()
    Range("A1").FormulaLocal = "=" & Range("A1").Text
    End Sub






  • di Raffaele_53 data: 02/10/2015 12:37:56

    Grazie Luca73
    Il DaTestoAFormula era ciò che avevo bisogno.
    Nel seno di poi avrei fatto come dicevi Tu, mi è venuta così perchè non ero sicuro e volevo vedere fisicamente le modifiche fatte sulle stringhe

    Grazie a tutti.