Formula con array?

Anonimo
2016-07-16T08:34:09+00:00

Avrei un problema relativo aduna formula inserita in un evento Worksheet_SelectionChange che mi cerca vero/falso in una lista di dati inseriti in una colonna di altro foglio:

=SE(E($A168>0;$B168>0;H168<>"CSI";H168<>"ACSI";H168<>"AICS";H168<>"ASC";H168<>"ACS";H168<>"ARCI";H168<>"ASI";H168<>"UNLAC";H168<>"FRA");CERCA.VERT($E168;Categorie!$B:$G;4;0);"")

E' possibile evitare di mettere tutti questi dati da cercare magari con una possibile array?

Vi ringrazio

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
2016-07-16T21:51:07+00:00

Per ottenere lo stesso risultato, a meno di altre soluzioni che non conosco, occorre effettuare un ciclo (la qual cosa potrebbe rallentare un po' la procedura). Eventualmente oltre a disabilitare lo screenupdating potresti impostare il Calculation in manuale e poi reimpostarlo in automatico alla fine.

Dopo Private Sub Worksheet_SelectionChange(ByVal Target As Range) inserisci queste due dichiarazioni:

  Const strCond As String = "{""CSI"",""ACSI"",""AICS"",""ASC""}" '<--- da implementare con le altre condizioni

  Dim rng As Range

al posto di Range("M2:M" & Colonna1).FormulaLocal = "=SE(E($A2>0;$B2>0;H2<>""CSI"";H2<>""ACSI"";H2<>""AICS"";H2<>""ASC"";H2<>""ACS"";H2<>""ARCI"";H2<>""ASI"";H2<>""UNLAC"";H2<>""FRA"");CERCA.VERT($e2;Categorie!$B:$G;4;0);"""")"

Sostituisci con:

  For Each rng In Range("M2:M" & Colonna1)

    rng.FormulaArray = _

    "=IF(AND(RC1>0,RC2>0,RC[-5]<>" & _

    strCond & "),VLOOKUP(RC5,Categorie!C2:C7,4,0),"""")"

  Next rng

queste sono le formule che ottengo:

M2--> {=SE(E($A2>0;$B2>0;H2<>{"CSI";"ACSI";"AICS";"ASC"});CERCA.VERT($E2;Categorie!$B:$G;4;0);"")}

M3--> {=SE(E($A3>0;$B3>0;H3<>{"CSI";"ACSI";"AICS";"ASC"});CERCA.VERT($E3;Categorie!$B:$G;4;0);"")}

M4--> {=SE(E($A4>0;$B4>0;H4<>{"CSI";"ACSI";"AICS";"ASC"});CERCA.VERT($E4;Categorie!$B:$G;4;0);"")}

....

Fai una prova.

ciao

La risposta è stata utile?

0 commenti Nessun commento

20 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-07-18T21:08:08+00:00

    Verissimo. Grazie e alla prossima

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-07-18T20:22:29+00:00

    Di niente ;) 

    Ah attenzione che hai mantenuto questa riga:

    Application.ScreenUpdating = False

    Ma è da eliminare perché lo ScreenUpdating lo blocchi già prima.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-07-18T19:59:00+00:00

    Sei stato veramente gentile e soprattutto illuminate.

    Il tutto funziona regolarmente e finalmente ci ho capito qualche cosa.

    Ho messo un altro tassello nell'aggiornare il programma che necessita sempre di qualche tocco innovativo.

    Ti ringrazio. Ciao da Mauro

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-07-18T19:26:09+00:00

    Vedi la mia risposta che ha preceduto questa tua di pochi secondi :-)

    La risposta è stata utile?

    0 commenti Nessun commento