|
WPSJS宏代码,请参考
- let arr,temp,obj,k;
- function 开始抽奖(){
- if (obj==null) obj={};
- if (arr==null){
- arr=Sheets.Item("花名册").Range("a1").CurrentRegion.Value2.slice(1).map(([x])=>x.split("-")[0]);
- arr=[...new Set(arr)];
- }
- if (k==null) k=0;
- let shp=ActiveSheet.Shapes.Item(1);
- if (shp.TextFrame2.TextRange.Text=="开始抽奖"){
- shp.TextFrame2.TextRange.Text="停止";
- 屏幕滚动();
- return;
- }
- shp.TextFrame2.TextRange.Text="开始抽奖";
- }
- function 初始化(){
- [arr,temp,obj,k]=[null,null,null,null];
- let c1=Cells.Item(Cells.Find("序号").Row,Columns.Count).End(xlToLeft).Column;
- if (c1>=2) Range("b10").Resize(6,c1-2+1).ClearContents();
- }
- function 屏幕滚动(isgo=true){
- let shp=ActiveSheet.Shapes.Item(1);
- if (shp.TextFrame2.TextRange.Text=="开始抽奖"){
- let rng=Cells.Item(Cells.Find("序号").Row,Columns.Count).End(xlToLeft).Offset(0,1);
- temp.forEach(([x])=>arr.splice(arr.indexOf(x),1)); //删除已经抽中的部分
- temp.unshift([`第${++k}轮`]);
- rng.Resize(temp.length,1).Value2=temp;
- return;
- }
- if (arr.length<5){
- alert("剩余人数不足5人,不能抽奖。");
- return;
- }
- cjarr=[...arr]; //在副本中抽奖
- temp=[1,2,3,4,5].reduce((temp,x)=>{
- let n=Math.floor(Math.random()*cjarr.length);
- return (temp.push(cjarr.splice(n,1)),temp);
- },[]);
- Range("a1").Value2=temp.flat().join("、");
- DoEvents();
- 屏幕滚动();
- }
复制代码 |
|