セル内の複数のカンマ区切りの値をカスタム関数に渡すには?

2
2022.01.10

例えば、あるセルに1,A2,B3,Dといった値があるとします。私の意図は、1,2,3(LHS)とA,B,D(RHS)を別々に追加することです。これを実現するために、「App script」にあるカスタム関数を書きました。

function GetNumber (number, alphabet) { return number; }

さて、1,Aを2つの引数としてGetNumber()に渡して、ロジックが動作するようにするにはどうしたらいいでしょうか?
SPLITを試してみましたが、うまくいきませんでした。
=GetNumber(SPLIT(C1,",")) // C1 is a column cell

私はGoogleシートを使用していますが、MS-Excelに相当するものも役立つかもしれません。

回答
3
2022.01.10

この問題の一部は、SPLITが関数の引数として使用された場合、文字列を返すことです。C1セルに1,Cという文字列が入っているとします。あなたの数式

=GetNumber(SPLIT(C1, ","))

は、実際には以下と同じです。

=GetNumber('1C');

もしあなたがJavaScriptにある程度慣れているのであれば、代わりに関数コード内で分割操作を行うことができます。

function GetNumber(input) {
  const [number, alphabet] = input.split(",");
  return number;
}

そして、その関数を

=GetNumber(C1)

で関数を呼び出し、1 を返すことができます。

説明(関連するJavaScriptドキュメントへのリンク付き)。

input.split(",")は入力された引数を,で分割し、2つの部分の配列を返します。["1", "C"]です。

const [number, alphabet]destructuring assignmentで、配列の2つの部分を取り出し、別々の変数に格納します。

これにより、関数が目的の変数を返すことが可能になります。return numberです。