Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1794|回复: 9

[已解决]求助:提取(难)

[复制链接]
发表于 2011-8-13 14:02 | 显示全部楼层 |阅读模式
老师们:
    中午好!首先感谢论坛里热心助人的老师们,感谢你们的无私和热诚!
    能不能根据"设置"中的情况,用VBA变换成“SHEET2”中的格式?
    恳请老师们帮忙写一段VBA。谢谢!
最佳答案
2011-8-13 15:13
晕,公司里面好像出麻烦了!!!
闪了!!

提取.rar

3.2 KB, 下载次数: 15

发表于 2011-8-13 14:41 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2011-8-13 14:52 | 显示全部楼层
如果VBA 不能做  函数也行啊   老师们
回复

使用道具 举报

发表于 2011-8-13 15:13 | 显示全部楼层    本楼为最佳答案   
晕,公司里面好像出麻烦了!!!
闪了!!

提取.rar

11.38 KB, 下载次数: 30

回复

使用道具 举报

发表于 2011-8-13 15:55 | 显示全部楼层
我也来一个:
  1. Sub test()
  2.     Dim arr(), D, I%, J%, N$, K
  3.     Sheets("sheet3").Range("A:D").ClearContents
  4.     Set D = CreateObject("scripting.dictionary")
  5.     For I = 3 To 11
  6.         For J = 20 To Cells(65536, 1).End(3).Row
  7.             If Cells(J, 1).Value <> "" Then
  8.                 N = Cells(J, 1) & "|" & Cells(19, I) & "|" & Cells(J, I)
  9.                 If Not D.exists(N) Then
  10.                     D.Add N, Cells(J, 2)
  11.                 Else
  12.                     D(N) = D(N) & "," & Cells(J, 2)
  13.                 End If
  14.             End If
  15.         Next
  16.     Next
  17.     K = D.keys
  18.     ReDim arr(1 To D.Count, 1 To 4)
  19.     For I = 1 To D.Count
  20.     arr(I, 1) = Split(K(I - 1), "|")(0)
  21.     arr(I, 2) = D(K(I - 1))
  22.     arr(I, 3) = Split(K(I - 1), "|")(1)
  23.     arr(I, 4) = Split(K(I - 1), "|")(2)
  24.     Next
  25.     Sheets("sheet3").Cells(1, 1).Resize(1, 4) = Array("年级", "班别", "科目", "代课老师")
  26.     Sheets("sheet3").Cells(2, 1).Resize(D.Count, 4) = arr
  27. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2011-8-13 16:19 | 显示全部楼层
zjdh 老师:
十分感谢!
回复

使用道具 举报

 楼主| 发表于 2011-8-13 16:35 | 显示全部楼层
zjdh 老师:
再次感谢!你写的这段VBA很合我意!可是,你知道我是一句英语不懂!!你能在百忙中给我修改一下吗,让粘贴在SHEET3中的数据从A4开始吗。
回复

使用道具 举报

发表于 2011-8-13 17:58 | 显示全部楼层
留脚印跟踪学习
回复

使用道具 举报

发表于 2011-8-13 18:02 | 显示全部楼层
本帖最后由 zjdh 于 2011-8-13 18:05 编辑

Sub test()
    Dim arr(), D, I%, J%, N$, K
    Sheets("sheet3").Range("A:D").ClearContents
    Set D = CreateObject("scripting.dictionary")
    For I = 3 To 11
        For J = 20 To Cells(65536, 1).End(3).Row
            If Cells(J, 1).Value <> "" Then
                N = Cells(J, 1) & "|" & Cells(19, I) & "|" & Cells(J, I)
                If Not D.exists(N) Then
                    D.Add N, Cells(J, 2)
                Else
                    D(N) = D(N) & "," & Cells(J, 2)
    End If: End If: Next: Next
    K = D.keys
    ReDim arr(1 To D.Count, 1 To 4)
    For I = 1 To D.Count
    arr(I, 1) = Split(K(I - 1), "|")(0)
    arr(I, 2) = D(K(I - 1))
    arr(I, 3) = Split(K(I - 1), "|")(1)
    arr(I, 4) = Split(K(I - 1), "|")(2)
    Next
    Sheets("sheet3").Cells(4, 1).Resize(1, 4) = Array("年级", "班别", "科目", "代课老师")
    Sheets("sheet3").Cells(5, 1).Resize(D.Count, 4) = arr
End Sub

回复

使用道具 举报

 楼主| 发表于 2011-8-13 18:57 | 显示全部楼层
谢谢!zjdh 老师
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-26 04:20 , Processed in 0.431682 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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