九号线
发表于 2022-1-21 17:15:01
非常感谢您的热心帮助!很完美,高效,不卡顿。
我的心是一个站牌
发表于 2022-1-22 12:16:23
B1下拉
=INDEX(OFFSET(Sheet2!C$1,MATCH(A1,Sheet2!A:A,)-1,,,14),IF(ROW(A1)=1,RANDBETWEEN(1,14),MOD(MIN(IF(MMULT(COLUMN(A:H)^0,COUNTIF(OFFSET(B2,-ROW(A1),):OFFSET(B2,-2,),Sheet2!C$1:P$8))=0,COLUMN(A:N),9^9)+RANDBETWEEN(ROW(1:14)^0,14)/1%),100)))
黑粉
发表于 2022-1-24 19:29:26
非常感谢奇文说的热心帮助,切实可行高效! 如果有时间的话,再帮我看看,如果表二的原始数据不是均匀的14列,有的是8列,有的9列,有的是17、18、20列不等,如果表一姓名出现的次数超过表二原始数据的个数,则重复为正常,要如何更改?
背朝北
发表于 2022-1-31 03:05:55
S2 下拉{=VLOOKUP(R2,A:P,SMALL(IF(COUNTIF(S$1:S1,VLOOKUP(R2,A:P,COLUMN(C:P),))=0,COLUMN(C:P)),RANDBETWEEN(1,15-COUNTIF(R$2:R2,R2))),)
A12{=AND(COUNTIF(S:S,C1:P1)=1)
杨泽宇
发表于 2022-2-1 20:52:23
很感谢hcm19522的耐心解答,把过程简化的一目了然,聪明。很好用。也是同样的补充问题,就是原数据,不是均匀的14列,即A1至A14,B1至B14……H1至H14,有的是7列,有的8列,有的20、21列这样子,要怎么修改?谢谢
跨越岁月
发表于 2022-2-2 10:44:13
很感谢hcm19522的耐心解答,非常好用。同时把过程简化了让人看了一目了然。同样补充的问题就是:就是原始数据A1至H14,不是均匀的14列,如张三的可能是只有A1至A8,李四的可能是B1至B12,郑十的为H1至H22,总之就各个列数是在7列至23列之间,如果姓名出现的次数超过数据的个数,则重复为合理正常。该如何修改?
百里飞雪
发表于 2022-2-13 13:15:19
公式又长了好多,还是下拉。要是不顶行,公式能短不少。。。这个顶行浪费了我好多字符!=INDEX(Sheet2!C$1:P$8,MATCH(A1,Sheet2!A:A,),IF(ROW(A1)=1,RANDBETWEEN(1,7),MOD(MIN(IF(MMULT(COLUMN(A:H)^0,(COUNTIF(OFFSET(B2,-ROW(A1),):OFFSET(B2,-2,),Sheet2!C$1:P$8)+(Sheet2!C$1:P$8=""))*(Sheet2!A$1:A$8=A1)),9^9,COLUMN(A:N))+RANDBETWEEN(COLUMN(A:N)^0,14)/1%),100)))
哒咩
发表于 2022-2-17 09:59:32
如果能从第二行开始——如图,那么公式可以是:=INDEX(Sheet2!C$1:P$8,MATCH(A2,Sheet2!A:A,),MOD(MIN(IF(MMULT(COLUMN(A:H)^0,(COUNTIF(B$1:B1,Sheet2!C$1:P$8)+(Sheet2!C$1:P$8=""))*(Sheet2!A$1:A$8=A2)),9^9,COLUMN(A:N))+RANDBETWEEN(COLUMN(A:N)^0,14)/1%),100))
少了60多个字符!
差点成熟
发表于 2022-2-17 16:22:06
辛苦了,感谢感谢!可以从第二行开始,实际应用时是从第二行开始的。我讲的可能有点绕,是这样的:就是那个表二原始数据,就是张三可能是没有14列,可能只有8列,而李四的可能是12列,……,郑十可能是23,就是原始数据每个不是均匀的14列,是在8列至23列之间。在表一的姓名出现的次数超过了原始数据个数的,就可以重复出现,就是如果表一姓名出现次数多于表二原始数据的个数,就可以让它重复出现填入,不知你听懂没,呵呵,如何更改?
吉人天佑
发表于 2022-2-21 03:13:21
B1下拉
=INDEX(OFFSET(Sheet2!C$1,MATCH(A1,Sheet2!A:A,)-1,,,14),IF(ROW(A1)=1,RANDBETWEEN(1,14),MOD(MIN(IF(MMULT(COLUMN(A:H)^0,COUNTIF(OFFSET(B2,-ROW(A1),):OFFSET(B2,-2,),Sheet2!C$1:P$8))=0,COLUMN(A:N),9^9)+RANDBETWEEN(ROW(1:14)^0,14)/1%),100)))