Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
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