web-dev-qa-db-fra.com

Comment joindre des plages dans des feuilles de calcul Google

Je souhaite créer des unions dans n'importe quelle feuille de calcul Google.

L'exemple

Sheet1! A: A

{12, 131, 45}

Sheet2! A: A

{12, 131, 46}

La fonction inconnue

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

devrait revenir

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

La question

Comment est-ce possible?

34
oshliaer

Script Google Apps

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é Spreadsheets

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

Concaténation verticale

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

Concaténation horizontale

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

Il est possible de combiner

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

Ou quelque chose de plus dur

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

Dépendances des paramètres de délimitation d'arguments

Si vos paramètres régionaux prennent en charge , en tant que délimiteur d'arguments, vous devez utiliser ; pour une concaténation verticale et , pour une concaténation horizontale.

Sinon, votre délimiteur d'arguments est ; et vous devez utiliser ; et \ (sans espaces), 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 |
|   ...   |     ...   | ... |

Enchaînement

Concaténation verticale

={'Data 1'!A1:C20;'Data 2'!A2:C20}
|  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)}
| 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 sur ce sujet Comment concaténer des plages dans des feuilles de calcul Google

8
oshliaer

Vous pouvez les fusionner en 1 colonne puis obtenir les valeurs uniques. Vérifiez la formule suivante:

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

Il suffit d'utiliser:

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

Bien qu'un script puisse le faire facilement, je vous recommande d'utiliser des formules de feuille de calcul classiques, par exemple.

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

Pour supprimer les doublons, enveloppez-le simplement dans une formule unique:

=unique(transpose(...))

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

21

Si vous souhaitez associer des feuilles et exclure des lignes contenant des cellules vides, utilisez la fonction FILTER de votre formule:

=FILTER({Sheet1!A:A;Sheet2!A:A}, {Sheet1!A:A;Sheet2!A:A}<>"")
0
mgig

Supposons que vous ayez:

   A    B   C   D   E   F
1: 1    2   3   4   5   6

Il est possible de concaténer des tranches sous forme de lignes ou de colonnes.

Pour des colonnes supplémentaires (même ligne), utilisez une virgule. ={$A1:$C1,$D1:$F1} donne:

1   2   3   4   5   6

Pour des lignes supplémentaires (mêmes colonnes), utilisez un point-virgule. ={$A1:$C1;$D1:$F1} donne:

1   2   3
4   5   6
0
jbryanscott