2017-04-12 1 views
-2

J'ai besoin d'obtenir toutes les formules Excel de la feuille de calcul. J'utilise Range.SpecialCells et itération à travers chaque cellule pour obtenir la formule et c'est vraiment lent. Y at-il une meilleure solution pour obtenir seulement des formules comme liste de cordes?Lire Formules Excel

Exemple de code:

Excel.Worksheet worksheet = Workbook.Worksheets["Sheet1"]; 
Range range = worksheet.UsedRange.SpecialCells(xlCellTypeFormulas); 
foreach(Cell cell in range.Cells) 
{ 
    string formula = cell.formula.ToString(); 
    //some code 
} 
+0

est donc pas un s'il vous plaît le service d'écriture de code fournir un problème spécifique avec un [minimal, Exemple complet et vérifiable] (http://stackoverflow.com/help/mcve) –

+0

@MattRowland mis à jour avec du code. –

+0

Je ne vois pas pourquoi cela devrait être lent. Êtes-vous sûr que le problème provient de l'extrait que vous avez fourni? –

Répondre

0

Vous pouvez essayer d'utiliser la propriété range.formula.

Par exemple:

Dans la cellule A3, la formule de la cellule est '= DATE (D3, C3,1)'

dans la cellule B3, la formule de la cellule est '= A3'

Avec le code:

Range r = activeWorksheet.get_Range("A3","B3"); 
var c = r.Formula; 

la variable c contiendra un peu comme une liste des cellules s spécifié dans cette gamme et leur formule respective.

sortie de C:

[1,1] = "= DATE (D3, C3,1)"

[1,2] = "= A3"

0

Ceci est une façon totalement différente de le faire, mais il peut vous aider,

Il suffit d'appuyer sur CRTL + `(backquote), cela rendra toute la formule visible dans la feuille Excel. Vous pouvez ensuite rechercher ce que vous voulez ou copier coller dans un fichier txt pour effectuer des recherches et des modifications.

Si vous êtes à la recherche de certaines chaînes dans une formule, vous pouvez utiliser CTRL + F, regard sélectionnez dans les formules et rechercher les chaînes