ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: jzds123

[求助] 如何让excel根据条件自动填写数据到相应工作表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-1-17 11:01 | 显示全部楼层
jzds123 发表于 2015-1-16 15:18
感谢feiren228 老师和chxw68 老师的帮忙,非常好用,谢谢!

feiren228 老师和chxw68 老师,两位老师都好厉害啊!!!
小弟也想学习学习!
可否请楼主帮忙测试一下~
感激!

  • Dim rngAdr As Range, 地址, 人数
  • Sub takeaway()
  • Application.ScreenUpdating = False
  • 算人数
  • 复制and贴上
  • Worksheets("成绩总表").Columns("I:K").Clear
  • With Application
  •    .CutCopyMode = False
  •     .ScreenUpdating= True
  • End With
  • End Sub
  • Private Sub 复制and贴上()
  • Application.ScreenUpdating = False
  • Dim rngCopd As Range, rngCopda As Range, rngSbt AsRange
  • Dim i, i, irAs Integer, icAs Integer
  • Dim cc As String
  • With rngAdr
  •     i = 0: ir = 0: t = 0
  •     For Eachi In 地址
  •     i = i + 1
  •         Set rngCopd = .Parent.Range("C"& i,"G" & i +人数(i, 1) - 1)
  •         cc =.Item(i).Value
  •         SetrngSbt = Worksheets(Left(cc, 3)).Cells.Find(What:=cc, MatchCase:=True)
  •     With rngSbt
  •         For ic = 0 To 3
  •            With rngCopd
  •                Set rngCopda = Intersect(.Offset, .Parent.Range(.Item(1), .Item(28, 5)).Offset(ic * 28))
  •            End With
  •            If rngCopda Is Nothing Then
  •            Else
  •                rngCopda.Copy
  •                rngSbt.Item(3, ic* 7).PasteSpecial xlPasteValues
  •            End If
  •         Next
  •            With rngAdr
  •                On Error Resume Next
  •                ir= IIf(Left(.Item(i).Value,3) = Left(.Item(i +1).Value, 3), ir+ 1, 0)
  •            End With
  •     End With
  •     Next
  • End With
  • With Application
  •     .CutCopyMode= False
  •    .ScreenUpdating = True
  • End With
  • End Sub
  • Private Sub 算人数()
  • Application.ScreenUpdating = False
  • Dim iAdr As Long
  • With Worksheets("成绩总表")
  •    .Range(.Cells(10), .Cells(11)).Value = Array("地址", "人数")
  •     SetrngAdr = .Cells(65536, 1).End(xlUp)
  •    .Columns("A:A").Copy
  •     With.Columns("I:I")
  •         .PasteSpecialPaste:=xlPasteValues
  •        .RemoveDuplicates 1, 1
  •         WithRange(.Cells(2), .Cells(65536).End(xlUp))
  •            .Offset(, 1).FormulaArray = "=MATCH(" & .Address &",A:A,0)"
  •             .Offset(,2).FormulaR1C1 = "=R[1]C[-1]-RC[-1]"
  •            With Union(.Offset(, 1), .Offset(, 2))
  •                .Copy
  •                .PasteSpecial xlPasteValues
  •                .Cells(.Count).Value = rngAdr(1, 2).Value
  •            End With
  •            Set rngAdr = .Offset
  •             地址 = .Offset(, 1).Value
  •             人数 = .Offset(, 2).Value
  •         EndWith
  •     End With
  • End With
  • With Application
  •    .CutCopyMode = False
  •    .ScreenUpdating = True
  • End With
  • End Sub




TA的精华主题

TA的得分主题

发表于 2015-1-17 11:10 | 显示全部楼层
看着真眼热啊,虽然看不懂。以后要学习提高的地方真是太多了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-19 22:58 | 显示全部楼层
funfox 发表于 2015-1-17 11:01
feiren228 老师和chxw68 老师,两位老师都好厉害啊!!!小弟也想学习学习!可否请楼主帮忙测试一下~感激 ...

