ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 数据排列连在一起,求各就各位

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-12 22:59 | 显示全部楼层 |阅读模式
本帖最后由 lljd808 于 2024-5-12 23:24 编辑

这里共有6种商品(还可以更多比如10种)                                
                                
但每组数据都是乱的,各个数据整齐准确排列                                
                                
                                
                                
                                
                                
                                
                                
                                
                                
                具体要达到的效果请见附本,求大侠帮忙,谢谢!


排列混在一起样本.zip

11.71 KB, 下载次数: 21

TA的精华主题

TA的得分主题

发表于 2024-5-13 00:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这里系统导出来的数据吗?如果是,真不相信系统出具的数据有这么乱

TA的精华主题

TA的得分主题

发表于 2024-5-13 00:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
数据居然全是错位的

TA的精华主题

TA的得分主题

发表于 2024-5-13 00:25 | 显示全部楼层
还是先想清楚怎么把前端的系统优化好把

TA的精华主题

TA的得分主题

发表于 2024-5-13 11:27 | 显示全部楼层
WPS里的JSA练习一下,纯力气活儿——


微信截图_20240513112302.png

QQ截图20240513111902.png


240513_排列混在一起样本.rar

13.29 KB, 下载次数: 3

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-13 13:06 | 显示全部楼层
PQ 方案,香不香???????????


  1. <div class="blockcode"><blockquote>let
  2.   源 = Excel.CurrentWorkbook(){[Name = "表1"]}[Content],
  3.   Tab1 = Table.RemoveColumns(源, {"列1", "列2", "列3"}),
  4.   Tab2 = Table.TransformColumnTypes(
  5.     Tab1,
  6.     {
  7.       {"价格", type text},
  8.       {"代码", type text},
  9.       {"商品", type text},
  10.       {"入库", type text},
  11.       {"出库", type text},
  12.       {"余额", type text},
  13.       {"比例", type text}
  14.     }
  15.   ),
  16.   Tab3 = Table.ReplaceErrorValues(
  17.     Tab2,
  18.     {
  19.       {"价格", null},
  20.       {"代码", null},
  21.       {"商品", null},
  22.       {"入库", null},
  23.       {"出库", null},
  24.       {"余额", null},
  25.       {"比例", null}
  26.     }
  27.   ),
  28.   Tab4 = Table.RemoveColumns(Tab3, {"余额"}),
  29.   Tab5 = Table.TransformColumns(
  30.     Tab4,
  31.     {
  32.       {
  33.         "价格",
  34.         each List.Transform(
  35.           Splitter.SplitTextByRepeatedLengths(7)(_),
  36.           each
  37.             if Text.Contains(_, ".") then
  38.               Text.PadEnd(_, 7, "0")
  39.             else
  40.               Text.PadEnd(_ & ".", 7, "0")
  41.         )
  42.       },
  43.       {"代码", each Splitter.SplitTextByRepeatedLengths(6)(_)},
  44.       {
  45.         "入库",
  46.         each [
  47.           a = Text.BeforeDelimiter(_, "万"),
  48.           b =
  49.             if Text.Contains(a, ".") then
  50.               {Text.PadEnd(a, 6, "0")}
  51.             else
  52.               List.Transform(
  53.                 Splitter.SplitTextByRepeatedLengths(6)(a),
  54.                 each Text.From(Number.Round(Number.From(_) / 10000, 2))
  55.               )
  56.         ][b]
  57.       },
  58.       {
  59.         "出库",
  60.         each [
  61.           a = Text.BeforeDelimiter(_, "万"),
  62.           b =
  63.             if Text.Contains(a, ".") then
  64.               {Text.PadEnd(a, 6, "0")}
  65.             else
  66.               List.Transform(
  67.                 Splitter.SplitTextByRepeatedLengths(6)(a),
  68.                 each Text.From(Number.Round(Number.From(_) / 10000, 2))
  69.               )
  70.         ][b]
  71.       },
  72.       {
  73.         "比例",
  74.         each [
  75.           a = Splitter.SplitTextByCharacterTransition({"0" .. "9"}, {"-"})(_),
  76.           b = List.Transform(a, each Text.PositionOf(_, ".", 2)),
  77.           c = List.Transform(b, each {0} & List.Transform(_, (x) => x + 3)),
  78.           d = List.Select(
  79.             List.Combine(
  80.               List.Accumulate(
  81.                 {0 .. List.Count(b)},
  82.                 {},
  83.                 (x, y) => x & {try Splitter.SplitTextByPositions(c{y})(a{y}) otherwise {null}}
  84.               )
  85.             ),
  86.             each _ <> null and _ <> ""
  87.           )
  88.         ][d]
  89.       }
  90.     }
  91.   ),
  92.   Lst1 = Table.ToColumns(Tab5),
  93.   Lst2 = List.Transform(Lst1, each if _{0} is text or _{0} = null then _ else List.Combine(_)),
  94.   Lst3 = Lst2,
  95.   Lst4 = List.Transform(List.Zip({Lst3{3}, Lst3{4}}), each Number.From(_{0}) - Number.From(_{1})),
  96.   Lst5 = List.InsertRange(Lst3, 5, {Lst4}),
  97.   Cols = Table.ColumnNames(Tab1),
  98.   Result = Table.FromColumns(Lst5, Cols)
  99. in
  100.   Result
