Excel精英培训网

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

[已解决]谢谢青城老师,如何进行数据提取,分行分列

[复制链接]
发表于 2012-4-6 19:53 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2012-4-6 22:47 编辑

老师:
上传的附件中有详细的说明,如何分行分列提取数据。 对私国际结算中业收入.rar (97.32 KB, 下载次数: 32)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-4-6 21:57 | 显示全部楼层    本楼为最佳答案   
做了d至j列,可数字不一样
用了字典,要引用
Sub test()
Dim d1 As New Dictionary, d2 As New Dictionary
Dim ar1(), ar()
With Sheets("sheet1")
   i% = .[a65536].End(xlUp).Row
   ar1 = .Range("a2:j" & i).Value
End With
For i = 3 To UBound(ar1)
   d1("" & ar1(i, 1)) = i
Next
For i = 4 To UBound(ar1, 2)
   d2("" & ar1(1, i)) = i
Next
With Sheets("sheet3")
  i = .[a65536].End(xlUp).Row
  ar = .Range("a9:a" & i).Value
End With
For i = 1 To UBound(ar)
  If InStr(ar(i, 1), ":") < 1 And InStr(ar(i, 1), ".") > 4 Then
    ar(i, 1) = Trim(ar(i, 1))
    artmp = Split(Split(ar(i, 1), " ")(0), ".")
    If d1.Exists(artmp(0)) And d2.Exists(artmp(1)) Then
      Do While InStr(ar(i, 1), "  ")
        ar(i, 1) = Replace(ar(i, 1), "   ", " ")
        ar(i, 1) = Replace(ar(i, 1), "  ", " ")
      Loop
      artmp2 = Split(ar(i, 1), " ")
      ar1(d1(artmp(0)), d2(artmp(1))) = artmp2(UBound(artmp2))
    End If
  End If
Next
Sheets("sheet1").Range("a17").Resize(UBound(ar1), UBound(ar1, 2)) = ar1
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-6 15:39 , Processed in 0.720787 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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