您好,我正在編寫一個腳本來自動執行表格操作(主要是使用匹配公式添加新列),資料具有可變數量的唯一列內容和最終輸出。
我編寫了一個腳本來識別 :SampleID(保存在 Init_IDs 中)中的唯一內容,並提示用戶在彈出視窗中重命名這些內容,並將重命名後的內容保存在 New_IDs 中。然後,我可以使用標準的匹配公式建立新列:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);
這個公式在我的測試資料集上有效,當時 New_IDs 的大小為 6,但這個大小會變化,所以我希望使用 For 迴圈來使其更靈活。以下是我嘗試過的方法,但它不起作用:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);
我已經檢查過,N 個項目(New_ID)產生的值為 6。我嘗試單獨使用 For 循環,不與其他 MATCH 公式結合使用,但也不奏效。因此,雖然中間的「+」號最終可能是一個問題,但主要問題似乎出在我的 for 迴圈本身。
我還嘗試用 If 語句代替 MATCH 公式來簡化它,但仍然不行:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);