VBA FormulaArray

Anonimo
2021-01-09T11:18:24+00:00

Salve a tutti, vorrei realizzare con VBA una formula matriciale da applicare al range di una tabella.

Ho provato a registrare una macro ma mi da errore poiché ho superato il limite 255 caratteri della proprietà FormulaArray.

Chiedo come sia possibile realizzare la macro con la proprietà FormulaArray?

In allegato il link con il file.

Grazie e buona giornata.

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-01-09T22:47:26+00:00

Ciao Antonino,

Salve a tutti, vorrei realizzare con VBA una formula matriciale da applicare al range di una tabella.

Ho provato a registrare una macro ma mi da errore poiché ho superato il limite 255 caratteri della proprietà FormulaArray.

Chiedo come sia possibile realizzare la macro con la proprietà FormulaArray?

In allegato il link con il file.

Prova il seguente approccio:

'========>>

Option Explicit

'-------->>

Public Sub F_Array()

    Dim WB As Workbook

    Dim SH As Worksheet

    Dim Rng As Range

    Const ¬1 As String = "IF(TU_020<>"""",(TU_020/TU_004)*LOG(TU_020/TU_004),0)"

    Const ¬2 As String = "IF(TU_023<>"""",(TU_023/TU_004)*LOG(TU_023/TU_004),0)"

    Const ¬3 As String = "IF(TU_031<>"""",(TU_031/TU_004)*LOG(TU_031/TU_004),0)"

    Const ¬4 As String = "IF(TU_032<>"""",(TU_032/TU_004)*LOG(TU_032/TU_004),0)"

    Const ¬5 As String = "IF(TU_033<>"""",(TU_033/TU_004)*LOG(TU_033/TU_004),0)"

    Const sFoglio As String = "Calcolo"

    Const sIntervallo As String = "K5:W149"

    Set WB = ThisWorkbook

    Set SH = WB.Sheets(sFoglio)

    Set Rng = SH.Range(sIntervallo)

    With Rng

         .FormulaArray = _

        "=+IF(-1*(" & 1111 & "+" & 2222 & "+" & 3333 & "+" & 4444 & "+" & 5555 & ")=0,""-"",-1*(" & 1111 & "+" & 2222 & "+" & 3333 & "+" & 4444 & "+" & 5555 & "))"

        .Replace 1111, ¬1

        .Replace 2222, ¬2

        .Replace 3333, ¬3

        .Replace 4444, ¬4

        .Replace 5555, ¬5

    End With

End Sub

'<<========

===

Regards,

Norman

Immagine

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-01-10T11:44:38+00:00

    Ciao Antonino,

    Ciao Norman,

    ti ringrazio per la tua proposta,

    Va bene!

    Ti ringrazio per il cortsese riscontro.

    Alla prossima

    ===

    R|egards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-01-10T10:54:43+00:00

    Ciao Norman,

    ti ringrazio per la tua proposta,

    Va bene!

    Buona giornata.

    A.

    La risposta è stata utile?

    0 commenti Nessun commento