谢谢funfox老师的关注和帮忙,这几天忙着学校的考试工作,没时间上来看,所以直到今天才看到你的回复,不好意思!
把你的代码写入到vba里进行了一下测试,在运行时提示“语法错误”,不知为何?截图如下: QQ图片20150119225520.png
因为马上面临考试和期末工作,很多事情都还得去考虑和布置,没多少时间再进行测试,请老师下载我的附件,再做测试吧,谢谢!

TA的精华主题

TA的得分主题

发表于 2015-1-20 23:19 | 显示全部楼层
本帖最后由 funfox 于 2015-1-20 23:27 编辑





  1. Dim rngAdr As Range, 地址, 人数
  2. Sub takeaway()
  3. Application.ScreenUpdating = False
  4. 算人数
  5. 复制and贴上
  6. Worksheets("成绩总表").Columns("I:K").Clear
  7. With Application
  8.     .CutCopyMode = False
  9.     .ScreenUpdating = True
  10. End With
  11. End Sub
  12. Private Sub 复制and贴上()
  13. Application.ScreenUpdating = False
  14. Dim rngCopd As Range, rngCopda As Range, rngSbt As Range
  15. Dim i人, i位, i表r As Integer, i表c As Integer
  16. Dim cc As String
  17. With rngAdr
  18.     i人 = 0: i表r = 0: t = 0
  19.     For Each i位 In 地址
  20.     i人 = i人 + 1
  21.         Set rngCopd = .Parent.Range("C" & i位, "G" & i位 + 人数(i人, 1) - 1)
  22.         cc = .Item(i人).Value
  23.         Set rngSbt = Worksheets(Left(cc, 3)).Cells.Find(What:=cc, MatchCase:=True)
  24.     With rngSbt
  25.         For i表c = 0 To 3
  26.             With rngCopd
  27.                 Set rngCopda = Intersect(.Offset, .Parent.Range(.Item(1), .Item(28, 5)).Offset(i表c * 28))
  28.             End With
  29.             If rngCopda Is Nothing Then
  30.             Else
  31.                 rngCopda.Copy
  32.                 rngSbt.Item(3, i表c * 7).PasteSpecial xlPasteValues
  33.             End If
  34.         Next
  35.            With rngAdr
  36.                 On Error Resume Next
  37.                i表r = IIf(Left(.Item(i人).Value, 3) = Left(.Item(i人 + 1).Value, 3), i表r + 1, 0)
  38.             End With
  39.    End With
  40.     Next
  41. End With
  42. With Application
  43.     .CutCopyMode = False
  44.     .ScreenUpdating = True
  45. End With
  46. End Sub
  47. Private Sub 算人数()
  48. Application.ScreenUpdating = False
  49. Dim iAdr As Long
  50. With Worksheets("成绩总表")
  51.     .Range(.Cells(10), .Cells(11)).Value = Array("地址", "人数")
  52.     Set rngAdr = .Cells(65536, 1).End(xlUp)
  53.     .Columns("A:A").Copy
  54.     With .Columns("I:I")
  55.         .PasteSpecial Paste:=xlPasteValues
  56.         .RemoveDuplicates 1, 1
  57.         With Range(.Cells(2), .Cells(65536).End(xlUp))
  58.             .Offset(, 1).FormulaArray = "=MATCH(" & .Address & ",A:A,0)"
  59.             .Offset(, 2).FormulaR1C1 = "=R[1]C[-1]-RC[-1]"
  60.             With Union(.Offset(, 1), .Offset(, 2))
  61.                 .Copy
  62.                 .PasteSpecial xlPasteValues
  63.                 .Cells(.Count).Value = rngAdr(1, 2).Value
  64.             End With
  65.             Set rngAdr = .Offset
  66.             地址 = .Offset(, 1).Value
  67.             人数 = .Offset(, 2).Value
  68.         End With
  69.     End With
  70. End With
  71. With Application
  72.     .CutCopyMode = False
  73.     .ScreenUpdating = True
  74. End With
  75. End Sub
  76. '空格键消失了,真是罪过!
复制代码


TA的精华主题

TA的得分主题

发表于 2015-7-10 22:59 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-4-5 17:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-10 11:57 , Processed in 0.031771 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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