127 votes

Comment unir des plages dans des feuilles de calcul Google ?

Je veux réunir des plages à partir de n'importe quelle feuille de calcul Google.

L'exemple

Feuille1!A:A

{12, 131, 45}

Feuille2!A:A

{12, 131, 46}

La fonction inconnue

=formula_for_union_range(Sheet1!A:A; Sheet2!:A:A)

devrait retourner

{12, 131, 45, 12, 131, 46}

La question

Comment est-ce possible ?

175voto

mik Points 1266

Il suffit d'utiliser :

={sheet1!a:a; sheet2!a:a}

113voto

Vous pouvez les fusionner en une seule colonne et obtenir les valeurs uniques. Vérifiez la formule suivante :

=UNIQUE({Sheet1!A:A;Sheet2!A:A})

35voto

oshliaer Points 1118

Google Apps script

Et pourtant la question portait sur le script. J'utilise toujours avec succès le code suivant :

function unionRanges(e) {
  var result = [];
  var length = 0;
  var i = 0;
  try {
    for (i = 0; i < arguments.length; i++)
      length += arguments[i].length;
    if (length > 3000) return '#BIGRANGE';
    for (var i = 0; i < arguments.length; i++)
      result = result.concat(arguments[i].filter(function (el) {
        return el.join('').length > 0
      }));
    return result;
  } catch (err) {
    return JSON.stringify(err);
  }
}

Fonctionnalité des feuilles de calcul

Mais, comme indiqué ci-dessus, il est plus facile d'utiliser {} -notation.

={ Sheet1!A1:C10 ; Sheet2!A1:C34 }

Concaténation verticale

={ Range(Cols=N) ; Range(Cols=N) }

Concaténation horizontale

={ Range(Rows=M) , Range(Rows=M) }

Il est possible de combiner

={ { , , } ; { , , } }

Ou quelque chose de plus dur

={{{;;},{;;}};{{;;},{;;}};{{;;},{;;}}}

Essayez quelque chose comme ceci

={
   {{ 1; 2; 3},{ 4; 5; 6}};
   {{ 7; 8; 9},{10;11;12}};
   {{13;14;15},{16;17;18}}
 }

La concaténation horizontale interne n'est pas nécessaire.

={
    { 1; 2; 3},{ 4; 5; 6};
    { 7; 8; 9},{10;11;12};
    {13;14;15},{16;17;18}
}

Dépendances locales des délimiteurs d'arguments

Si votre locale actuelle supporte , comme délimiteur d'argument alors vous devez utiliser ; pour une concaténation verticale et , pour une concaténation horizontale.

Sinon, votre délimiteur d'argument est ; et vous devez utiliser ; y \ (sans espace), respectivement.

Feuille 'Data 1'!A1:C20

|   Name  |    Date   | Sum |
| Ethan   |  3/4/2017 |  31 |
| Logan   |  3/6/2017 |  62 |
| Brian   | 3/26/2017 |  61 |
|   ...   |     ...   | ... |

Feuille 'Data 2'!A1:C20

|  Name   |    Date   | Sum |
| Nathan  | 3/30/2017 |  53 |
| Alyssa  | 3/13/2017 |  72 |
| John    | 3/24/2017 |  79 |
| Megan   | 3/16/2017 |  10 |
|   ...   |     ...   | ... |

Concaténation

Concaténation verticale

={'Data 1'!A1:C20;'Data 2'!A2:C20}

Résultat

|  Name  |    Date   | Sum |
| Ethan  |  3/4/2017 |  31 |
| Logan  |  3/6/2017 |  62 |
| Brian  | 3/26/2017 |  61 |
| ...    |       ... | ... |
| Nathan | 3/30/2017 |  53 |
| Alyssa | 3/13/2017 |  72 |
| John   | 3/24/2017 |  79 |
| ...    |       ... | ... |

Concaténation horizontale

={TRANSPOSE('Data 1'!A1:C20),TRANSPOSE('Data 2'!A2:C20)}

Résultat

| Name |   Ethan  |   Logan  |   Brian   | ... |   Nathan  |   Alyssa  |    John   |
| Date | 3/4/2017 | 3/6/2017 | 3/26/2017 | ... | 3/30/2017 | 3/13/2017 | 3/24/2017 |
| Sum  |       31 |       62 |        61 | ... |        53 |        72 |        79 |

En savoir plus Comment concaténer des plages dans les feuilles de calcul Google ?

21voto

the_prole Points 175

Bien qu'un script puisse faire cela facilement, je recommande d'utiliser des formules de feuille de calcul ordinaires, par ex.

=transpose(split(join(";";Sheet1!A:A)&";"&join(";";Sheet2!A:A);";"))

Pour supprimer les doublons, il suffit de l'envelopper dans un fichier unique formule :

=unique(transpose(...))

Et pour trier... =sort(...)

4voto

rattray Points 675

Au début, quand j'ai essayé ={Sheet1!A:A; Sheet2!A:A} Je pensais que ça ne marchait pas parce que je ne voyais que les résultats de la première feuille. Il s'est avéré qu'il incluait aussi toutes les cellules vides !

Pour filtrer les cellules vides et les cellules vides tout en préservant les doublons (contrairement aux =UNIQUE ) et sans se répéter (contrairement à =FILTER() ), vous pouvez utiliser =QUERY() comme ça :

=QUERY(
  {March!A1:Z; April!A2:Z; May!A2:Z}, 
  "select * where Col1 != '' and Col1 is not null", 
  0)

(Notez que j'inclus la ligne d'en-tête de la première feuille et que je l'omets dans les autres feuilles).

Si vos feuilles ne contiennent pas de cellules avec du texte vide, vous pouvez omettre l'option Col1 != '' and .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X