从一列复制选定的单元格并将其粘贴到另一列的选定单元格中大家好,我是一名 JSL 初学者。 我需要学习如何将一列中的一组单元格移动到另一个新创建的列中的不同位置。在本例中,位于这个新列的顶部。
具体来说,我需要在单独的 PRE/POST 列中选择 THK 列中标记为 PRE 的一组单元格,并将它们粘贴到标记为 THK PRE 的新列的顶部。 它有点类似于“拆分列”功能,但我不想使用“拆分列”功能,因为我发现,由于一些故障,如果 THK 列的某些单元格中的数据丢失,则数据有时会在新创建的列中出现混乱。
根据论坛上的一些示例,我将下面的代码放在一起,但它没有在新创建的 THK PRE 列中粘贴任何值。请帮忙!提前谢谢了。
这是我需要的:
起始数据表
THK 我前/后
9.5 后处理
9.8 后处理
10.1 发布
11.0 预
11.4 预演
10.9 预习
这是我需要的数据表在执行此操作后的样子:
泰克 |前/后 | THK 预
9.5 11.0后
9.8 后 11.4
10.1 后 10.9
11.0 预
11.4 预演
10.9 预习
下面的脚本不会在新创建的列中粘贴任何值,该列保持为空
// Pick the source data table
dt=Open("Data Table");
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous");
Wait(1);
// Select PRE values from THK column
vals = Column(dt, "THK") << Get Rows Where(:Name("PRE/POST") == "PRE");
// Put these in the new column THK PRE
Column(dt, "THK PRE") << Set Values(vals)
请帮忙! 提前谢谢了。我用的是JUMP 16.0.0
@jthi
数据混合和清理回复:从一列复制选定的单元格并将其粘贴到另一列的选定单元格中您好 Txnelson,非常感谢您的快速回复!奇迹般有效!我想我已经非常接近了,但无法完全理解我们的语法。
回复:从一列复制选定的单元格并将其粘贴到另一列的选定单元格中这是对脚本的修改,添加了一些注释来处理您想要的内容
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE", Numeric, "Continuous" );
Wait( 0 );
// Find the rows PRE values from THK column
// and copy those values from the found rows
// to the vals matrix
vals = :THK[dt << get rows Where( :Name( "PRE/POST" ) == "PRE" )];
// Put these in the new column THK PRE
dt:THK PRE << Set Values( vals );回复:从一列复制选定的单元格并将其粘贴到另一列选定的单元格中有没有办法将选定的数据粘贴到同一行位置的新列中?或者根据选择设置新列的值?像这样?

回复:从一列复制选定的单元格并将其粘贴到另一列选定的单元格中这里有几种方法可以实现您的目的。
Names Default To Here( 1 );
// Pick the source data table
//dt=Open("Data Table");
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "THK",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [9.5, 9.8, 10.1, 11, 11.4, 10.9] )
),
New Column( "PRE/POST",
Character,
"Nominal",
Set Values( {"POST", "POST", "POST", "PRE", "PRE", "PRE"} )
)
);
//Create New THK PRE column
dt << New Column( "THK PRE1",
Numeric,
"Continuous",
formula( If( :"PRE/POST"n == "PRE", :THK, . ) )
);
dt << New Column( "THK PRE2", Numeric, "Continuous" );
For Each Row(
If( :"PRE/POST"n == "PRE",
:THK PRE2 = :THK,
:THK PRE2 = .
)
);
如果您希望 THK PRE 值为 5(如第二个示例所示),只需将结果值从 :THK 更改为 5
回复:从一列复制选定的单元格并将其粘贴到另一列选定的单元格中感谢您的回复。我希望有一个我不知道的“粘贴”脚本功能。如果该列已经包含其他值,看起来我将不得不按照您的建议循环遍历每一行。
回复:从一列复制选定的单元格并将其粘贴到另一列选定的单元格中更接近复制/粘贴:您可以一次获取并批量写入所有值:
数据表下标
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 100 ),
New Column( "input",
Set each Value( random uniform () )
),
New Column( "variant",
Character,
set each value({"A","B"}[random integer(1,2)])
)
);
dt << New Column( "out");
rows= Where(:variant == "A");
vals = dt[rows,"input"];
dt[rows,"out"]=vals;
这类似于
dt:THK PRE << Set Values( vals );
不同之处:通过数据表索引,您可以精确指定要写入哪些行。
设置值从第 1 行开始,并填充与数组中的值一样多的行。