夏之荷
发表于 2021-10-27 12:48:36
谢谢!!!辛苦啦!!真的太感谢了
用户难忘
发表于 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
..Resize(1, 6) = Array("序号", "名称", "开始时间", "作业时间", "作业内容", "周期")
..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
..Resize(n, UBound(arr, 2)) = arr
End With
End If
End If
End If
Next i
MsgBox "ok!"
End Sub
'
前文
发表于 2021-11-10 04:39:33
你说没有重复,其实是有重复的,所以,代码仅供参考
懒得想名字
发表于 2021-11-15 14:01:24
辛苦辛苦!因为是从个分区收上来的表!我在检查下!谢谢您啦
会过去的
发表于 2021-11-19 00:51:17
用VBA,或者换一种思路,搞一张查询表,根据名称来提取符合名称的所有行
继成王者
发表于 2021-11-20 20:55:11
规范表,然后透视即可
牵着白蛇念咒
发表于 2021-11-24 11:13:25
1、这是vba才能做的事情,
2、看不懂你模拟的结果,比如,第46435工作表中的名称D45435从何而来?
3、汇总表中BF列的数据是不是唯一的没有重复??
孙海涛
发表于 2021-11-28 07:03:15
2楼、3楼说的查询和透视的办法都很好,就是源表需要好好规范一下。题主例子里一个名称建一个表就至少要80个表,到时候用起来也不方便。
猫崽
发表于 2021-11-30 12:16:51
是唯一没有重复的!表标签那里我写错了!就是把这80行拆成80张表
丞哥朱爸
发表于 2021-12-8 06:55:26
用VBA,或者换一种思路,搞一张查询表,根据名称来提取符合名称的所有行