web-dev-qa-db-fra.com

Confirmez que les valeurs d'une colonne sont alternées

J'ai une colonne, appelée A, d'environ 1500 cellules. Chaque cellule contient "a" ou "b". Pour l'essentiel, As et Bs alternent, mais il y a parfois des valeurs répétitives.

Un exemple de A1:A20 pourrait être le suivant: {a,b,a,b,a,b,a,b,a,b,a,b,b,a,b,a,b,a,a,b}. (Dans mes données réelles, ces valeurs peuvent être différentes, mais il est garanti que la liste complète des cellules commence par "a" et se termine par "b").

Dans les colonnes B et C, j'ai d'autres valeurs (dans ma feuille de calcul réelle, ce sont des dates). Chaque "a" ou "b" dans la colonne A correspond à deux dates dans la même ligne (une dans la colonne B et une dans la colonne C).

Mon objectif est de supprimer les doublons As et Bs (de la manière décrite ci-dessous), ainsi que les dates associées à ces valeurs de doublon. Je devrais me retrouver avec une liste alternant As et Bs, appariés aux mêmes dates que dans les données d'origine (toutes les colonnes se déplacent de manière synchrone).

Les règles de suppression des doublons sont les suivantes:

  • S'il y a deux "a" consécutivement, supprimez le premier "a".
  • S'il y a deux "b" consécutifs, supprimez le second "b".
  • Notez qu'il peut y avoir plus de deux As et Bs consécutifs. Dans un tel cas, les deux premiers devraient être évalués et un enlevé, puis répéter l'opération pour les deux suivants, etc.

Je pense que cela pourrait être mieux réalisé avec un filtre (peut-être une requête?), Mais je n’étais pas capable de le faire fonctionner ou même de paraître proche. En utilisant l'exemple ci-dessus, A13 (et le B13:C13 correspondant) et A18 (et le B18:C18 correspondant) devraient être supprimés. Le A1:A20 résultant (après que les valeurs ci-dessous ont été décalées vers le haut) devrait indiquer {a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,...}. Toutes les valeurs restantes de la colonne A doivent toujours être associées à la valeur d'origine de la colonne B.

Comme solution semi-alternative, serait-il possible d'écrire un script de formatage conditionnel pour mettre en évidence les valeurs en double? Il n’est pas trop difficile de supprimer manuellement les valeurs répétées (il en existe très peu), mais il est très difficile de dire lesquelles supprimer sans qu’elles soient surlignées. J'ai essayé de mettre en évidence "a" une couleur et "b" une autre pour rechercher des motifs non alternés, mais il était toujours difficile de les reconnaître rapidement.

1
Kwilinsi

cela peut être fait avec la force brute :)

voici la feuille: https://docs.google.com/spreadsheets/d/

vous pouvez mettre des calculs de D à AE en séparer feuille ou tout simplement cacher ces colonnes

ofcourse AF (respectivement AG, AH) peut être déplacé vers le bas pour la population. sélectionnez AF2: AF5 et faites glisser le carré bleu. vous pouvez également supprimer la moitié de ces colonnes - je les ai laissées ici, afin que vous puissiez voir le processus complet d'obtention du résultat final

0
user0

Voici un exemple de fonction personnalisée que vous pouvez apprendre, rechercher, déboguer et modifier à votre guise:

function DupeDestroyX(range,a,b,index) {
  var j = index-1 || 0;
  for(var i=0;i<(range.length-1);i++){ //loop over all entries
    try {
      if(range[i][j]==a && range[i+1][j]==a) { // if current entry is a and next entry is also a
        range.splice(i,1); // delete current entry    
        if (range[i+1][j]==a) {i--} //If next entry is also a (after deleting),loop repeat this iteration
      }
      if(range[i][j]==b && range[i+1][j]==b) {
        range.splice(i+1,1); //delete next entry
        if (range[i+1][j]==b) {i--}
      }
    }
    catch(e) {continue;}
  }
  return range;
}

Usage:

=DupeDestroyX(A1:C,"a","b")
0
TheMaster