-1
votes

La formule est de plus de 8 192 caractères

Il n'y a pas de version courte de cela, mais je ferai de mon mieux: J'ai une formule qui apporte une entrée à partir de 4 dérivations et 3 cellules qui remplissent une colonne pour donner une sortie sur chaque ligne. la fonction est principalement concaténée () de sorte qu'il faut beaucoup de place pour combiner du texte et des références et de remplacer () s.

Ma première idée était de briser la fonction entre plusieurs cellules et de faire des appels vers ces cellules, mais comme cela est conçu pour combler les colonnes (telles que 200 lignes ou plus), j'aurais besoin de plusieurs colonnes exécutant plusieurs calculs et mon objectif est de consolider. J'ai essayé d'utiliser la fonction d'évaluation () dans le cadre d'un nom défini, mais qui a également une limite de taille (c'est vraiment court).

Ma deuxième idée était de briser la fonction dans ces nombreuses colonnes , mais je veux avoir une cellule pouvant avoir une entrée de données, mais lorsque des données sont entrées sur une feuille différente, il affiche ces données. (Le contraire de l'affichage de la cellule vierge jusqu'à ce que les données soient entrées).

Ainsi, y a-t-il de bonnes options pour une fonction trop longue, ne peut pas être raccourcie et n'utilise pas VBA? J'aimerais avoir une fonction qui est plus "orientée objet" et il suffit de faire référence à ces cellules, mais cela ne transmettra pas mon texte à une autre cellule en tant que "fonction" uniquement en tant que texte "texte".

Meilleur exemple que je peux donner: xxx

(où b1 traitera le texte dans la cellule, non seulement lire le résultat depuis A1 n'a pas de = )


5 commentaires

Très souvent, quand une formule est goupée, il y a une façon différente de faire des choses. Cela pourrait être mieux si vous pouviez Modifiez votre question pour nous faire savoir ce que vous essayez d'accomplir une telle formule. Certains échantillons de données seraient également utiles.


J'ai bien peur que l'exemple soit aussi long que le problème que je possède, ses seulement 4 déclarations si () ni (), mais chacun est de concaténer () une longueur de données et de texte, et chacun utilise plusieurs substituts () afin de supprimer des caractères incorrects de l'entrée. La longueur n'est que le volume de texte pure qui doit être mis en place.


Vous n'avez pas besoin de concaténate (). Au lieu de concaténate (A1, "-", B1) Vous pouvez utiliser A1 & "-" & B1 - qui économisera quelques caractères.


Nettoyer et couper peut se débarrasser de certains de vos personnages au lieu de substituer. Mais cela dépendrait des personnages.


@Paulvoip Vous pouvez toujours jeter la logique pour la concaténation dans une fonction et réduire la sortie de votre formule, mais la performance peut souffrir. Regardez également Textjoin ... cela peut aider. Dépend de la manière dont votre substitut granuleux doit être.


3 Réponses :


0
votes

briser la longue formule en créant des gammes nommées pour des parties de la formule, en utilisant des références relatives et des constantes.

Voici un exemple:

 Entrez la description de l'image ici

Création d'une plage nommée pour la section de substitution avec des références relatives et également pour la constante de texte, il est possible de créer une formule beaucoup plus courte ...:

 Entrez la description de l'image ici

... avec le même résultat:

 Entrez la description de l'image ici

Dans votre exemple, créez une plage nommée pour = si (A2> 2, concaténate (.....)) , en veillant à avoir la cellule cible sélectionnée lorsque vous créez la plage nommée. , de sorte qu'il soit mis à jour correctement lorsque substitué dans la formule longue et rempli.


2 commentaires

Après quelques tentatives, c'était la solution qui a fonctionné. J'ai dû séparer les fonctions répétitives en 11 noms définis différents et 5 d'entre eux étaient des substituts imbriqués. Il semble indirect () des références ne semblaient pas fonctionner; Mais les références standard fonctionnent même entre plusieurs feuilles (avec un certain massage) et tout cela tout en utilisant toujours une standard .xls. Je sais que je n'ai pas posté mon code actuel parce que tout le point est c'était trop long, mais cela semble être compris que vous avez compris et j'apprécie votre point de vue sur celui-ci et c'est ce que je devais passer devant mon bloc de codeurs. Merci


Il a changé ma formule de plus de 9 000 à moins de 2500 caractères.



0
votes

Alternativement créer une fonction définie par l'utilisateur pour effectuer le calcul, puis la formule de feuille de calcul est purement le nom de l'UDF plus la cellule REFS Vous souhaitez utiliser


0 commentaires

0
votes

Merci à tous. C'étaient toutes bonnes idées que je ne pouvais pas trouver dans mes recherches. Transféré est arrivé réel avec la fonction propre (), merci, mais cela n'a pas effacé celui dont j'avais besoin. Et merci à Teylyn pour la pointe sur le recouvrement du nettoyage (), mais je n'ai que 4 de ceux-ci. Je vais essayer une variation sur la solution de Michael, le remplaçant () est la partie la plus effrayante et je vois que son utilisation de Name Manager n'est pas celle que j'ai vue auparavant. (Je n'ai pas pensé que c'était la solution à mon problème, je ne me suis donc pas concentré sur cela.) Je serai sûr de poster un résultat si quelqu'un est intéressé.

sidenote: Voici une copie du caractère que je n'ai pas pu identifier mais compte comme espace et dégage mes données à chaque fois, je devais ajouter ceci à chaque référence que j'ai xxx


3 commentaires

Personne ne peut fournir une solution exacte parce que vous n'avez pas posé une question exacte. Tout ce que nous pouvions fournir était une approche de solution et si mon approche a pu répondre à vos besoins, vous devez la marquer comme la réponse correcte.


Le caractère qui vous cause des problèmes dans vos données est l'espace zéro-largeur. Voir: FileFormat.info/info/unicode/char/200b/index. HTM et en.wikipedia.org/wiki/zero-width_space


Eh bien, vous avez posé une question spécifique: "Y a-t-il une bonne option pour une fonction trop longue, ne peut pas être raccourcie et n'utilise pas VBA?" Et c'est ce qui a été répondu. Votre fonction peut probablement être raccourcie mais nous ne pouvons pas vous aider à raccourcir sans le poser. Même simplement nous dire quels types de personnages que vous essayiez de supprimer auraient aidé.