SAS编程

157:SAS code在EXCEL文件里面创建超链接

2022-10-26  本文已影响0人  SASPRO的打工人生活

今天有一个当妈妈的读者问我一个问题,我为什么加上“当妈妈”3个字呢?因为随着关注我的人越来越多,能遇上各色各样的人,有当妈妈的,有医药代表想转SAS的,有DM/CRA想转SAS的,还有好几个失业想转SAS的,对于想转SAS的,在这祝你们都能成功。

这个读者问了一个问题:就是DM要求在EXCEL中用SAS代码加上超链接,当时我一听,直接用EXCEL创建超链接的功能不就可以了吗,但是他说可能有几十张表,我想好吧,确实用SAS代码可能更快一些。这一看就是写DVP或者SDV,我现在好久都没碰过了,所以说DM为什么建议找个SAS程序员对象,哈哈。

我搜索了相关资料,如果导出的EXCEL文件表单名称不变的,要先知道要导出哪些表,我在这先创建了一个测试表。其中Alfred和Mary是有超链接的(我手动在EXCEL创建的,显示的路径是file:///D:\A_work\Practice\hyperlink.xlsx - Alfred!A1)

我们就得利用这个路径在我们的SAS code创建超链接。

不过需要注意的是,SAS 利用这个路径创建超链接,需要把 -变成 #,

同时需要创建一个format,就像下面这样

proc format;

value $hyper

'Alfred'="file:///D:\A_work\Practice\hyperlink2.xlsx#Alfred!A1";

run;

之后我们利用这个format在EXCEL里面创建超链接。现在我导出另一个EXCEL,

可以看到是创建超链接的,但是因为我没有输出Alfred这张sheet,所以显示“引用无效”,但是她们到时候是会创建对应表的。

同时这个超链接是没有颜色显示的,但我的想法是可以给这列在define的时候设置一些样式,应该就能有颜色显示,这里我就不举例了。

上面是超链接跳到某个表单,如果是我想点击Alfred的时候就跳到某个表单里的某个单元格呢?

这时候如果用上面那种方法就没用了,需要用到compute模块。假如我想实现点击"Mary"就跳到CARS这张sheet的B2单元格,可以这样

compute name;

if index(upcase(name),'MARY') > 0 then do;

call define(_COL_,'URL',"file:///D:\A_work\Practice\hyperlink2.xlsx#cars!B2");

call define(_COL_,"style","STYLE={color=#0000FF}");

end;

endcomp;

run;

导出的EXCEL如下

确实能跳到指定单元格,但是我发现了一个问题,就是跳到sheet和跳到指定单元格不能同时实现???很奇怪,但是我想她们想实现的效果第一种方法就可以吧。

就这样吧,这段代码就免费发给这个读者啦!

上一篇下一篇

猜你喜欢

热点阅读