[Excel] Alternativa formula R1C1

Anonimo
2011-04-04T07:24:23+00:00

Buon giorno a tutti.

Volevo chiedere se esiste un'alternativa alla formula R1C1 che vi riporto qui sotto:

Set sh1 = .Worksheets("Foglio1")

Set sh2 = .Worksheets("Cataste")

With sh1

.Range("J2:J" & sh1.Cells(Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=IF(Cataste!R5C2=""PRO 180"",(RC[-3]*0.04)*11+RC[-2], IF(Cataste!R5C2=""PRO 180 a"",(RC[-3]*0.04)*11+RC[-2], IF(Cataste!R5C2=""PRO 225"",(RC[-3]*0.06)*11+RC[-2], IF(Cataste!R5C2=""PRO 225 a"",(RC[-3]*0.06)*11+RC[-2], IF(Cataste!R5C2=""S 100/225"",(RC[-3]*0.06)*8.5+RC[-2],0)))))"

End With

Ve lo chiedo perchè questa formula non è ancora completa, nel senso che è composta da parecchi IF. Le condizioni If che ho inserito per adesso sono solo 5:

PRO 180        RC[-3]*0.04

PRO 180 a     RC[-3]*0.04

PRO 225        RC[-3]*0.06

PRO 225 a     RC[-3]*0.06

S 100/225      RC[-3]*0.06

Ho la necessità di aggiungerne almeno un'altra quindicina.

Come posso fare? devo continuare così oppure mi consigliate un'altro metodo?.

Grazie a tutti

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
2011-04-04T09:44:58+00:00

Grazie Mauro per la risposta.

Cerco di spiegarti cosa devo fare:

<cut>

Non so se sono riuscito a spiegare come funziona il tutto. So che è complicato. Ti prego fammi sapere se sono riusito a farti capire come funziona altrimenti chiedimi pure.

Grazie intanto per il tuo tempo

In vb abbiamo il costrutto: Select Case che è più leggibile di If Then Else. Vedi se questo comincia ad aiutarti:

Public Sub m()

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        Select Case .Range("R8").Value

            Case "PRO 180", "PRO 180 a"

                .Range("J2").Value = .Range("G2").Value * 0.04 * 11 + .Range("H2").Value

            Case "225", "225 a"

                .Range("J2").Value = .Range("G2").Value * 0.06 * 11 + .Range("H2").Value

            'altri case

        End Select

    End With

    Set sh = Nothing

End Sub

Guida del vb di Excel, Select Case.

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-04-04T15:08:17+00:00

    Grazie Mauro per l'ottimo siggerimento. Adesso il mio problema resta sempre lo stesso: capire come fargli fare il calcolo per tutte le righe. Faccio delle prove e ti faccio sapere.

    Grazie mille intanto

     

    Siamo(quasi) sempre qui se hai bisogno. Buon lavoro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-04-04T14:13:31+00:00

    Grazie Mauro per l'ottimo siggerimento. Adesso il mio problema resta sempre lo stesso: capire come fargli fare il calcolo per tutte le righe. Faccio delle prove e ti faccio sapere.

    Grazie mille intanto

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-04-04T08:51:37+00:00

    Grazie Mauro per la risposta.

    Cerco di spiegarti cosa devo fare:

    • Foglio Cataste cella B5 = testo (ad esempio: "PRO 180"; "PRO 450 a"; "ECO 225"; ecc... ci possono essere una ventina di testi diversi.
    • Foglio 1 la formula nel Range J2:J = in base al testo in cella B5 di Cataste il calcolo cambia di volta in volta, ad esempio:

    SE   Cataste!B5 = "PRO 180"   allora   (G2 * 0.04) * 11 + H2

    SE   Cataste!B5 = "PRO 180 a"   allora   (G2 * 0.04) * 11 + H2

    SE   Cataste!B5 = "PRO 225"   allora   (G2 * 0.06) * 11 + H2

    SE   Cataste!B5 = "PRO 225 a"   allora   (G2 * 0.06) * 11 + H2

    SE   Cataste!B5 = "PRO 270"   allora   (G2 * 0.09) * 11 + H2

    SE   Cataste!B5 = "PRO 270 a"   allora   (G2 * 0.09) * 11 + H2

    SE   Cataste!B5 = "ECO 360"   allora   (G2 * 0.16) * 10 + H2

    SE   Cataste!B5 = "ECO 450"   allora   (G2 * 0.25) * 10 + H2

    SE   Cataste!B5 = "S 100/225"   allora   (G2 * 0.06) * 8.5 + H2

    SE   Cataste!B5 = "S 140/315"   allora   (G2 * 0.13) * 8.5 + H2

    Il mio scopo è quello di inserire tutte e 23 le opzioni nella macro utilizzando o la formula R1C1 o qualsiasi altro metodo. Le opzioni si possono dividere in 4 categorie. Quando c'è scritto:

    • PRO "n" : sono 7
    • PRO "n" a : sono 7
    • ECO : sono 7
    • S : sono 2

    Un  valore che "cambia poco" è quel "G2 * 0.25" nel senso che, a parte le scritte PRO o ECO o S, se c'è scritto:

    180 il calcolo è sempre G2 * 0.04

    225 il calcolo è sempre G2 * 0.06

    270 il calcolo è sempre G2 * 0.09

    315 il calcolo è sempre G2 * 0.13

    360 il calcolo è sempre G2 * 0.16

    405 il calcolo è sempre G2 * 0.21

    450 il calcolo è sempre G2 * 0.25

    Per quanto riguarda la seconda parte della formula: * 11 + H2

    • il valore 11 riguarda la scritta PRO
    • il valore 10 riguarda la scritta ECO
    • il valore 8.5 riguarda la scritta S
    • H2 è fisso nel senso che si deve prendere come valore la riga corrispondente. (H2, H3, H4, ecc. come anche G2, G3, G4, ecc.)

    Non so se sono riuscito a spiegare come funziona il tutto. So che è complicato. Ti prego fammi sapere se sono riusito a farti capire come funziona altrimenti chiedimi pure.

    Grazie intanto per il tuo tempo

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2011-04-04T08:20:07+00:00

    Buon giorno a tutti.

    Volevo chiedere se esiste un'alternativa alla formula R1C1 che vi riporto qui sotto:

    <cut>

    Ve lo chiedo perchè questa formula non è ancora completa, nel senso che è composta da parecchi IF.

    <cut>

    Non ho capito quasi nulla. Personalmente, se all'interno di una cella devo inserire da vb un valore in base a n condizioni, utilizzo vb e non una funzione di Excel. primo perchè posso valutare tutte le condizioni che voglio(alcune versioni di Excel si fermano a 7 nidificazioni), secondo perchè ci sono strade diverse che seguono un'altra logica, terzo perchè la sintassi risulta più comprensibile.

    Tu cosa devi fare esattamente? Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento