|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
JSA代码,参考下,没用VBA
- function 监考安排(){
- let jsarr=Sheets.Item("监考名单").Range("a1").CurrentRegion.Value2.slice(1).map(([,a,b])=>[a,b]);
- let obj={};
- for (let j=1;j<=4;j++){
- let arr=[...jsarr]; //副本
- for (let i=1;i<=25;i++){
- let key=`第${String(i).padStart(3,"0")}考场`;
- let temp=obj[key]=obj[key] || [key];
- [1,2].forEach(x=>{
- while(true){
- let n=Math.floor(Math.random()*arr.length); //数组下标
- if (!temp.includes(arr[n][0])){
- if (x==1 && arr[n][1]!="女") continue;
- if (x==2 && i<=20 && arr[n][1]=="女") continue; //第二考官为女教师只能出现在最后五个考场
- temp.push(arr[n][0]);
- arr.splice(n,1); //删除已被匹配的教师
- break;
- }
- }
- });
- }
- }
- let res=Object.values(obj);
- Sheets.Item("监考安排").Activate();
- Range("a3").Resize(res.length,res[0].length).Value2=res;
- }
复制代码 |
|