如何将下拉多列中显示的其他列的值赋值给其他单元格,有图

如图,姓名一栏为下拉多行,显示值如图,实际值为姓名。如何实现将显示值中的科室、职称显示到后面对应的单元格中?求大神指导,谢谢

Snipaste_2019-11-25_12-40-55.png

填写 .cpt


FineReport candyl6 发布于 2019-11-25 12:43 (编辑于 2019-11-25 13:35)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
candyl6Lv2见习互助
发布于2019-11-27 07:32

最终的解决办法,新增一列为工号,该列实现下拉多列,但也可通过姓名、工号检索,后面所有的单元格数据通过工号查询带出,这样就方便了,只需告知填写人在工号填写处进行名字检索即可

最佳回答
0
peng_chLv6初级互助
发布于2019-11-25 12:46(编辑于 2019-11-25 18:18)

1574660124924754.cpt

可以使用分割函数,

  • candyl6 candyl6(提问者) 能更详细的讲一下吗?非常感谢,刚接触这个报表,考虑过用js的split分隔方法,但是没想好怎么实现
    2019-11-25 12:51 
  • peng_ch peng_ch 回复 candyl6(提问者) 把你的发出来,我改下回复
    2019-11-25 13:04 
  • candyl6 candyl6(提问者) 回复 peng_ch 附件上传了,谢谢
    2019-11-25 13:35 
  • peng_ch peng_ch 回复 candyl6(提问者) 我另两个公式,如果满意请采纳
    2019-11-25 18:18 
  • candyl6 candyl6(提问者) 回复 peng_ch 非常感谢,楼主这两个公式本质上还是通过 查询数据库中该字段对应的姓名为A3 的方式,然而,一旦姓名有重复值的话,就体现不出来作用了。您可以在数据源中增加一个同名的人员试试,而且很奇怪的是,即便数据源表中增加了同名的人,A3的下拉中会自动过滤掉,只保留一个,楼主知道这是为什么吗,谢谢您
    2019-11-25 19:49 
最佳回答
0
shirokoLv6资深互助
发布于2019-11-25 13:18

如果是A3,A4,A5

编辑后事件

var v1=[];

v1=_g().getWidgetByCell("A3") .getValue().split(",");

_g().getCellValue("A4").setValue(v1[3]);

_g().getCellValue("A5").setValue(v1[2]);


  • candyl6 candyl6(提问者) A3中只显示姓名,即A3的实际值是姓名,显示值是姓名,工号,职称,科室
    2019-11-25 13:40 
  • shiroko shiroko 回复 candyl6(提问者) 显示值不是用了value公式吗,那你后面单元格也用value公式填进去就好了
    2019-11-25 13:48 
  • shiroko shiroko 回复 candyl6(提问者) 应该是用MAP比较好
    2019-11-25 13:50 
  • candyl6 candyl6(提问者) 回复 shiroko 我的想法是在填报信息时,单元格中只检索姓名或者工号,然后出现多列下拉(因为要考虑同名的情况),选中某个下拉项后,该单元格中只将姓名写进去了,然后其他信息写入到其他对应的单元格中。后面的单元格如果还是用value的话,那就是说这里有三个输入,我想的是这里只需要一个输入,其他的带出来,因为下拉里面多余的信息就是为了确定这个人的
    2019-11-25 18:40 
最佳回答
0
李少泽Lv4见习互助
发布于2019-11-25 13:29

image.png实际值:姓名;显示值:文本。。作为参数实际获取及显示的还是实际值,可以增加一个数据集通过姓名查询对应的科室及职称作为职工信息后两个单元格的数据集

最佳回答
0
15682756756Lv2见习互助
发布于2019-11-25 14:09(编辑于 2019-11-25 14:25)


image.png

这样吗?

B3 =   mid(A3, (find(",", A3) + 1), (find(",", mid(A3, (find(",", A3) + 1), 50)) - 1))

C3 =   mid(A3, (find(",", A3) + 1), 50)

D3 =  mid(C3, (find(",", C3) + 1), 10)

然后隐藏C列,逗号替换一下,我这里是中文逗号

  • candyl6 candyl6(提问者) 姓名 那一列的实际值是 姓名,显示值是姓名,科室,职称。您这样写的话,是在A3的实际值是这些所有信息的基础上进行逗号分割
    2019-11-25 14:39 
  • 15682756756 15682756756 回复 candyl6(提问者) 兄弟,你加一列有实际值的,然后隐藏不就行了
    2019-11-25 14:45 
  • 15682756756 15682756756 回复 candyl6(提问者) 而且不明白你为什么要这样做,你的显示值就是拿后面几列拼接的,直接把那几列拉出来不就可以了么
    2019-11-25 14:46 
  • candyl6 candyl6(提问者) 回复 15682756756 这么做的原因是,下拉列中显示多重信息,方便区分重名的人,因为会有同名但是不同科室的人。而且这里下拉显示的信息并不是从后面拼凑的
    2019-11-25 18:37 
  • candyl6 candyl6(提问者) 回复 15682756756 感谢您,这个报表的填写者不是我自己,否则我可以考虑加一列,让它的实际值为这些所有信息,设置它不显示的目的是在打印的时候不显示对吧?
    2019-11-25 19:52 
  • 4关注人数
  • 651浏览人数
  • 最后回答于:2019-11-27 07:32
    请选择关闭问题的原因
    确定 取消
    返回顶部