对应姓名查找一定范围的内容随机不重复录入?
请教这里的前辈高手们,碰到一个难题,琢磨了一段时间了没有解决,如题,对应姓名查找一定范围的内容随机不重复录入?具体看附件,就是:在表1的B列中根据A列的姓名,从表二中C1至P1的内容中随机选择一个,我是在表二B1中插入一个INDEX来实现随机选择的,再从A1至B8中根据表1的姓名来查找依次填入的,但现在有一个问题就是:表1A列中不止一个相同的姓名,会有十个八的的,例如A列中第二个张三出现的时候,则B列相应又是同一个内容即:如何实现这A列第二,三,四,至14个(不会超过后面表二那个C1至P1内容数量)相同姓名时,B列相应内容不是重复相同的?在此先谢谢您们了!
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))) 非常感谢奇文说的热心帮助,切实可行高效! 如果有时间的话,再帮我看看,如果表二的原始数据不是均匀的14列,有的是8列,有的9列,有的是17、18、20列不等,如果表一姓名出现的次数超过表二原始数据的个数,则重复为正常,要如何更改? 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) 很感谢hcm19522的耐心解答,把过程简化的一目了然,聪明。很好用。也是同样的补充问题,就是原数据,不是均匀的14列,即A1至A14,B1至B14……H1至H14,有的是7列,有的8列,有的20、21列这样子,要怎么修改?谢谢 很感谢hcm19522的耐心解答,非常好用。同时把过程简化了让人看了一目了然。同样补充的问题就是:就是原始数据A1至H14,不是均匀的14列,如张三的可能是只有A1至A8,李四的可能是B1至B12,郑十的为H1至H22,总之就各个列数是在7列至23列之间,如果姓名出现的次数超过数据的个数,则重复为合理正常。该如何修改? 公式又长了好多,还是下拉。要是不顶行,公式能短不少。。。这个顶行浪费了我好多字符!=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))) 如果能从第二行开始——如图,那么公式可以是:=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多个字符!
辛苦了,感谢感谢!可以从第二行开始,实际应用时是从第二行开始的。我讲的可能有点绕,是这样的:就是那个表二原始数据,就是张三可能是没有14列,可能只有8列,而李四的可能是12列,……,郑十可能是23,就是原始数据每个不是均匀的14列,是在8列至23列之间。在表一的姓名出现的次数超过了原始数据个数的,就可以重复出现,就是如果表一姓名出现次数多于表二原始数据的个数,就可以让它重复出现填入,不知你听懂没,呵呵,如何更改? 多少列都行,列数不相同也没关系。。。
上面的公式是最多8行,14列,但不一定要14列--只要小于14列就行。
下面公式是对应99行,24列(最大24列,只要不大于24列即可)
你对应一下上面公式的异同,就知道改哪里了。
下面公式:
第一个COLUMN(A:CU)^0是源数据区域的行数,这里是从第1行到第99行
后面两个COLUMN(A:X),是源数据区域的列数,从第1列开始,最多24列(几列无所谓,每行列数可以不相同)!
其它的直接区域引用你应该明白!
=INDEX(Sheet2!C$1:Z$99,MATCH(A2,Sheet2!A:A,),MOD(MIN(IF(MMULT(COLUMN(A:CU)^0,(COUNTIF(B$1:B1,Sheet2!C$1:Z$99)+(Sheet2!C$1:Z$99=""))*(Sheet2!A$1:A$99=A2)),9^9,COLUMN(A:X))+RANDBETWEEN(COLUMN(A:X)^0,14)/1%),100))