求解VBA代码公式:报数问题

300个人排成一行,编号从1,2,3,4,5.。。。。。300,从1号开始,1-3报数,报3的离开,剩下的继续从1-3报数,报3的离开,直到最后留下3人,留下3人的号码是多少?如何用VBA代码实现?

是排成一行还是围成一个圈?排成一行,第一轮结束后,是不是又从第一个开始报数?

如果是排成一排,每轮结束后又从第一个开始报数,vb不知道咋写,java的倒凑出了个

public class BaoShu {
// 300个人排成一行,编号从1,2,3,4,5.。。。。。300,从1号开始,1-3报数,报3的离开,剩下的继续从1-3报数,
//报3的离开,直到最后留下3人,留下3人的号码是多少?如何用VBA代码实现?
public static void baoShu() {
List list = new ArrayList();
for (int i = 0; i < 300; i++) {
list.add(i + 1);
}
while (list.size() > 3) {
for (int i = 2; i < list.size(); i++) {
if ((i) % 2 == 0) {
Integer remove = list.remove(i);
//System.out.println(remove);
}
}
}
System.out.println(list.get(0) + "," + list.get(1) + "," + list.get(2));
}
public static void main(String[] args) {
BaoShu.baoShu();
}
}

测试了好几组数据,都还行,
300的打印结果为1,2,212