在列公式中执行新窗口对话框脚本<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />你好,
我有一列(“BIN”),带有一堆不同的字符值,数据集中的每一行都指的是一个经过测试的唯一单元。无需转换/汇总数据集,我想创建一个列公式,提示用户使用ListBox对话框,其中包含“BIN”列中所有唯一值的集合。在ListBox中选择所需的值后,在“BIN”列中具有值的单位将为生成的列(“BIN_DISPOSITION”)设置值1,并且具有不具有“BIN”的单位的列“与ListBox选择匹配的值将为生成的列设置值0(”BIN_DISPOSITION“)。
例:
在用户运行公式列并选择“BIN2”和“BIN3”的情况下,需要以下输出。
单元#
| BIN | BIN_DISPOSITION(由列公式生成) |
|---|
单元1 | BIN1 | 0 |
| 单元2 | BIN2 | 1 |
| UNIT3 | BIN2 | 1 |
| UNIT4 | BIN1 | 0 |
| 48页免费 | BIN3 | 1 |
脚本:
bin_values_all = {} ;
bin_values_all_sorted = {} ;
bin_values_selected = {} ;
如果 ( 行 () == 1 ,
对于每一行 ( 如果 ( !包含 ( bin_values_all ,: BIN [ 行 ()]) ,
插入 ( bin_values_all , : BIN [ 行 ()])
) ;
bin_values_all_sorted = 升序 ( bin_values_all ) ;
新窗户 ( “BIN值选择” ,莫代尔,
大纲框 ( “BIN值选择” ,
磅 = 列表框 (
bin_values_all_sorted
) ,
按钮框 ( “好” ,
bin_values_selected = 磅 << GetSelected
) ;
如果 ( 包含 ( bin_values_selected , : BIN ) ,
1 ,
0
) ;
我不得不添加条件If(Row()== 1 ...),以便对话框和列表生成不会运行多次,但似乎我的每次上面的变量声明都会重新初始化,不是我想要的。
我不太确定是否有内置方法可以做到这一点。
想知道是否有人有任何想法。
谢谢,
J.P
Re:在列公式中执行新窗口对话框脚本我想出了如何使这个工作。
我没有在第一个条件语句之前初始化列表,而是将它们放在Row()== 1的情况下,并使用前缀'::'将它们转换为全局变量。
如果 ( 行 () == 1 ,
:: bin_values_all = {} ;
:: bin_values_all_sorted = {} ;
:: bin_values_selected = {} ;
对于每一行 ( 如果 ( !包含 ( bin_values_all , : BIN [ 行 ()]) ,
插入 ( bin_values_all , : BIN [ 行 ()])
) ;
bin_values_all_sorted = 升序 ( bin_values_all ) ;
新窗户 ( “BIN值选择” ,莫代尔,
大纲框 ( “BIN值选择” ,
磅 = 列表框 (
bin_values_all_sorted
) ,
按钮框 ( “好” ,
bin_values_selected = 磅 << GetSelected
) ;
如果 ( 包含 ( bin_values_selected , : BIN ) ,
1 ,
0
) ;