发布网友 发布时间:2022-04-29 12:19
共3个回答
热心网友 时间:2022-06-11 16:15
看了楼主的问题,或许是想要成下面这种格式的。如果是,可以使用VBA程序来实现,望笑纳。
(一)VBA程序代码如下:
(二)sheet1里面的数据样式如下图:
【注】如果当月没有31号,但对应的单元格有数据,此时拼接出来的日期及结果将会有错。
热心网友 时间:2022-06-11 16:15
你想得到的效果是不是下面效果:(每年每天均有记录,分月大月小等)
如果是这样的效果,这是一个典型的将交叉表数据转换为数据库记录的题型,可以帮你解决。请回复
追问是的!没错!追答
1、为了不破坏源数据和省略一些公式值数据在引用时的复杂性,建义将原数据表复制、粘贴(选择性粘贴---数值)到另一个新的工作表sheet2中来;同时将汉字能转换为英文;
2、数据源表架构如下(我拿三年数据举例),考虑到30年数据量大,值要求每年每一天数据唯一性,则在C列前加31列空列,如图2
注意,为了说明,我省略中间列,这31列的值是:年+月+日的组合,如:19760101,公式C2==$A2&$B2&AH$1, 先下拉,再横拉,不考虑每年2月的天数(由其值来决定),
3、将这31列日期组合值数据复制C2:AG37,到下面新的位置C40, 选择性粘贴---数值---转置,如下图2
4、将每个月每日值,列到一列来,操作:在C71,公式=D40,在D71,公式=E40, 横拉到尽头,然后再竖拉(一直拉到出现 0 值为止),图1示意,图2说明操作,图3操作结果
5、这样 从C40至C列末尾,这是所有年月日,排放成一列的值,将C列值复制,粘贴(选择性粘贴----数值)到另一新表sheet5 的A2来,一种办法用vlookup( )函数来实现,B2==VLOOKUP(A2,Sheet4!C$2:$BL$37,32,0), 但公式不好下拉引用,如图1,另一办法还是同上复制---选择性粘贴---数值---转置,下拉解决 如图2
先横拉,到0出现,再竖拉,到0出现,B列的数据就是被排列到一列了,最终数据,再选择B列数据,复制---选择性粘贴---数值。
sheet5中的数据就是最终需要的数据,剩下就是美化排版表格。
不知是否理解,可以再交流。
热心网友 时间:2022-06-11 16:16
输入
=OFFSET($A$2,COLUMN(A1)-1,ROW(A1)-1)
右拉 下拉
你自己套用吧