2017-10-13 22 views
0

Dans une base de données Google Sheets, j'ai une formule que j'ai créée afin d'attribuer un numéro de référence à une série de sociétés.Incrément de nombre dans la formule Google Sheets

Chaque entreprise devrait avoir son numéro unique sous la forme de "RET00XX" où XX représentera le numéro d'entreprise unique. Je voudrais que ces numéros soient séquentiels, en commençant par 1 et en passant par +1 après cela. Chaque fois qu'une nouvelle société est insérée dans la base de données, la formule doit pouvoir lui attribuer un numéro de référence. Il devrait également être en mesure de vérifier si la société existe déjà dans la base de données et, le cas échéant, lui attribuer automatiquement le numéro de référence unique de l'entreprise, au lieu d'en créer un nouveau.

Les noms de sociétés sont dans les cellules de la colonne B.

Ceci est la formule I ont construit (par exemple, de l'une à la ligne 2):

=ARRAYFORMULA(IF($B2<>"",IF((COUNTIF($B$1:$B1,$B2)>0),INDEX($A$1:$R2,MATCH($B2,$B$1:$B1,0),12),CONCATENATE("RET00",ROW($B2))),"")) 

Les étapes nécessaires sont:
1 - Il vérifie que la colonne B de la ligne correspondante n'est pas vide;
2 - Avec la fonction COUNTIF, vérifie que la société n'existe dans aucune des lignes précédentes;
3 - Si la société existe, elle attribue le numéro de référence correspondant via la fonction INDEX;
4 - Si la société n'existe pas, elle attribue à l'entreprise un nouveau numéro de référence avec les fonctions CONCATENATE et ROW.

La formule fonctionne largement, bien qu'il y ait quelques problèmes. Les utilisateurs qui ajoutent à cette base de données ont l'habitude d'ajouter des entrées en insérant des lignes au milieu de la base de données. Ainsi, en raison de la façon dont la formule est construite, les codes de référence uniques de l'entreprise changent chaque fois que cela se produit. Je crois que c'est en partie dû au fait que j'utilise une fonction ROW.
En outre, étant donné que de nouvelles lignes sont insérées au milieu de la base de données, la formule doit pouvoir vérifier que la société existe déjà non seulement en passant par toutes les lignes précédentes, mais également par toutes les lignes (si une nouvelle ligne est insérée, formule ne vérifiera que les lignes précédentes, lorsque la société pourrait être dans les rangées après la nouvelle).

Comment attribuer des nombres séquentiels dans une formule sans référence à ROW? Aussi, comment puis-je m'assurer que la feuille de calcul vérifie pour toutes les lignes de la colonne B au lieu de seulement celles avant la ligne insérée?

Merci

Répondre

2

Réponse courte

Utilisez Google Apps Script

Explication

Utilisation des fonctions de feuille de calcul pour définir une carte d'identité sur une feuille de calcul en direct utilisé comme base de données est très risquée, car les valeurs seront recalculé lorsque des modifications sont apportées au contenu de la feuille de calcul. Au lieu d'utiliser une formule, utilisez un script pour ajouter une "valeur fixe" au lieu d'utiliser une formule. Les scripts peuvent être appelés automatiquement sur des événements tels que les modifications de cellules et l'insertion de lignes, à l'aide d'un menu ou d'un panneau latéral personnalisé, à partir de l'éditeur de script ou de déclencheurs temporels.

Le Q suivant & A de Web Applications montre plusieurs façons de définir un numéro séquentiel:

Cette autre de pourrait SO aussi être utile: