摸鱼 职场 Rules & Tips
1. 遵守中国大陆相关法律法规
2. 反对成功学和贩卖焦虑
3. 提倡分享从业心得和经验

大家碰到不会解的 Excel 有什么解决诀窍?

查看: 1475|回复: 12
1
飞胖芋头 发表于 2024-9-12 11:00:55
碰到一些比较难以解决的小问题。

1726108606046.jpg

PixPin_2024-09-12_10-37-08.png

PixPin_2024-09-12_10-36-59.png
 楼主| 飞胖芋头 发表于 2024-9-12 11:02:13
想把图一的格式批量改成图二,转置实现不了数据的匹配,如何进行为好
CBLZX 发表于 2024-9-13 16:06:31
嘻嘻~
成果如图,预计是达到你的期待值了。

图片.png

解题思路  -> 合理使用Chatgpt来进行合理公式的运用
  1:
  1. 现在有个表格,需要查询
  2. B14搜索区域是C6:C10(搜索区域不变)  //搜索行
  3. D13搜索区域是D4:Q4(搜索区域不变)  //匹配唯一列
  4. C14搜索区域是D5:Q5(搜索区域不变)  //再次filter
  5.   循环匹配到唯一列,然后取行列的交叉点的值
复制代码

  2: 根据公式进行优化
  1. =INDEX(D6:Q10, MATCH(B14, C6:C10, 0), MATCH(D13, D4:Q4, 0))
  2. 这种情况,关于列的选择MATCH(D13, D4:Q4, 0),我希望有第二次的判定,因此,满足这个的列有很多,因此我希望取到的列,需要轮询匹配D5:Q5中的值需要匹配到C14,这个列才是我们需要的列,
  3. 并且D5:Q5  C6:C10 D4:Q4 使用锁定符号
复制代码

  3:这样就可以获取了最后的公式了
   
  1. =INDEX($D$6:$Q$10, MATCH($B14, $C$6:$C$10, 0), MATCH($C14, $D$5:$Q$5, 0) + MATCH(D$13, $D$4:$Q$4, 0) - 1)
复制代码

  4:剩下的就是一些优化,比如保留0或者空,如何批量double复制,如何删除重复值什么的
   
  成果物在附件里了

成果物.rar

15.15 KB, 阅读权限: 20, 下载次数: 7, 下载积分: Bit -1

售价: 1 Bit  [记录]

不想填昵称 发表于 2024-9-12 14:34:54
1.新建一个表
2.复制原表格
3.把原表格粘贴到新表
4.黏贴后会出现“Ctrl”小图标,点小图标选择“转置”
cress2002 发表于 2024-9-12 17:57:16
它这个需求不是一个简单转置指令能解决的,目前的最优解,就是用AI,把任务说清楚了,给个样例,让AI处理这个excel,推荐claude 3.5或GPT 4o
haikunbuluo 发表于 2024-9-14 10:27:28
评论的思路有点妙,学习一波
待定 发表于 2024-9-14 13:53:58
淘宝有代做的
 楼主| 飞胖芋头 发表于 2024-9-17 13:22:34
CBLZX 发表于 2024-9-13 16:06
嘻嘻~
成果如图,预计是达到你的期待值了。

感谢
玫瑰枫蛾 发表于 2024-9-17 17:47:42
CBLZX 发表于 2024-9-13 16:06
嘻嘻~
成果如图,预计是达到你的期待值了。

是哪个GPT
CBLZX 发表于 2024-9-18 09:52:18

OpenAI chatgpt
txt148 发表于 2024-9-26 10:21:20
既然是excel,楼主可有听说过power query?
power query可以将操作的步骤保留下来,相当于编程,以后可以自动处理。
表1、表2都是多维表,我们可以把多维表逆透视成一维表,再转化为多维表。

虽然下面的内容多,但实际上基本鼠标点点就可以,如果做不下来,可以按照文末的方法把代码粘贴进去。

步骤如下截图:
选中数据区域,切换到“数据”选项卡,点“来自表格/区域”,
image.png
弹出窗口“创建表”,不要勾选“表包含标题”,点确定后进入power query编辑器。
image.png
现在开始第一步,把多维表还原成一维表。
切换到“转换”选项卡,点左边“转置”,这样列Column1是日期,Column2是类型。
还是在“转换”选项卡,左边第二个按钮是“将第一行用作标题”,点完之后姓名变成了标题。
image.png
选中列Column1和列Column2,点击“逆透视列”右边的小三角,点击“逆透视其他列”,到这个步骤,已经把多维表转换为一维表。
在现在这个阶段把Column1转化为日期格式,选中列Column1,还是在“转换”选项卡,点击右侧“日期”右边的小三角,点击“仅日期”

