sqlserver 如何把一列分为一行显示_EXCEL神乎其技 多列追加为一列
甲纯们在工作中,可能会经常遇到要把多列数据,以追加的形式,凑成一列的情况。
现如今20后都跑出来了,难道还要用拷贝粘贴的原始方法?!
纯老师对此研发了操作简单、适用性好的小程序,供甲纯们参考使用。
本程序主要利用到的是INDIRECT函数,可以把文本变成地址进行引用。
地址引用有2种表达形式:一种是A1形式(先列号后行号,列用字母表示),一种是R1C1形式(先行号后列号,都用数字表示)。为了方便引用的地址进行递增和跳转,使列号直接用数字表示不需要再转换为字母,故本程序使用的是R1C1的形式。
应用公式=INDIRECT(“R”&x&”C”&y,0),第1参数是引用地址的文本“RxCy”,代表引用x行(Row)y列(Column)的单元格;第2参数为0,代表函数引用地址采用R1C1的形式。
解题的核心思路是通过自动改变行列的序数,来进行数据的映射追加。
先设计如下的表格:
其中行序数1和列序数5,是预先输入的并可以修改的,代表从【R1C5】(即【E1】)单元格,开始进行数据追加。
将【数据追加】列的公式,填写为:【A2】=INDIRECT("R"&B:B&"C"&C:C,0),该列数据变为由【行序数】和【列数据】,对应控制行号和列号的映射列。如下图:
核心判断逻辑:
本程序以单元格数据是否为空,作为判断该列数据终止的条件。
最初,判断【R1C5】(即【E1】)是否为空?不为空,则【R1C5】的数据有效并追加,然后递增一行到【R2C5】(即【E2】),继续判断,以此类推。
以本表为例,当递增到【R4C5】(即【E4】)时,【R4C5】数据为空,则该数据无效,【R4C5】需往右跳转一列,同时行序数重置为1,即【R4C5】变为【R1C6】(即【F1】)。逻辑图如下:
在【行序数】、【列序数】列中填写公式,并按需复制填充。
其中行序数【B3】=IF(INDIRECT("R"&(B2+1)&"C"&C2,0)="",$B$2,B2+1)。
根据上面的逻辑解析,意思是原来行序数【B2】和列序数【C2】,组成引用地址【R1C5】(即【E1】),往下递增一行变成【R2C5】(即【E2】),判断【R2C5】的值是否为空(到达列最末行的下一行),空则行序数重置为初始值【$B$2】(注意要绝对引用,确保初始行是一致的);非空则列序数往下递增+1,变为B2+1。
同时,列序数的公式为【C3】:=IF(INDIRECT("R"&(B2+1)&"C"&C2,0)="",C2+1,C2)。
引用地址【R1C5】(即【E1】),往下递增一行变成【R2C5】(即【E2】),判断【R2C5】的值是否为空(到达列最末行的下一行),空则列序数重置往右递增一列变成C2+1,非空则列序数不变(等于上一次的列序数)。
为了让小程序变得更美观直爽,也让甲纯对追加数据在哪里截止一目了然。可以在【数据追加】列进行空数据判断,数据为空不显示(显示为空字符””)。
并增加一列判断列,当【数据追加】列的数据为空时,显示“【终止】”,提示追加数据到此终止。
注意:因为增加了一列,所以起始的列序数【D2】原来为5(即E列),现在应该+1(即F列开始),更改为6。
今后要使用时,只需要将公式预先多复制一些,比如1000行或者更多,然后把要做追加的数据复制进来,追加后的数据就会自动生成了!程序演示如下:
还可以通过修改起始的行序数,自动去除标题行的影响。
上述就是多列数据追加为一列数据的小程序,该程序单独使用应对大数据量的追加,只需要稍作修改,就可以实现同时追加2列或者多列数据,或者把行、列对调,变成把多行数据追加为一行数据的小程序,甲纯们有兴趣的话,可以自行延伸扩展。
本程序是将单元格为空作为每一列数据终止的条件,可是如果确确实实存在列的中间有单元格就是为空,那怎么办?纯老师下一期开讲。
sqlserver 如何把一列分为一行显示_EXCEL神乎其技 多列追加为一列相关推荐
- sqlserver 如何把一列分为一行显示_SqlServer数据库如何快速修改表的一列值
工作中我们会遇到一个表的一列值需要进行整体更换为另一个表的某个字段的值,那么我们该如何处理呢? 数据源 Room表 新的Room表 现将Room表的RoomTypeID列替换成Room_new表的Ro ...
- elementui table 表格固定列最后一行显示不全
elementui table 表格固定列最后一行显示不全 这种情况有时在宽度刚好处于临界值状态时会出现.因为固定列是独立于表格body动态计算高度的,出现了固定列高度小于表格高度所以造成最后一行被遮 ...
- SQLite在指定列后面插入字段_excel:批量插入任意空列,隔列插入空列,隔任意列插入空列...
上期讲解了隔行插入空行,今天我们将讲解下如何批量插入空列,已经如何隔列插入空行,隔任意列插入空行.我们在遇到重复操作问题的时候,应该先想想有没有批量操作的办法,而不是手工一列列的插入. 1.批量插入任 ...
- mysql 类似wm concat_oracle的wm_concat()和mysql的group_concat()合并同列变成一行的用法以及和concat()合并不同列的区别...
前言 标题几乎已经说的很清楚了,在oracle中,concat()函数和 " || " 这个的作用是一样的,是将不同列拼接在一起:那么wm_concat()是将同属于一个组的(gr ...
- SQL Server表竖列转横向显示
----------联合查询结果集存入临时表 select * into ##tmpa from (select wh_WhName,sum(ps_DiscountMoney) as moneys,p ...
- 设置oracle每行显示字符个数,Oracle一列的多行数据拼成一行显示字符-Oracle
Oracle一列的多行数据拼成一行显示字符 oracle 提供了两个函数WMSYS.WM_CONCAT 和 ListAgg函数. www.2cto.com 先介绍:WMSYS.WM_CONCAT 例: ...
- python 做行转列通过enbid对应多个cell一行显示
今日领导要求把基站和小区对应起来并在一行显示.使用excel发现透视中无值选项. 通过python 中panda库中的pivot函数解决. pivot(index=None, columns=None ...
- mysql和sqlserver共存_mysql 和sqlserver的 多行合并成一行
mysql 和sqlserver的 多行合并成一行 mysql 多行合并: mysql 内置函数 group_concat(exper SEPARATOR " " ) expe ...
- 8SimpleAdapter:一行显示的数据有图标
SimpleAdapter:一行显示的数据有图标,文本等信息. SimpleAdapter(Context context, List<? extends Map<String, ?> ...
最新文章
- 3.83亿开房记录被泄露后,万豪又又又泄露用户数据了
- 创建一个强名称密钥文件+ 如何在 Visual C# .NET 中将程序集安装到全局程序集缓存中...
- 【Flutter】Hero 动画 ( Hero 动画使用流程 | 创建 Hero 动画核心组件 | 创建源页面 | 创建目的页面 | 页面跳转 )
- puppet最新源码包安装学习笔记
- 【linux开发】IO端口和IO内存的区别及分别使用的函数接口
- 【并查集】 HDU 4424 Conquer a New Region 贪心
- Python学习笔记:入门(1)
- Objective-C MacOS的管理员权限继承
- 安卓期末作品小项目_每日一个财务小知识——洞悉洞晰财务报告第一季
- [react] 在JSX中如何写注释?
- qiniudn.com域名已完全恢复
- delphi 算术溢出解决方法_文言文代码算什么?跟着九章算术学Python编程才厉害...
- Git,GitHub入门
- 基于文本数据的情感分析系统
- Suricata/Snort规则参考
- excel游戏_Excel 20190912的娱乐和游戏
- Keyshot渲染-关于导入提示:未检索到几何图形的解决方法。
- Oracle中Start With的用法
- 大学计算机基础b上机考试题目,大学计算机基础上机考试题库
- Niushop 分销推广员管理
热门文章
- 曝荣耀仍未获得谷歌Android授权;诋毁鸿蒙的OPPO员工离职;微信圈子将停止运营|极客头条...
- 新职业风口已至!人社部宣布这 10 个职业缺口近千万!
- 全国程序员工资最新统计来了,平均 14,542 元!
- 超 6 万的微软工程师是如何进行代码审查的?| CSDN 博文精选
- 小姐姐公开征婚高智商 IT 男:微信号竟要质数解密?
- 动画:什么是散列表?
- 啥是佩奇,Python 告诉你!
- 2018 终了,是时候秀出我的 Git 进化日志了!
- 加密货币大崩盘:第一季度最大跌幅高达 88%!
- html span离div块有边距,html块 div span