找回密码
 立即注册
搜索
楼主: 水竹轻扬

Excel汇总表拆分成明细表

30
回复
834
查看
[复制链接]

0

主题

4

帖子

0

幻币

初入江湖

Rank: 1

积分
4
2021-10-27 12:48:36 显示全部楼层
谢谢!!!辛苦啦!!真的太感谢了
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

5

帖子

-2

幻币

初入江湖

Rank: 1

积分
1
2021-10-30 13:36:12 显示全部楼层
Sub 拆分()
Application.ScreenUpdating = False
Dim d As Object
Dim ar As Variant, br As Variant
Dim i As Long
Dim arr()
Set d = CreateObject("scripting.dictionary")
For Each sh In Sheets
  If sh.Name <> "汇总" Then
  d(sh.Name) = ""
  End If
Next sh
With Sheets("汇总")
  r = .Cells(Rows.Count, 58).End(xlUp).Row
  ar = .Range("a1:bg" & r)
End With
For i = 2 To UBound(ar)
  n = 0
  ReDim arr(1 To UBound(ar), 1 To 6)
  If Trim(ar(i, 58)) <> "" Then
  For j = 2 To 57 Step 4
    If Trim(ar(i, j)) <> "" Then
      n = n + 1
      arr(n, 1) = n
      arr(n, 2) = ar(i, 58)
      arr(n, 3) = ar(i, j)
      arr(n, 4) = ar(i, j + 1)
      arr(n, 5) = ar(i, j + 2)
      arr(n, 6) = ar(i, j + 3)
    End If
  Next j
  If n > 0 Then
    mc = Trim(ar(i, 58))
    If Not d.exists(Trim(ar(i, 58))) Then
      Set sht = Worksheets.Add(after:=Sheets(Sheets.Count))
      With ActiveSheet
      .Name = mc
      .[a1].Resize(1, 6) = Array("序号", "名称", "开始时间", "作业时间", "作业内容", "周期")
      .[a2].Resize(n, UBound(arr, 2)) = arr
      End With
    Else
      With Sheets(mc)
      rs = .Cells(Rows.Count, 58).End(xlUp).Row
      .Range("a2:f" & rs) = Empty
      .[a2].Resize(n, UBound(arr, 2)) = arr
      End With
    End If
  End If
  End If
Next i
MsgBox "ok!"
End Sub
  '
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

5

帖子

2

幻币

初入江湖

Rank: 1

积分
5
2021-11-10 04:39:33 显示全部楼层
工作簿1.rar (56.46 KB, 下载次数: 163)
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

幻币

初入江湖

Rank: 1

积分
3
2021-11-15 14:01:24 显示全部楼层
辛苦辛苦!因为是从个分区收上来的表!我在检查下!谢谢您啦
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

8

帖子

-1

幻币

初入江湖

Rank: 1

积分
6
2021-11-19 00:51:17 显示全部楼层
用VBA,或者换一种思路,搞一张查询表,根据名称来提取符合名称的所有行
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

幻币

初入江湖

Rank: 1

积分
6
2021-11-20 20:55:11 显示全部楼层
规范表,然后透视即可
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

幻币

初入江湖

Rank: 1

积分
1
2021-11-24 11:13:25 显示全部楼层
1、这是vba才能做的事情,
2、看不懂你模拟的结果,比如,第46435工作表中的名称D45435从何而来?
3、汇总表中BF列的数据是不是唯一的没有重复??
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

10

帖子

2

幻币

初入江湖

Rank: 1

积分
11
2021-11-28 07:03:15 显示全部楼层
2楼、3楼说的查询和透视的办法都很好,就是源表需要好好规范一下。题主例子里一个名称建一个表就至少要80个表,到时候用起来也不方便。
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

9

帖子

1

幻币

初入江湖

Rank: 1

积分
11
2021-11-30 12:16:51 显示全部楼层
是唯一没有重复的!表标签那里我写错了!就是把这80行拆成80张表
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

7

帖子

2

幻币

初入江湖

Rank: 1

积分
11
2021-12-8 06:55:26 显示全部楼层
用VBA,或者换一种思路,搞一张查询表,根据名称来提取符合名称的所有行
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册