ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 418|回复: 13

[已解决] 如何把部分行列进行转换? 前面信息按行复制显示

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-8-16 17:24 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 二号小学生 于 2024-8-19 16:21 编辑

想要实现的结果:

A-C列,基本信息保持不变,后面每个项目,都在竖向的一列上。即,后面不同项目由横向的,变成纵向的,见右图。

表格位于sheet2。


行列部分转换.png

把部分行换成列,同时前面部分每行都出现.zip

23.88 KB, 下载次数: 23

TA的精华主题

TA的得分主题

发表于 2024-8-16 17:42 | 显示全部楼层
  1. =REDUCE({"国籍","姓名代码","体重KG","项目","项目时间"},目前的表格!A2:A8,LAMBDA(x,y,VSTACK(x,IFNA(HSTACK(OFFSET(y,,,,3),WRAPROWS(TOROW(IF(OFFSET(y,,3,,6)="",\,OFFSET(y,,3,,6)),3),2)),OFFSET(y,,,,3)))))
复制代码

TA的精华主题

TA的得分主题

发表于 2024-8-16 17:52 | 显示全部楼层
用PQ解决。。。。。。。。。。。。。。。。。。。
捕获.JPG
捕获2.JPG

TA的精华主题

TA的得分主题

发表于 2024-8-16 18:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=REDUCE({"国籍","姓名代码","体重KG","项目","项目时间"},目前的表格!D2:D8,LAMBDA(x,y,VSTACK(x,IFNA(HSTACK(OFFSET(y,,-3,,3),WRAPROWS(TOCOL(OFFSET(y,,,,6),1),2)),OFFSET(y,,-3,,3)))))

TA的精华主题

TA的得分主题

发表于 2024-8-16 20:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-17 08:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-17 08:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
凑一个...试试

把部分行换成列,同时前面部分每行都出现.rar

22.14 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2024-8-17 09:03 | 显示全部楼层
Python+Pandas:
import pandas as pd

df = pd.read_excel('pandas exercise/sample378.xlsx', usecols='a:i', nrows=7, index_col=[0,1,2])
a = iter(df.columns)
lst = []
for item in zip(a, a):
    df1 = df[list(item)].dropna(how='any')
    df1.columns = ['项目', '项目时间']
    lst.append(df1)
pd.concat(lst).sort_index().reset_index()
image.png

TA的精华主题

TA的得分主题

发表于 2024-8-17 09:40 | 显示全部楼层
本帖最后由 高山磐石 于 2024-8-17 09:52 编辑

=FILTER(DROP(REDUCE("",SEQUENCE(7),LAMBDA(X,Y,VSTACK(X,IFNA(HSTACK(OFFSET(A1:C1,Y,0),VSTACK(OFFSET(D1:E1,Y,0),OFFSET(F1:G1,Y,0),OFFSET(H1:I1,Y,0))),OFFSET(A1:C1,Y,0))))),1),CHOOSECOLS(DROP(REDUCE("",SEQUENCE(7),LAMBDA(X,Y,VSTACK(X,IFNA(HSTACK(OFFSET(A1:C1,Y,0),VSTACK(OFFSET(D1:E1,Y,0),OFFSET(F1:G1,Y,0),OFFSET(H1:I1,Y,0))),OFFSET(A1:C1,Y,0))))),1),4)<>0)


=FILTER(DROP(REDUCE("",SEQUENCE(7),LAMBDA(X,Y,VSTACK(X,IFNA(HSTACK(OFFSET(目前的表格!A1:C1,Y,0),VSTACK(OFFSET(目前的表格!D1:E1,Y,0),OFFSET(目前的表格!F1:G1,Y,0),OFFSET(目前的表格!H1:I1,Y,0))),OFFSET(目前的表格!A1:C1,Y,0))))),1),CHOOSECOLS(DROP(REDUCE("",SEQUENCE(7),LAMBDA(X,Y,VSTACK(X,IFNA(HSTACK(OFFSET(目前的表格!A1:C1,Y,0),VSTACK(OFFSET(目前的表格!D1:E1,Y,0),OFFSET(目前的表格!F1:G1,Y,0),OFFSET(目前的表格!H1:I1,Y,0))),OFFSET(目前的表格!A1:C1,Y,0))))),1),4)<>0)

下面这个放到目前的表格的A2单元格,如果有更多的行数,只要将7改为需要的行数就可以。

TA的精华主题

TA的得分主题

发表于 2024-8-17 11:02 | 显示全部楼层
=REDUCE($A$1:$E$1,$A$2:$A$8,LAMBDA(x,y,IFNA(VSTACK(x,HSTACK(y,OFFSET(y,,1,,2),TEXT(WRAPROWS(TOCOL(OFFSET(y,,3,,6),3),2),"yyyy-mm-dd"))),HSTACK(y,OFFSET(y,,1,,2)))))

image.png

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 21:11 , Processed in 0.047859 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表