web-dev-qa-db-fra.com

Google Sheets Passing Range d'une feuille séparée dans une fonction personnalisée

J'ai créé la fonction personnalisée suivante pour reproduire une fonctionnalité de type aiguille botte de foin

function ListBy (Range, Range2, needle) {
  var holder = [];
  if(typeof Range != 'object') {
    throw "expected Range for input saw" + typeof Range;
    return false;
  } for(var i = 0; i < Range.length; i++) {
    if(Range[i] == needle) {
          holder.Push(Range2[i]);
    }
  }

  return holder;
}

Ce script fonctionne parfaitement lorsqu'il est exécuté sur une seule feuille, par exemple

=ListBy(A1:A5, B1:B5, "needle");

Mais si j’essaie de transmettre des données d’une autre feuille comme

=ListBy('sheet1'!A1:A10, 'sheet1'!A1:A10, "needle")

Je reçois une référence d'erreur de plage. Pourquoi serait-ce le cas?

2
richbai90

Vous avez ajouté des guillemets simples aux références de la feuille:

=ListBy('sheet1'!A1:A10, 'sheet1'!A1:A10, "needle")

Si vous quittez ceux-ci:

=ListBy(Sheet1!A1:A10, Sheet1!A1:A10, "needle")

alors votre script fonctionne comme prévu.

Capture d'écran

Sheet2:
enter image description here

Sheet1:
enter image description here

2