复制代码

image.png

TA的精华主题

TA的得分主题

发表于 2024-5-13 13:33 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name = "表1"]}[Content],
  Tab1 = Table.RemoveColumns(源, {"列1", "列2", "列3"}),
  Tab2 = Table.TransformColumnTypes(
    Tab1,
    {
      {"价格", type text},
      {"代码", type text},
      {"商品", type text},
      {"入库", type text},
      {"出库", type text},
      {"余额", type text},
      {"比例", type text}
    }
  ),
  Tab3 = Table.ReplaceErrorValues(
    Tab2,
    {
      {"价格", null},
      {"代码", null},
      {"商品", null},
      {"入库", null},
      {"出库", null},
      {"余额", null},
      {"比例", null}
    }
  ),
  Tab4 = Table.RemoveColumns(Tab3, {"余额"}),
  Tab5 = Table.TransformColumns(
    Tab4,
    {
      {
        "价格",
        each List.Transform(
          Splitter.SplitTextByRepeatedLengths(7)(_),
          each
            if Text.Contains(_, ".") then
              Text.PadEnd(_, 7, "0")
            else
              Text.PadEnd(_ & ".", 7, "0")
        )
      },
      {"代码", each Splitter.SplitTextByRepeatedLengths(6)(_)},
      {
        "入库",
        each [
          a = Text.BeforeDelimiter(_, "万"),
          b =
            if Text.Contains(a, ".") then
              {Text.From(Number.Round(Number.From(a), 1))}
            else
              List.Transform(
                Splitter.SplitTextByRepeatedLengths(6)(a),
                each Text.From(Number.Round(Number.From(_) / 10000, 1))
              )
        ][b]
      },
      {
        "出库",
        each [
          a = Text.BeforeDelimiter(_, "万"),
          b =
            if Text.Contains(a, ".") then
              {Text.From(Number.Round(Number.From(a), 1))}
            else
              List.Transform(
                Splitter.SplitTextByRepeatedLengths(6)(a),
                each Text.From(Number.Round(Number.From(_) / 10000, 1))
              )
        ][b]
      },
      {
        "比例",
        each [
          a = Splitter.SplitTextByCharacterTransition({"0" .. "9"}, {"-"})(_),
          b = List.Transform(a, each Text.PositionOf(_, ".", 2)),
          c = List.Transform(b, each {0} & List.Transform(_, (x) => x + 3)),
          d = List.Select(
            List.Combine(
              List.Accumulate(
                {0 .. List.Count(b)},
                {},
                (x, y) => x & {try Splitter.SplitTextByPositions(c{y})(a{y}) otherwise {null}}
              )
            ),
            each _ <> null and _ <> ""
          )
        ][d]
      }
    }
  ),
  Lst1 = Table.ToColumns(Tab5),
  Lst2 = List.Transform(Lst1, each if _{0} is text or _{0} = null then _ else List.Combine(_)),
  Lst3 = Lst2,
  Lst4 = List.Transform(
    List.Zip({Lst3{3}, Lst3{4}}),
    each Number.Round(Number.From(_{0}) - Number.From(_{1}), 1)
  ),
  Lst5 = List.InsertRange(Lst3, 5, {Lst4}),
  Cols = Table.ColumnNames(Tab1),
  Result = Table.FromColumns(Lst5, Cols)
in
  Result

捕获.JPG

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-13 19:00 | 显示全部楼层
sunya_0529 发表于 2024-5-13 11:27
WPS里的JSA练习一下,纯力气活儿——

谢谢帮助,辛苦了,今天太忙,才上论坛看到,我在附件里没有找到代码,是不是我没有搞清楚,如果直接写上就好了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-13 19:05 | 显示全部楼层
LIUZHU 发表于 2024-5-13 00:25
还是先想清楚怎么把前端的系统优化好把

有时会这样,有时不是,不稳定,我把平时错的罗列在一起,遇到后就不怕了,现在每天浪费在无意义的辩认调整时间,让人无语。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-13 19:07 | 显示全部楼层
cnmlgb9998 发表于 2024-5-13 13:33
let
  源 = Excel.CurrentWorkbook(){[Name = "表1"]}[Content],
  Tab1 = Table.RemoveColumns(源, {"列 ...

谢谢高手,辛苦了,今天太忙,才上论坛看到, 这些代码我看和以前的不太一样,理解起来吃力,如果直接写上就好了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-24 00:34 , Processed in 0.036640 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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