値のリストのマッピングを設定しようとしています。行の 1 つのセルには ID または行番号のリストが含まれ、同じ行の別のセルにはマップされた値のリストが含まれます。
JOIN、ARRAYFORMULA、および SPLIT を使用すると、基本的な計算を行う場合、これは非常に簡単です。たとえば、次のようになります。
A1: =1,2,3
A2: =JOIN(",",ArrayFormula(SPLIT(A1,",")+1))
A2: displays "2,3,4" (correct)
これは、LOOKUP と SPLIT では確実に機能しないようです (LOOKUP と REGEXEXTRACT も試しました)。具体的には、変数パラメーターを使用しても動作させることができますが、行を変更するとすぐに値が壊れます。例:
A column: ids (e.g. 1,2,3,4)
C column: names (e.g. "Apple", "Banana", "Custard")
E7: =1,2,3
F7: =JOIN(",",ArrayFormula(LOOKUP(SPLIT($E7, ","), $A:$A, $C:$C)))
F7 displays "Apple,Banana,Custard" (correct)
上記は正しい動作です。ただし、行 1 (id 1) を別の場所にドラッグすると、数式が壊れます。
F7 displays "#N/A Did not find value `1` in LOOKUP evaluation"
VLOOKUP と REGEXEXTRACT でも試したので、動作は LOOKUP や SPLIT に固有のものではありません (実際、REGEXEXTRACT では変数リスト サイズをサポートするのがより困難です)。
解決
「=ROW()」を使用する場合に機能します。AdamL が指摘したように、実際の問題は、is_sorted フラグを false にする必要があることです (ドラッグ & ドロップをサポートする場合)。
E7: =ROW(A2)&","&ROW(A3)&","&ROW(A4)
F7: =JOIN(",",ArrayFormula(VLOOKUP(SPLIT($E7, ","), $A:$C, 3, 0)))
F7 displays correct value even after dragging row 1