求和:=sum(D1:D51)
平均值:=AVERAGE(D2:D51)
首先用=VLOOKUP(E2,Sheet3!$A$1:$B$2984,2,FALSE) 注释:E2需要比对的列, Sheet3和哪一页进行比对 A1:B2984 是比对的范围 2是返回的第几列false是精确比对
比对出来主承 发行人 之类的id 主承不能为空 然后用函数生成脚本。
=CONCATENATE($AI$1,A230&"', '",IF(ISBLANK(D230),"null",D230)&"', '",IF(ISBLANK(C230),"null",C230)&"', '",IF(ISBLANK(B230),"null",B230)&"', '",IF(ISBLANK(AB230),"null",AB230)&"', '",IF(ISBLANK(AC230),"null",AC230)&"', '1', '0', 'admin', '",IF(ISBLANK(M230),"null",M230)&"', '",IF(ISBLANK(N230),"null",N230)&"', '",IF(ISBLANK(J230),"null",J230)&"', ",IF(ISBLANK(V230),"null","to_timestamp('"&TEXT(V230,"yyyy-mm-dd")&"', 'yyyy-mm-dd')")&", ",IF(ISBLANK(O230),"null","to_timestamp('"&TEXT(O230,"yyyy-mm-dd")&"', 'yyyy-mm-dd')")&", '",IF(ISBLANK(T230),"null",T230)&"', ",IF(ISBLANK(U230),"null","to_timestamp('"&TEXT(U230,"yyyy-mm-dd")&"', 'yyyy-mm-dd')")&", '",IF(ISBLANK(AD230),"null",AD230)&"', '"&IF(ISNA(AE230),"null",AE230)&"', 'CNY', ",IF(ISBLANK(P230),"null","to_timestamp('"&TEXT(P230,"yyyy-mm-dd")&"', 'yyyy-mm-dd')")&", '",IF(ISBLANK(AF230),"null",AF230)&"', '",IF(ISNA(AG230),"null",AG230)&"', '",IF(ISNA(AH230),"null",AH230)&"');")
然后下拉就可以生成脚本了。
二、整理含权的脚本
首先先筛选出含权的债券信息,然后将债券id比对出来,然后根据他需要的字段进行整理,由于含权的导入方式是一只债券有可能存在多个含权,例如(1,2,3)
像是这种的话。就需要每条都要去生成sql脚本,这就很有难度了,下面我来分享一下我的操作步骤。
(1) 首先插入四列 用函数去判断 是否存在含权代码 =IFERROR(IF(FIND("1",B2)>0,I2,0),0) ,=IFERROR(IF(FIND("2",B2)>0,J2,0),0),=IFERROR(IF(FIND("3",B2)>0,K2,0),0),=IFERROR(IF(FIND("4",B2)>0,L2,0),0)
I2,J2,K2,L2 分别 是对应的sql,意思就是如果存在相应的含权代码就将对应的sql脚本打印到表格中 sql脚本如下:
=CONCATENATE("insert into T_RIGHTTYPE_INFO(DCM_BOND_INFO_ID,RIGHT_TYPE,EXERCISE_DATE) values('",A2,"','",1,"',","to_timestamp('"&TEXT(G2,"yyyy-mm-dd")&"', 'yyyy-mm-dd')",");")
=CONCATENATE("insert into T_RIGHTTYPE_INFO(DCM_BOND_INFO_ID,RIGHT_TYPE,EXERCISE_DATE) values('",A2,"','",2,"',","to_timestamp('"&TEXT(G2,"yyyy-mm-dd")&"', 'yyyy-mm-dd')",");")
2017 7 11
以下是整理数据迁移的实现思路
1、首先用excel表格比对二期数据库的字段,整理出字段关系
2、用函数生成脚本
(1)首先在excel的第一列(AC1)整理insert 语句例如 insert A(字段1,字段2,...) values ('
(2)然后在下面的表格里面写函数 公式-插入函数选择这个函数CONCATENATE,在text1里面引用AC1中的内容,text2中填写如果是必填项B2&"', '"
如果是日期的话需要去转成日期型 IF(ISBLANK(F2),"null","to_timestamp('"&TEXT(F2,"yyyy-mm-dd")&"', 'yyyy-mm-dd')")&", '"
如果是结尾的话 AA2&"');" 或者是IF(ISNA(AH2),"null",AH2)&"');"
接着text3就可以按照之前的填写。
3、整理脚本的时候遇到了一个问题,就是insert语句有空格,经过排查,原来是有一个单元格有空格
2017 7 12
今天又遇到一个问题,就是生成的脚本 如果是日期类型的话 不能将'null' 插入到数据库里面,所以如果遇到日期类型的话可以将
B2&"', '" 里面的单引号去掉。
2017 7 18
=IFNA(L2,M2) 如果L2为na就执行M2,如果没错,就执行L2。
=SUBSTITUTE(A1,RIGHT(A1,4),"") 截取,例如:5F7D4F92567B7565BFB1437FF398370.pdf 将后缀名截取调
2017 0719
EXCEL中ISNA函数是判断是否为#N/A的
2017 08 03
由于发现发行人的信息不对 所以需要在标题中截取发行人的名称 首先 把公司的司字全部替换成司- 然后 数据--分列,按照-分列就可以把公司的名字分列出来
感想:excel是强大的
2017 0807
今天遇到一种这样的情况就是一般的vlookup函数在查找到的时候,找的到就会返回 例如这个函数 =VLOOKUP(A16,附件信息!$A$2:$H$4887,8,FALSE) 如果A16存在但是对应的没有值就会返回0 这样在生成脚本的时候不能将0插入,所以在函数后面加一句话=VLOOKUP(A16,附件信息!$A$2:$H$4887,8,FALSE)&"" 这样返回的就是空值了,可以用
ISBLANK来判断,还有一种情况那就是如果匹配不到A16 那么就会返回N/A这个错误,那么就可以用ISNA来判断
2017.8.17
今天整理DCM脚本的时候突然发现,有个时间的问题, 就是导出来的是这种格式的
02-5月 -17 02.59.30.000000 下午 |
to_char(apply.DISCLOSURE_TIME,'YYYY/MM/DD HH24:MI:SS')
2017 8 24
整理增量数据问题
一、债券代码 数据分列-按照固定宽度-下一步-设置文本格式。F031558019分离成031558019这种格式
二、日期是20170829这种格式 用数据分列的方式 分成 2017/08/29这种格式
2017 8 29
一、今天遇到个问题就是excel突然出现信息检索的功能,按alt+叉可以把信息检索关闭
二、excel可以查找相同的并且可以用颜色标记,之后可以筛选相同颜色的数据,这样可以很快的查找出来相同的数据。
2017 9 1
今天遇到了一个问题就是用pl sql导出来的sql脚本有空格
在nopad++中 ctrl+h查找 查找模式选择扩展 查找目标:\r\n\r\n
替换为:\r\n。
从pl sql里面导出来的数据 要按照 tool-export 选择表 这样导出来才有完整的日志
20170921
执行sql脚本的时候遇到一个这样的问题,中盈2015年第二期-专项复核&年度受托机构报告.pdf附件名称里面带有&符号,数据库会自动当成转义字符。出现年度受托机构报告消失的情况,
解决方式:中盈2015年第二期-专项复核'||chr(38)||'年度受托机构报告.pdf 用ascII拼接起来。