Devo riempire un area con dei valori provenienti da una matrice (inizialmente bastava segnalare con delle X ma poi...)
Nel foglio c'era la formula sign che era ripetuta migliaia di volte su tutta l'area appesantendo il file cosicché con una macro metto la formula che mi genera l' X ma poi lo sostituisco con il valore oppure con cella vuota.
La macro funziona ma mi sembra che sia un "doppio lavoro" e vorrei con qualche tuo consiglio mettere direttamente il valore della routine contenuta in questa macro:
- Codice: Seleziona tutto
Sub CreaMatrX()
Worksheets("DATI2").Select
Ue = Worksheets("DATI2").Range("I" & Rows.Count).End(xlUp).Row
Sign = "=IF(OR(RC10=R1C,RC11=R1C,RC12=R1C,RC13 =R1C,RC14=R1C,RC15=R1C,RC16=R1C,RC17=R1C,RC18=R1C,RC19=R1C,RC20=R1C,RC21=R1C,RC22=R1C,RC23=R1C,RC24=R1C,RC25=R1C, RC26=R1C,RC27=R1C,RC28=R1C,)=TRUE,""X"","""")"
For I = 2 To Ue
For Col = 29 To 118
Cells(I, Col).Select
ActiveCell.FormulaR1C1 = Sign
If ActiveCell.Value = "X" Then
XVal = Cells(1, Col).Value
With Worksheets("DATI2").Range("I" & I & ":AB" & I)
Set c = .Find(XVal, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
RC = Worksheets("DATI2").Cells(I, c.Column + 110)
Worksheets("DATI2").Cells(I, Col).Value = RC
Do
Set c = .FindNext(c)
If firstAddress = c.Address Then Exit Do
RC = Worksheets("DATI2").Cells(I, c.Column + 110)
Worksheets("DATI2").Cells(I, Col).Value = RC
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Else
Worksheets("DATI2").Cells(I, Col).Value = ""
End If
Next Col
Next I
End Sub
Cosa mi consigli?
Ciao