ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

   
EH云课堂-专业的职场技能充电站 限时送,魔方网表将Excel变在线系统 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 免费的Excel考勤计算系统
查看: 394|回复: 13

[求助] 二维表格或者三维表格变为一维度表格,

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-1-10 17:39 | 显示全部楼层 |阅读模式

请大神们帮个忙,具体思路如下,
   1  订单号这一列删除重复值 。
   2  费用类别这一列也删除重复值,保留唯一值。然后由列转为行(倒置)
   3  然后分别找这个订单号对应得费用项 然后把金额填列进去 。

示范图片

示范图片

示范例子.zip

15.39 KB, 下载次数: 10

例子

TA的精华主题

TA的得分主题

发表于 2019-1-10 17:41 | 显示全部楼层
字典和数组的基本用法,金额需要累计?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-10 17:46 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-1-10 17:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-1-10 17:53 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-10 18:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-10 18:23 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-1-10 18:35 | 显示全部楼层
34545556 发表于 2019-1-10 18:23
老铁在吗,附件方便上传下么? 谢过了

不好意思,附件一般没保留哦,代码不多,你就辛苦敲下键盘了

TA的精华主题

TA的得分主题

发表于 2019-1-10 18:49 | 显示全部楼层
Sub 一维转二维3列为数字_汇总()
Dim dx, dy, arr, i&, j&, m&, n&, x$, y$
Set dx = CreateObject("Scripting.Dictionary")
Set dy = CreateObject("Scripting.Dictionary")
arr = Application.InputBox(prompt:="请用鼠标框选要转换的区域:不包括字段名", Type:=8)
Set jgq = Application.InputBox(prompt:="请选择:结果摆放起始位", Type:=8)
ReDim brr(1 To UBound(arr) * 2, 1 To 256)
n = 1: m = 1
For i = 1 To UBound(arr)
    If Not dx.exists(arr(i, 1)) Then
       n = n + 1
       dx(arr(i, 1)) = n
       brr(1, n) = arr(i, 1)
    End If
Next
For j = 2 To UBound(arr, 2) Step 3
   For i = 1 To UBound(arr)
      If Not dy.exists(arr(i, j)) Then
         m = m + 1
         dy(arr(i, j)) = m
         brr(m, 1) = arr(i, j)
      End If
   Next
Next
For j = 3 To UBound(arr, 2) Step 3
   For i = 1 To UBound(arr)
       x = arr(i, 1): y = arr(i, j - 1)
       brr(dy(y), dx(x)) = brr(dy(y), dx(x)) + arr(i, j) '汇数量(对应项目及系统)
       brr(dy(y), n + 1) = brr(dy(y), n + 1) + arr(i, j) '行合计
       brr(m + 1, dx(x)) = brr(m + 1, dx(x)) + arr(i, j) '列合计
       brr(m + 1, n + 1) = brr(m + 1, n + 1) + arr(i, j) '总合计
   Next
Next
brr(1, n + 1) = "合计": brr(m + 1, 1) = "合计"
With jgq   '运行数据赋值点
   .CurrentRegion.Borders.LineStyle = 0
   .CurrentRegion.ClearContents
   .Resize(n + 1, m + 1) = Application.Transpose(brr)
   .Resize(n + 1, m + 1).Borders.LineStyle = 1
End With
Set dx = Nothing
Set dy = Nothing
End Sub

评分

参与人数 2鲜花 +4 收起 理由
34545556 + 2 太强大了
jjmysjg + 2 太强大了

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-1-10 19:14 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-3-21 15:35 , Processed in 0.122047 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Wooffice Inc.

   

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

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

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