从现在的步骤开始,我们把一维表转换为多维表。
选中列Column1,点击“转换”选项卡下,任意列的“透视列”,弹出的窗口,值列选择数字所在的列,点确定。
如果点完之后,像我一样姓名列在第二列,直接把姓名列拖到前面。如果想改变列名称,双击列名改名
然后点列右边的小三角,升序排序,现在已经是我们想要的多维表。

是不是觉得上面的步骤太琐碎了?没关系,你可以复制我的步骤,在打开power query页面后,切换到“主页”选项卡,点击高级编辑器。开始改代码。

你的代码应该是这样的:
```m
let
    源 = Excel.CurrentWorkbook(){[Name="表3"]}[Content]
in
    源
```
前面两行不要动,从in开始(包括in),把我的代码从转置表 = Table.Transpose(源),这一行(包括这一行)复制并覆盖过去。
```m
let
    源 = Excel.CurrentWorkbook(){[Name="表5"]}[Content],
    转置表 = Table.Transpose(源),
    提升的标题 = Table.PromoteHeaders(转置表, [PromoteAllScalars=true]),
    逆透视的其他列 = Table.UnpivotOtherColumns(提升的标题, {"Column1", "Column2"}, "属性", "值"),
    提取的日期 = Table.TransformColumns(逆透视的其他列,{{"Column1", DateTime.Date, type date}}),
    重排序的列 = Table.ReorderColumns(提取的日期,{"Column1", "属性", "Column2", "值"}),
    已透视列 = Table.Pivot(Table.TransformColumnTypes(重排序的列, {{"Column1", type text}}, "zh-CN"), List.Distinct(Table.TransformColumnTypes(重排序的列, {{"Column1", type text}}, "zh-CN")[Column1]), "Column1", "值", List.Sum),
    重命名的列 = Table.RenameColumns(已透视列,{{"属性", "姓名"}}),
    排序的行 = Table.Sort(重命名的列,{{"姓名", Order.Ascending}, {"Column2", Order.Descending}})
in
    排序的行
```
image.png
image.png
txt148 发表于 2024-9-26 10:23:43
txt148 发表于 2024-9-26 10:21
既然是excel,楼主可有听说过power query?
power query可以将操作的步骤保留下来,相当于编程,以后可以自 ...

图片和代码排版乱了,将就看吧。

你的代码应该是这样的:
```
let
    源 = Excel.CurrentWorkbook(){[Name="表3"]}[Content]
in
    源
```
前面两行不要动,从in开始(包括in),把我的代码从转置表 = Table.Transpose(源),这一行(包括这一行)复制并覆盖过去。
```
let
    源 = Excel.CurrentWorkbook(){[Name="表5"]}[Content],
    转置表 = Table.Transpose(源),
    提升的标题 = Table.PromoteHeaders(转置表, [PromoteAllScalars=true]),
    逆透视的其他列 = Table.UnpivotOtherColumns(提升的标题, {"Column1", "Column2"}, "属性", "值"),
    提取的日期 = Table.TransformColumns(逆透视的其他列,{{"Column1", DateTime.Date, type date}}),
    重排序的列 = Table.ReorderColumns(提取的日期,{"Column1", "属性", "Column2", "值"}),
    已透视列 = Table.Pivot(Table.TransformColumnTypes(重排序的列, {{"Column1", type text}}, "zh-CN"), List.Distinct(Table.TransformColumnTypes(重排序的列, {{"Column1", type text}}, "zh-CN")[Column1]), "Column1", "值", List.Sum),
    重命名的列 = Table.RenameColumns(已透视列,{{"属性", "姓名"}}),
    排序的行 = Table.Sort(重命名的列,{{"姓名", Order.Ascending}, {"Column2", Order.Descending}})
in
    排序的行
```
zhangshuyx 发表于 2024-9-27 16:20:56
python可以处理 不复杂
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

虫部落 陕ICP备14001577号-1川公网安备 51019002003015号联系我们FAQ关于虫部落免责声明虫部落生存法则社区广场

Build with for "make search easier" Copyright © 2013-2024. Powered by Discuz! GMT+8, 2024-10-9 21:14

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