Riferimenti all'interno di una formula
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Questa funzione permette di estrarre i riferimenti a celle o ad intervalli presenti in una formula.
In VBA sono presenti due funzioni predefinite per estrarre i riferimenti, sono:
  1. DirectPrecedents: crea un range con tutte le celle o riferimenti da cui deriva la cella, il corrispondente VBA della funzione "Trova celle precedenti"
  2. Precedents: il range comprende anche i rifeirmenti presenti in eventuali riferimenti diretti
entrambe però restituiscono i riferimenti solo se sono presenti nello stesso foglio.

La funzione qui sotto estrae tutte le celle da cui deriva (direttamente) la formula in esame, il risultato è un vettore che contiene i testi dei riferimenti.
I riferimenti restituiti sono ad esempio:
  1. A2, $A$2, $A2, A$2
  2. A2:C4, $A$2:$C$4, $A2:$C4, A$2:C$4
  3. B:C, $B:$C
  4. 2:2, $2:$2
  5. Foglio1!$C$3
  6. [Cartel1.xlsx]Foglio1!$C$3
  7. 'C:\...\...\[Cartel1.xlsx]Foglio1'!$C$3

Function Mf_Riferimenti_da_Formula(Formula As String) As Variant
  Dim arrRes() As String
  ReDim arrRes(0)
  arrRes(0) = vbNullString
  
  Dim result As Object
  Dim r As Range
  Dim testExpression As String
  Dim objRegEx As Object

  Set regExp = CreateObject("VBScript.RegExp")
  With regExp
    .Global = True
    .MultiLine = True
    .IgnoreCase = True
  End With

  P = ""
  P = P & "(['].*?['!])?" ' 'D:\Parser\[Cartel1.xlsx]Foglio1'!
  P = P & "([\[A-Z0-9_\.\]]+[!])?" ' [Cartel1.xlsx]Foglio1! ,Foglio1!
  P = P & "("
  P = P & "\$?[A-Z]+\$?[0-9]+:\$?[A-Z]+\$?[0-9]+|" ' A1:B3 , $A1:$B$3
  P = P & "\$?[A-Z]+:\$?[A-Z]+|" ' A:A , $B:$B
  P = P & "\$?[A-Z]+\$?[0-9]+|" ' A2,$A2
  P = P & "\$?[0-9]+:\$?[0-9]+" ' 2:3
  P = P & ")"
  regExp.Pattern = P
  
  If (regExp.test(Formula)) Then
    Set Matches = regExp.Execute(Formula)
    If (Matches.Count > 0) Then
      ReDim arrRes(0 To Matches.Count - 1)
      i = 0
      For Each Match In Matches
        arrRes(i) = Match.Value
        i = i + 1
      Next Match
    End If
  End If
  Mf_Riferimenti_da_Formula = arrRes
End Function
 

data4idea srls - PIva 01881000937 - info@data4idea.it