问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Excel 如何提取某列中的非空值

发布网友 发布时间:2022-04-22 01:58

我来回答

4个回答

懂视网 时间:2022-05-06 17:47

如题,前端时间群里有人问的这个问题,正好有空,就关注了一下。 现状 dbone=# select * from tb_test;id | uname | addr----+-------+------1 | a |2 | a |3 | |4 | |5 | |6 | bb |7 | |8 | |9 | x |10 | |(10 rows)期望结果:id | uname----+-------1 | a2

如题,前端时间群里有人问的这个问题,正好有空,就关注了一下。

现状

dbone=# select * from tb_test;
id | uname | addr
----+-------+------
1 | a |
2 | a |
3 | |
4 | |
5 | |
6 | bb |
7 | |
8 | |
9 | x |
10 | |
(10 rows)

期望结果:
id | uname
----+-------
1 | a
2 | a
3 | a
4 | a
5 | a
6 | bb
7 | bb
8 | bb
9 | x
10 | x
(10 rows)

可以如下:
dbone=# select b.id,
case
when b.uname!='' then b.uname
else (select a.uname from tb_test a where a.uname!='' and a.id

也可以用窗口函数,如下:

dbone=# SELECT
dbone-# id, uname, uname_partition, first_value(uname) over (partition by uname_partition order by id)
dbone-# FROM (
dbone(# SELECT
dbone(# id,
dbone(# uname,
dbone(# sum(case when uname is null then 0 else 1 end) over (order by id) as uname_partition
dbone(# FROM tb_test
dbone(# ORDER BY id ASC
dbone(# ) as q;
id | uname | uname_partition | first_value
----+-------+-----------------+-------------
1 | a | 1 | a
2 | a | 2 | a
3 | | 2 | a
4 | | 2 | a
5 | | 2 | a
6 | bb | 3 | bb
7 | | 3 | bb
8 | | 3 | bb
9 | x | 4 | x
10 | | 4 | x
(10 rows)


dbone=# 	iming
Timing is on.
dbone=# SELECT
id, uname, uname_partition, first_value(uname) over (partition by uname_partition order by id)
FROM (
SELECT
id,
uname,
sum(case when uname is null then 0 else 1 end) over (order by id) as uname_partition
FROM tb_test
ORDER BY id ASC
) as q;
id | uname | uname_partition | first_value
----+-------+-----------------+-------------
1 | a | 1 | a
2 | a | 2 | a
3 | | 2 | a
4 | | 2 | a
5 | | 2 | a
6 | bb | 3 | bb
7 | | 3 | bb
8 | | 3 | bb
9 | x | 4 | x
10 | | 4 | x
(10 rows)


Time: 0.805 ms
dbone=# select b.id,
case
when b.uname!='' then b.uname
else (select a.uname from tb_test a where a.uname!='' and a.id Seq Scan on tb_test b (cost=0.00..12.80 rows=10 width=82)
SubPlan 1
-> Limit (cost=1.16..1.17 rows=1 width=82)
-> Sort (cost=1.16..1.17 rows=3 width=82)
Sort Key: a.id
-> Seq Scan on tb_test a (cost=0.00..1.15 rows=3 width=82)
Filter: (((uname)::text <> ''::text) AND (id < b.id))
(9 rows)


Time: 1.880 ms
dbone=#
dbone=#
dbone=#
dbone=#
dbone=#
dbone=# explain SELECT
id, uname, uname_partition, first_value(uname) over (partition by uname_partition order by id)
FROM (
SELECT
id,
uname,
sum(case when uname is null then 0 else 1 end) over (order by id) as uname_partition
FROM tb_test
ORDER BY id ASC
) as q;
QUERY PLAN
---------------------------------------------------------------------------------------
WindowAgg (cost=1.71..1.91 rows=10 width=90)
-> Sort (cost=1.71..1.73 rows=10 width=90)
Sort Key: q.uname_partition, q.id
-> Subquery Scan on q (cost=1.27..1.54 rows=10 width=90)
-> WindowAgg (cost=1.27..1.44 rows=10 width=82)
-> Sort (cost=1.27..1.29 rows=10 width=82)
Sort Key: tb_test.id
-> Seq Scan on tb_test (cost=0.00..1.10 rows=10 width=82)
(8 rows)


Time: 0.770 ms

这儿只有十条记录,性能相差不大,如果记录多还是要用窗口函数来的快


热心网友 时间:2022-05-06 14:55

提取列中的非空值可以使用公式也可以利用操作技巧来完成。下面从两种方法做以演示:

公式法:

输入公式=INDIRECT("a"&SMALL(IF(NOT(ISBLANK($A$1:$A$6)),ROW($A$1:$A$6),36550),ROW(A1))),单元格引用可以根据自己的表格做相应的调整,ctrl+shift+enter组合键确定数值公式,然后向下拖动填充公式,当拖拽到数值为0时停止,删除后面的0。



2.使用定位功能,选中列数据,按住f5键跳出定位对话框,选择常量。最后将数据复制粘贴到另一行。


可根据自己的实际需求选择使用方法。

热心网友 时间:2022-05-06 16:13

这个要用,offset和match函数来完成。用match先查出一个值的位置。把这个值作为offset偏移的值。还要查第二个相同的值。就麻烦点。因为match只查一个值出现的第一个位值。所以从第二值查找的时候就是改变查找区域。如果可以的话你发过来帮你做一下。一下说不清。我的邮箱wzh2228@msn.com或QQ75912228

热心网友 时间:2022-05-06 17:48

没见图二
如何在Excel中找到第一行中最后一个非空的值。

=INDEX(A1:A100,MAX(ROW(A1:A100)*(A1:A100"")))如果要获取第一行中最后一个非空单元格值,公式为:=INDEX(1:1,MAX(COLUMN(1:1)*(1:1"")))上述公式输入完毕后,按Ctrl+Shift+Enter结束。另外,还可以使用下面的公式:1.查找数据为数值:=LOOKUP(9E+307,A1:A100)说明:9.99999999999999...

Excel 如何提取某列中的非空值

提取列中的非空值可以使用公式也可以利用操作技巧来完成。下面从两种方法做以演示:公式法:输入公式=INDIRECT("a"&amp;SMALL(IF(NOT(ISBLANK($A$1:$A$6)),ROW($A$1:$A$6),36550),ROW(A1))),单元格引用可以根据自己的表格做相应的调整,ctrl+shift+enter组合键确定数值公式,然后向下拖动填充公...

excel用数组公式从一列中提取非空单元格值

如果Excel工作表的某列中包含一些空单元格,要去掉这些空单元格,将非空单元格内容放到另一列中,最快的方法是通过筛选隐藏空单元格,再复制到其他列中。如果不使用筛选,还可以用下面的数组公式:假如数据在A2:A20区域中,将提取后的数据放到B列中,在B2单元格中输入数组公式:=INDEX($A$2:$A$20...

excel用数组公式获取一列中非空非零值

公式输入完毕后,按Ctrl+Shift+Enter结束,然后向下填充即可。公式说明:上例A1:A10区域中,第1、2、4、10行包含非零、非空数据,先用“IF($A$1:$A$10&gt;0,ROW($1:$10),"")”来产生一个数列“{1;2;"";4;"";"";"";"";"";10}”,然后用SMALL函数来获取非空数值,最后用OFFSET函数...

excel怎样判断一列中非空值

1、打开需要操作的excel表格。2、选中单元格c2,依次点击【插入】、【插入函数】。3、在弹出的窗口选中【IF】,点击【确定】。4、在一个参数框输入【a2""】,即不为空。5、在第二个参数框输入【a2&amp;b2】,即将a2和b2中的内容连接起来。6、在第三个参数框输入【b3】,点击【确定】。7...

excel用数组公式获取一列中的第一个非空单元格值

获取一列中第一个非空单元格值,假设数据在A1:A10区域中:=INDEX(A1:A10,MATCH(TRUE,LEN(A1:A10)&gt;0,0),1)=INDEX(A1:A10,MATCH(,0/(A1:A10&gt;""),))=INDEX(A1:A10,SMALL(IF(A1:A10&gt;"",ROW(A1:A10)),1))公式输入完毕后按Ctrl+Shift+Enter结束。获取一行中的第一个非空单元格值,...

excel中如何在一列资料中提出非空字元

excel中如何在一列资料中提出非空字元 如果需要在Excel中获取某行或某列中最后一个非空单元格中的资料,可以使用下面的阵列公式: 假如资料在A1:A100区域中,要获取最后一个非空单元格值,公式为: =INDEX(A1:A100,MAX(ROW(A1:A100)*(A1:A100&lt;&gt;""))) 如果要获取第一行中最后一个非空...

Excel如何查找非空值excel非空值判断

在Excel中对数据进行筛选时,有时需要将数据中某列数值为空的信息筛选出来,或是只筛选出非空的信息,这就要用到Excel为我们提供的强大的筛选功能,可以利用此功能筛选出空或非空值。1、显示空值。在表格中,我们想筛选出成绩为空值的数据,所以把鼠标定位在数据区域内。2、选择“数据”菜单选项卡,...

excel提取一列中非空值做下拉菜单?

在Excel中创建下拉菜单时,通常需要从现有数据中筛选出非空值作为可供选择的项目。这里提供一种简便的方法来制作仅包含非空值的下拉菜单:假设您的数据位于A列,您希望在B列创建一个下拉菜单,其中只包含A列的非空值。操作步骤:选择用于下拉菜单的目标单元格:选择B列中的第一个单元格(例如,B1),...

Excel中如何获取某列(行)最后一个非空单元格的值

1、接下来的公式可以返回A列中最后一个非空单元格的行号:=MAX((A:A&lt;&gt;"")*(ROW(A:A)))2、通过这个行号我们就可以使用ADDRESS函数来获取到此单元格的地址:=ADDRESS(MAX((A:A&lt;&gt;"")*(ROW(A:A))),COLUMN(A:A))3、最后我们以此获取到的地址为基础使用INDIRECT函数就可以获取到此单元...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上海大名城映_有多少户? 英特尔处理器漏洞有哪些害? 英特尔漏洞都会影响哪些CPU?下一代还会影响吗? cpu使用率100%是怎么回事呀? 生姜红茶减肥法骗局 鲁东大学大一新生电话卡是用的学校发的联通卡吗? 鲁东大学用移动的多还是用联通的多?求师哥师姐们解答 ...牙齿一碰到溃疡就疼,治疗口腔溃疡的偏方有哪些呢? 我想找一个飞车情侣名字,我有车队,车队名字是丿茗门丨灬 梦幻悟空传变态版安卓APK excel 怎么选取一列的非空值 excel里选择随机的非空值数据【如果是 按——列】? mysql创建表时的空值和非空值设置有什么讲究 EXCEL 判断非空 excel里选择随机的非空值数据 EXCEL筛选非空数值并且排列 请问EXCEL中用什么函数表示非空 access中空/非空是什么意思?怎么设置? excel 数据 筛选中的空白 非空白选项不见了? 如何通过,adb install 把程序安装到sdcard上 Android怎样用代码实现安装apk到/system/app 如何使用adb命令安装apk到电视上 android怎么通过adb启动apk adb安装apk错误 请问VC调用ADb安装APK到安卓手机,在安装APK之前怎... 如何用adb命令将软件安装为系统软件 怎么用Adb安装软件到手机,? windows下怎样用adb安装apk 如何通过adb命令安装app到安装终端 如何用adb安装软件 请问:在sap系统里,如果筛选某列数据用条件非空时... 如何用函数在选定范围内筛选符合条件的非空值 EXCEL 多列 非空值 排序 在excel中找出表格中的非空值并复制 如何在EXCEL单元格中显示非空的数值 EXCEL如何返回非空单元格 Excel统计非空值 谁手里有没有plc编程入门视频教程呢? Excel 怎么一次性删除非空值的空白单元格 三菱plc视频教程全套下载 excel查询符合相同条件的第一个非空值 谁有plc入门视频教程下载,求推荐! 如何找到EXCEL一行中的首个非空值,并且需要返回这... 网盘里有三菱PLC的视频教程的同学希望可以分享一下... 求plc编程入门基础知识教学plc编程入门视频教程全... 哪有免费的plc视频教程 谁有施耐德PLC编程的相关视频教程? 工控学院plc视频教程全集下载元如君 PLC编程视频教程15 三菱官网有PLC视频教程吗?